Lecture
Benefits of the object model
As stated above, the object model is fundamentally different from the models associated with the more traditional methods of structured analysis, design, and programming. This does not mean that the object model requires abandoning all previously discovered and time-tested methods and techniques. Rather, it introduces certain new elements that are added to prior experience. The object-oriented approach offers a number of significant benefits that other models did not provide. Most importantly, the object-oriented approach makes it possible to build systems that satisfy the five attributes of well-structured complex systems. In our experience, there are five further benefits that the object model delivers.
First, the object model allows us to take full advantage of the expressive power of object-based and object-oriented programming languages. As Stroustrup notes: "It is not always clear how to take full advantage of a language such as C++. Significant improvements in productivity and code quality have been achieved simply by using C++ as a 'better C' with some data abstraction. However, far more significant gains come from the introduction of class hierarchies in the design process. This is what is called OOD, and it is here that C++ shows its greatest strengths" [82]. Experience has shown that when languages such as Smalltalk, Object Pascal, C++, CLOS, and Ada are used outside the object model, their most powerful features are either ignored or misapplied.

Persistence maintains the state and class of an object across space and time.
Second, using the object-oriented approach substantially raises the level of unification in development and the suitability for reuse not only of programs, but also of designs, which ultimately leads to the creation of a development environment [83]. Object-oriented systems are often smaller than their non-object-oriented equivalents. This means not only a reduction in the amount of program code, but also a cheaper project through the use of earlier work, which yields savings in cost and time.
Third, using the object model leads to building systems on the basis of stable intermediate descriptions, which simplifies the process of making changes. This gives a system the ability to evolve gradually and does not require its complete rework even in the case of substantial changes to the original requirements.
Fourth, Chapter 7 shows how the object model reduces the risk of developing complex systems, primarily because the integration process is spread across the entire development period rather than becoming a one-time event. The object-oriented approach consists of a series of well-considered design stages, which also reduces the degree of risk and increases confidence in the correctness of the decisions being made.
Finally, the object model is oriented toward human perception of the world, or, in Robson's words, "many people who have no idea how a computer works find the idea of object-oriented systems quite natural" [84].
Applications of the object-oriented approach
The applicability of the object-oriented approach has been demonstrated for problems of the most varied nature. Figure 2-6 lists the areas for which object-oriented systems have been implemented. More detailed information about these and other projects can be found in the bibliography provided.
At present, object-oriented design is the only methodology that makes it possible to cope with the complexity inherent in very large systems. It should be noted, however, that in some cases applying OOD may prove inadvisable, for example because of unprepared personnel or the absence of suitable development tools. We will return to this topic in Chapter 7.
Open issues
To use the object-oriented approach successfully, we must answer the following questions:
Summary
| Avionics equipment | Business information processing |
| Office automation | Operating systems |
| Computer-aided design | Investment planning |
| Computer-aided instruction | Reusable components |
| Computer-aided software engineering | Document preparation |
| Animation | Space station software |
| Databases | User interface design |
| Banking | VLSI design |
| Hypermedia | Pattern recognition |
| Film production | Robotics |
| Software configuration control | Telemetry systems |
| Mathematical analysis | Command and control systems |
| Medical electronics | Program development tools |
| Modeling of aerospace technology | Telecommunications |
| Music composition | Air traffic control |
| Screenwriting | Chemical process control |
| Oil industry | Expert systems |
Figure 2-6. Applications of the object model.
Comments