This is, quite simply, the definitive reference on the most important development in software technology for the last 20 years: object-orientation. Object-Oriented Software Construction is a book by Bertrand Meyer, widely considered a foundational text of object-oriented programming. The first edition was published in 1988; the second, extensively revised and expanded edition (more than 1300 pages), in 1997. Numerous translations are available including Dutch (first edition only), French (1+2), German (1), Italian (1), Japanese (1+2), Persian (1), Polish (2), Romanian (1), Russian (2), Serbian (2), and Spanish (2). The book has been cited thousands of times in computer science literature. The book won a Jolt award in 1994. The second edition is available online.
The book, often known as "OOSC", presents object technology as an answer to major issues of software engineering, with a special emphasis on addressing the software quality factors of correctness, robustness, extendibility and reusability. It starts with an examination of the issues of software quality, then introduces abstract data types as the theoretical basis for object technology and proceeds with the main object-oriented techniques: classes, objects, genericity, inheritance, Design by Contract, concurrency, and persistence. It includes extensive discussions of methodological issues.
Table of contents Preface etc. Part A: The issues 1 Software quality 2 Criteria of object orientation Part B: The road to object orientation 3 Modularity 4 Approaches to reusability 5 Towards object technology 6 Abstract data types Part C: Object-oriented techniques 7 The static structure: classes 8 The run-time structure: objects 9 Memory management 10 Genericity 11 Design by Contract: building reliable software 12 When the contract is broken: exception handling 13 Supporting mechanisms 14 Introduction to inheritance 15 Multiple inheritance 16 Inheritance techniques 17 Typing 18 Global objects and constants Part D: Object-oriented methodology: applying the method well 19 On methodology 20 Design pattern: multi-panel interactive systems 21 Inheritance case study: “undo” in an interactive system 22 How to find the classes 23 Principles of class design 24 Using inheritance well 25 Useful techniques 26 A sense of style 27 Object-oriented analysis 28 The software construction process 29 Teaching the method Part E: Advanced topics 30 Concurrency, distribution, client-server and the Internet 31 Object persistence and databases 32 Some O-O techniques for graphical interactive applications Part F: Applying the method in various languages and environments 33 O-O programming and Ada 34 Emulating object technology in non-O-O environments 35 Simula to Java and beyond: major O-O languages and environments Part G: Doing it right 36 An object-oriented environment Epilogue, In Full Frankness Exposing the Language Part H: Appendices A Extracts from the Base library B Genericity versus inheritance C Principles, rules, precepts and definitions D A glossary of object technology E Bibliography Index