Back Cover Copy
62915-4 The definitive reference on the most important new technology in software! “While the original version of OOSC is a classic, OOSC 2/E is destined to overshadow it and all other general introductions . . . literally an epic work.” —James C. McKim, Jr., Hartford Graduate Center “Compelling. Extremely well-written and literate . . . I recaptured that same sense of intellectual excitement I felt reading the first edition for the first time.” —Paul Dubois, Lawrence Livermore National Laboratory, Editor, Scientific Programming Dept., Computers in Physics “The definitive tome on Object-Orientation . . . the finest piece of writing and thinking about this vast subject . . . Bertrand has a lot to say of great importance and says it well in this significantly revised book.” —Richard Wiener, University of Colorado, Colorado Springs, Editor, Journal for Object-Oriented Programming A whole generation was introduced to object technology through the first edition of Bertrand Meyers OOSC. This long-awaited new edition retains the qualities of clarity, practicality and scholarship that made the first an instant best-seller. It has been thoroughly revised and considerably expanded. No other book on the market provides such a breadth and depth of coverage on the most important technology in software development. SOME OF THE NEW TOPICS COVERED IN DEPTH BY THIS SECOND EDITION: Concurrency, distribution, client-server and the Internet. Object-oriented databases, persistence, schema evolution. Design by contract: how to build software that works the first time around. A study of fundamental design patterns. How to find the classes and many others topics of object-oriented methodology. How to use inheritance well and detect misuses. Abstract data types: the theory behind object technology. Typing: role, issues and solutions. More than 400 references to books, articles, Web pages, newsgroups; glossary of object technology. And many new developments on the topics of the first edition: reusability, modularity, software quality, O-O languages, inheritance techniques, genericity, memory management, etc.Introduction or Preface
Preface Born in the ice-blue waters of the festooned Norwegian coast; amplified (by an aberration of world currents, for which marine geographers have yet to find a suitable explanation) along the much grayer range of the Californian Pacific; viewed by some as a typhoon, by some as a tsunami, and by some as a storm in a teacup — a tidal wave is hitting the shores of the computing world. “Object-oriented” is the latest in term, complementing and in many cases replacing “structured” as the high-tech version of “good” . As is inevitable in such a case, the term is used by different people with different meanings; just as inevitable is the well-known three-step sequence of reactions that meets the introduction of a new methodological principle: (1) “it's trivial” ; (2) “it cannot work” ; (3) “that's how I did it all along anyway” . (The order may var y.) Let us have this clear right away, lest the reader think the author takes a half-hearted approach to his topic: I do not see the object-oriented method as a mere fad; I think it is not trivial (although I shall strive to make it as limpid as I can); I know it works; and I believe it is not only different from but even, to a certain extent, incompatible with the techniques that most people still use today — including some of the principles taught in many software engineering textbooks. I further believe that object technology holds the potential for fundamental changes in the software industry, and that it is here to stay. Finally, I hope that as the reader progresses through these pages, he will share some of my excitement about this promising avenue to software analysis, design and implementation. “Avenue to software analysis, design and implementation” . To present the object-oriented method, this books resolutely takes the viewpoint of software engineering — of the methods, tools and techniques for developing quality software in production environments. This is not the only possible perspective, as there has also been interest in applying object-oriented principles to such areas as exploratory programming and artificial intelligence. Although the presentation does not exclude these appli cations, they are not its main emphasis. Our principal goal in this discussion is to study how practicing software developers, in industrial as well as academic environments, can use object technology to improve (in some cases dramatically) the quality of the software they produce. Structure, reliability, epistemology and classification. Object technology is at its core the combination of four ideas: a structuring method, a reliability discipline, an epistemological principle and a classification technique. The structuring methodapplies to software decomposition and reuse. Software systems perform certain actions on objects of certain types; to obtain flexible and reusable systems, it is better to base their structure on the object types than on the actions. The resulting concept is a remarkably powerful and versatile mechanism called the class,which in object-oriented software construction serves as the basis for both the modular structure and the type system. The reliability disciplineis a radical approach to the problem of building software that does what it is supposed to do. The idea is to treat any system as a collection of components which collaborate the way successful businesses do: by adhering to contracts defining explicitly the obligations and benefits incumbent on each party. Abstract data types are discussed in chapter 6, which also addresses some of the related epistemological issues. The epistemological principleaddresses the question of how we should describe the classe
BR 62915-4 P The definitive reference on the most important new technology in software! P "While the original version of OOSC is a classic, OOSC 2/E is destined to overshadow it and all other general introductions . . . literally an epic work." --James C. McKim, Jr., Hartford Graduate Center P "Compelling. Extremely well-written and literate . . . I recaptured that same sense of intellectual excitement I felt reading the first edition for the first time." --Paul Dubois, Lawrence Livermore National Laboratory, Editor, Scientific Programming Dept., Computers in Physics P "The definitive tome on Object-Orientation . . . the finest piece of writing and thinking about this vast subject . . . Bertrand has a lot to say of great importance and says it well in this significantly revised book." --Richard Wiener, University of Colorado, Colorado Springs, Editor, Journal for Object-Oriented Programming P A whole generation was introduced to object technology through the first edition of Bertrand Meyer's OOSC. This long-awaited new edition retains the qualities of clarity, practicality and scholarship that made the first an instant best-seller. It has been thoroughly revised and considerably expanded. No other book on the market provides such a breadth and depth of coverage on the most important technology in software development. P SOME OF THE NEW TOPICS COVERED IN DEPTH BY THIS SECOND EDITION: ULLI Concurrency, distribution, client-server and the Internet. /LILI Object-oriented databases, persistence, schema evolution. /LILI Design by contract: how to build software that works the first time around. /LILI A study of fundamental design patterns. /LILI How tofind the classes and many others topics of object-oriented methodology. /LILI How to use inheritance well and detect misuses. /LILI Abstract data types: the theory behind object technology. /LILI Typing: role, issues a
This is, quite simply, the definitive reference on the most important development in software technology for the last 20 years: object-orientation. KEY TOPICS: A whole generation was introduced to object technology through the first edition of this book. This long-awaited new edition retains the qualities of clarity, practicality and scholarship that made the first an instant best-seller, but has been thoroughly revised and expanded. Among the new topics covered in depth are: Concurrency, distribution, client/server and the Internet; object-oriented databases; design by contract; fundamental design patterns; finding classes; the use and misuse of inheritance; abstract data types; and typing issues. The book also includes completely updated discussions of reusability, modularity, software quality, object-oriented languages, memory management, and many other essential topics. .Back Cover Copy
62915-4 The definitive reference on the most important new technology in software! While the original version of OOSC is a classic, OOSC 2/E is destined to overshadow it and all other general introductions . . . literally an epic work. James C. McKim, Jr., Hartford Graduate Center Compelling. Extremely well-written and literate . . . I recaptured that same sense of intellectual excitement I felt reading the first edition for the first time. Paul Dubois, Lawrence Livermore National Laboratory, Editor, Scientific Programming Dept., Computers in Physics The definitive tome on Object-Orientation . . . the finest piece of writing and thinking about this vast subject . . . Bertrand has a lot to say of great importance and says it well in this significantly revised book. Richard Wiener, University of Colorado, Colorado Springs, Editor, Journal for Object-Oriented Programming A whole generation was introduced to object technology through the first edition of Bertrand Meyer's OOSC. This long-awaited new edition retains the qualities of clarity, practicality and scholarship that made the first an instant best-seller. It has been thoroughly revised and considerably expanded. No other book on the market provides such a breadth and depth of coverage on the most important technology in software development. SOME OF THE NEW TOPICS COVERED IN DEPTH BY THIS SECOND EDITION: Concurrency, distribution, client-server and the Internet. Object-oriented databases, persistence, schema evolution. Design by contract: how to build software that works the first time around. A study of fundamental design patterns. How to find the classes and many others topics of object-oriented methodology. How to use inheritance well and detect misuses. Abstract data types: the theory behind object technology. Typing: role, issues and solutions. More than 400 references to books, articles, Web pages, newsgroups; glossary of object technology. And many new developments on the topics of the first edition: reusability, modularity, software quality, O-O languages, inheritance techniques, genericity, memory management, etc.Long Description
For any software engineer, developer or programmer interested in O-O software and programming. This long-awaited revision retains the clarity, practicality and innovations that helped the first edition sell over 75,000 copies since 1988. Now over 1200 pages with a CD ROM full of object tools, this edition is fully revised and considerably expanded, making it THE definitive reference on the most promising software development in 30 years.Introduction or Preface
Preface Born in the ice-blue waters of the festooned Norwegian coast; amplified (by an aberration of world currents, for which marine geographers have yet to find a suitable explanation) along the much grayer range of the Californian Pacific; viewed by some as a typhoon, by some as a tsunami, and by some as a storm in a teacup - a tidal wave is hitting the shores of the computing world. 0;Object-oriented1; is the latest in term, complementing and in many cases replacing 0;structured1; as the high-tech version of 0;good1; . As is inevitable in such a case, the term is used by different people with different meanings; just as inevitable is the well-known three-step sequence of reactions that meets the introduction of a new methodological principle: (1) 0;it's trivial1; ; (2) 0;it cannot work1; ; (3) 0;that's how I did it all along anyway1; . (The order may var y.) Let us have this clear right away, lest the reader think the author takes a half-hearted approach to his topic: I do not see the object-oriented method as a mere fad; I think it is not trivial (although I shall strive to make it as limpid as I can); I know it works; and I believe it is not only different from but even, to a certain extent, incompatible with the techniques that most people still use today - including some of the principles taught in many software engineering textbooks. I further believe that object technology holds the potential for fundamental changes in the software industry, and that it is here to stay. Finally, I hope that as the reader progresses through these pages, he will share some of my excitement about this promising avenue to software analysis, design and implementation. 0;Avenue to software analysis, design and implementation1; . To present the object-oriented method, this books resolutely takes the viewpoint of software engineering - of the methods, tools and techniques for developing quality software in production environments. This is not the only possible perspective, as there has also been interest in applying object-oriented principles to such areas as exploratory programming and artificial intelligence. Although the presentation does not exclude these appli cations, they are not its main emphasis. Our principal goal in this discussion is to study how practicing software developers, in industrial as well as academic environments, can use object technology to improve (in some cases dramatically) the quality of the software they produce. Structure, reliability, epistemology and classification. Object technology is at its core the combination of four ideas: a structuring method, a reliability discipline, an epistemological principle and a classification technique. Thestructuring methodapplies to software decomposition and reuse. Software systems perform certain actions on objects of certain types; to obtain flexible and reusable systems, it is better to base their structure on the object types than on the actions. The resulting concept is a remarkably powerful and versatile mechanism called theclass,which in object-oriented software construction serves as the basis for both the modular structure and the type system. Thereliability disciplineis a radical approach to the problem of building software that does what it is supposed to do. The idea is to treat any system as a collection of components which collaborate the way successful businesses do: by adhering to contracts defining explicitly the obligations and benefits incumbent on each party. Abstract data types are discussed in chapter 6, which also addresses some of the related epistemological issues. Theepistemological principleaddresses the question of how we should describe the classes. In object technology, the objects desBack Cover Copy
62915-4 The definitive reference on the most important new technology in software! While the original version of OOSC is a classic, OOSC 2/E is destined to overshadow it and all other general introductions . . . literally an epic wor