Further reading in OOP

The papers listed in the previous section provide a starting point for studying the various areas and applications of object-oriented technology presented in the book. Recommendations for further reading are given below.

Object-Oriented Programming

An exhaustive, yet excellent description of C++ is given in  [St91]. An excellent introduction to C++ is given in  [Lippman91]. In  [Coplien92] a number of advanced idioms and styles for using C++ are treated. An introduction to object-oriented programming is given in  [Budd91], which covers a variety of languages. The language Eiffel is introduced in  [Meyer88]. The original introduction to Smalltalk is by  [GR83]. Data abstraction and object-oriented programming in C++ is dealt with in  [GOP90]. Another introduction to object-oriented programming and C++ is given in  [WP88]. An early book on OOP is  [Cox86].  [Graham91] gives a very readable overview of object-oriented methods.  [Winblad90] survey a number of important issues in object-oriented software development. An overview of applications of object-oriented programming is given by  [Pinson90] and  [Harmon93].

Data abstraction and algorithms in C++

The number of books providing a university course level introduction to the use of C++ for the development of abstract data types and algorithms is steadily increasing. We have, among others,  [Heading],  [Sedgewick92],  [Budd94],  [Bergin94] and  [Weiss93] (of which nearly identical texts are available for C and Ada).

Object-Oriented Programming and Software Engineering

Object-oriented design with applications is covered in  [Booch94]. Object-oriented analysis is the subject of  [CY90]. A very readable account of object-oriented design is given in  [WWW90].  [Ince91] gives an introduction to software engineering with C++.  [McGregor92] deal with the advantages of an object-oriented approach from the perspective of reuse. In  [Jacobs92] a method for object-oriented development is described together with an accompanying case tool.  [Hend92] gives a concise overview of the issues in object-oriented analysis and design. Further, we have  [Champeaux93], which covers analysis and design, and  [Wilkie93], which provides a professional guide to object-oriented software engineering. In  [Rum91] a method for modeling object-oriented systems is introduced. Also worth mentioning is  [Henderson93], which presents a canonical approach to map formal designs to C++ code, and  [Fusion] which presents a promising synthesis of a number of object-oriented development methods.

Object-Oriented Programming and Artificial Intelligence

The role of object-oriented programming in artificial intelligence is exhaustively treated in  [Tello89]. Apart from describing numerous AI systems embodying object-oriented notions, a number of research issues concerning the relation of object-oriented programming to AI are discussed. The CLOS perspective on OOP is presented in  [Paepcke93]. Also worth mentioning is  [Blum92], which presents an object-oriented framework for developing connectionist systems and neural networks in C++.

Theoretical Issues of Object-Oriented Programming

In  [DT88] an overview is given of theoretical work on type-systems for object-oriented programming languages. In  [BRR90] a number of research papers are collected together dealing with the foundations of object-oriented programming languages. Specification and verification techniques for abstract data types are covered in  [Dahl92]. Also worth mentioning is  [Palsberg94], which presents an encompassing study (including tools) of the type theoretical aspects of OOP.

Object-oriented databases

A collection of research papers concerning object-oriented notions in databases and expert systems is contained in  [KL89]. A more systematic discussion of the problems in combining object-oriented, deductive and hypermedia technologies is given in  [PCKW89].

Additional literature

Object-oriented programming and concurrency is the subject of the majority of papers in  [YT87] and  [AWY93]. A variety of research papers may further be found in  [SW87]. Of particular interest are the standardization efforts reported in  [OMG] and  [Cattell94]. Finally, an invaluable source of material is provided by the various conference proceedings, including those of OOPSLA, ECOOP and TOOLS, and the numerous magazines concerning object-oriented programming, such as JOOP, the {\em C++Report}, IEEE Computer, IEEE Software and the ACM SIGPLAN Notices.