Object-Oriented Software Construction

Last updated
Object-Oriented Software Construction
Oosc2-medium.jpg
Author Bertrand Meyer
Subject software object-oriented programming
PublisherPrentice Hall
Publication date
1988, 1997
Pages1254 + xxviii
ISBN 0-13-629155-4 (1997 ed.)
OCLC 36187052
005.1/17 21
LC Class QA76.64 .M493 1997

Object-Oriented Software Construction is a book by Bertrand Meyer, widely considered a foundational text of object-oriented programming [ citation needed ]. 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). [1] The book has been cited thousands of times [2] in computer science literature. The book won a Jolt award in 1994. [3]

Bertrand Meyer French computer scientist

Bertrand Meyer is a French academic, author, and consultant in the field of computer languages. He created the Eiffel programming language and the idea of design by contract.

Object-oriented programming (OOP) is a programming paradigm based on the concept of "objects", which can contain data, in the form of fields, and code, in the form of procedures. A feature of objects is an object's procedures that can access and often modify the data fields of the object with which they are associated. In OOP, computer programs are designed by making them out of objects that interact with one another. OOP languages are diverse, but the most popular ones are class-based, meaning that objects are instances of classes, which also determine their types.

Contents

Unless otherwise indicated, descriptions below apply to the second edition.

Focus

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.

In computer science, an abstract data type (ADT) is a mathematical model for data types, where a data type is defined by its behavior (semantics) from the point of view of a user of the data, specifically in terms of possible values, possible operations on data of this type, and the behavior of these operations. This contrasts with data structures, which are concrete representations of data, and are the point of view of an implementer, not a user.

In computer science, an object can be a variable, a data structure, a function, or a method, and as such, is a value in memory referenced by an identifier.

Generic programming is a style of computer programming in which algorithms are written in terms of types to-be-specified-later that are then instantiated when needed for specific types provided as parameters. This approach, pioneered by ML in 1973, permits writing common functions or types that differ only in the set of types on which they operate when used, thus reducing duplication. Such software entities are known as generics in Python, Ada, C#, Delphi, Eiffel, F#, Java, Rust, Swift, TypeScript and Visual Basic .NET. They are known as parametric polymorphism in ML, Scala, Haskell and Julia; templates in C++ and D; and parameterized types in the influential 1994 book Design Patterns.

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

Notation

The first edition of the book used Eiffel for the examples and served as a justification of the language design choices for Eiffel. The second edition also uses Eiffel as its notation, but in an effort to separate the notation from the concepts it does not name the language until the Epilogue, on page 1162, where "Eiffel" appears as the last word. A few months after publication of the second edition, a reader posted on Usenet [ citation needed ] his discovery that the book's 36 chapters alternatively start with the letters "E", "I", "F", "F", "E", "L", a pattern being repeated 6 times. In addition, in the Appendix, titled "Epilogue, In Full Frankness Exposing the Language" (note the initials), the first letters of each paragraph spell out the same pattern.

Eiffel is an object-oriented programming language designed by Bertrand Meyer and Eiffel Software. Meyer conceived the language in 1985 with the goal of increasing the reliability of commercial software development; the first version becoming available in 1986. In 2005, Eiffel became an ISO-standardized language.

Usenet worldwide distributed Internet discussion system

Usenet is a worldwide distributed discussion system available on computers. It was developed from the general-purpose Unix-to-Unix Copy (UUCP) dial-up network architecture. Tom Truscott and Jim Ellis conceived the idea in 1979, and it was established in 1980. Users read and post messages to one or more categories, known as newsgroups. Usenet resembles a bulletin board system (BBS) in many respects and is the precursor to Internet forums that are widely used today. Discussions are threaded, as with web forums and BBSs, though posts are stored on the server sequentially. The name comes from the term "users network".

See also

Related Research Articles

Kent Beck software engineer

Kent Beck is an American software engineer and the creator of extreme programming, a software development methodology that eschews rigid formal specification for a collaborative and iterative design process. Beck was one of the 17 original signatories of the Agile Manifesto, the founding document for agile software development. Extreme and Agile methods are closely associated with Test-Driven Development (TDD), of which Beck is perhaps the leading proponent.

Z notation

The Z notation is a formal specification language used for describing and modelling computing systems. It is targeted at the clear specification of computer programs and computer-based systems in general.

Design by contract approach for designing software

Design by contract (DbC), also known as contract programming, programming by contract and design-by-contract programming, is an approach for designing software.

In computer programming, a precondition is a condition or predicate that must always be true just prior to the execution of some section of code or before an operation in a formal specification.

In computer programming, a postcondition is a condition or predicate that must always be true just after the execution of some section of code or after an operation in a formal specification. Postconditions are sometimes tested using assertions within the code itself. Often, postconditions are simply included in the documentation of the affected section of code.

In software engineering, a software design pattern is a general, reusable solution to a commonly occurring problem within a given context in software design. It is not a finished design that can be transformed directly into source or machine code. It is a description or template for how to solve a problem that can be used in many different situations. Design patterns are formalized best practices that the programmer can use to solve common problems when designing an application or system.

Command–query separation (CQS) is a principle of imperative computer programming. It was devised by Bertrand Meyer as part of his pioneering work on the Eiffel programming language.

Grady Booch American software engineer

Grady Booch is an American software engineer, best known for developing the Unified Modeling Language (UML) with Ivar Jacobson and James Rumbaugh. He is recognized internationally for his innovative work in software architecture, software engineering, and collaborative development environments.

In computer programming, specifically object-oriented programming, a class invariant is an invariant used to constrain objects of a class. Methods of the class should preserve the invariant. The class invariant constrains the state stored in the object.

Object-oriented analysis and design (OOAD) is a popular technical approach for analyzing and designing an application, system, or business by applying object-oriented programming, as well as using visual modeling throughout the development life cycles to foster better stakeholder communication and product quality.

In object-oriented programming, inheritance is the mechanism of basing an object or class upon another object or class, retaining similar implementation. Also defined as deriving new classes from existing ones and forming them into a hierarchy of classes. In most class-based object-oriented languages, an object created through inheritance acquires all the properties and behaviors of the parent object. Inheritance allows programmers to create classes that are built upon existing classes, to specify a new implementation while maintaining the same behaviors, to reuse code and to independently extend original software via public classes and interfaces. The relationships of objects or classes through inheritance give rise to a directed graph. Inheritance was invented in 1969 for Simula.

Peter Coad is a software entrepreneur and author of books on programming. He is notable for his role in defining what have come to be known as the UML colors, a color-coded notation chiefly useful for simplifying one's understanding of a design or model.

In object-oriented programming, the open/closed principle states "software entities should be open for extension, but closed for modification"; that is, such an entity can allow its behaviour to be extended without modifying its source code.

EiffelStudio

EiffelStudio is a development environment for the Eiffel programming language developed and distributed by Eiffel Software.

SCOOP is a concurrency model designed for the Eiffel programming language, conceived by Eiffel's creator and designer, Bertrand Meyer.

Prentice Hall International Series in Computer Science is a series of books on computer science published by Prentice Hall. The series' founding editor was Tony Hoare. Richard Bird subsequently took over editing the series. Many of the books in the series have been in the area of formal methods in particular.

The TOOLS conference series is a long-running conferences on object technology, component-based development, model-based development and other advanced software technologies. The name originally stood for "Technology of Object-Oriented Languages and Systems" although later it was usually no longer expanded, the conference being known simply as "the TOOLS conference". The conferences ran from 1988 to 2012, with a hiatus in 2003-2007, and was revived in 2019.

References

  1. Web search, August 2006
  2. The ACM's Guide to Computing Literature counts 2,233 citations as of December, 15, 2011 for the second edition alone in computer science journals and technical books; Google Scholar (December 15, 2011) lists 7,305 citations; the book appears as number 35 in the Citeseer list of all-time most cited works (books, articles etc.) in computer science, with 1260 citations (September 2006).
  3. Jolt winners 1997 Archived 2009-05-25 at the Wayback Machine
International Standard Book Number Unique numeric book identifier

The International Standard Book Number (ISBN) is a numeric commercial book identifier which is intended to be unique. Publishers purchase ISBNs from an affiliate of the International ISBN Agency.