You get a bonus - 1 coin for daily activity. Now you have 1 coin

2.3. Applying the object model

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.

2.3. Applying the object model

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:

  • What are classes and objects?
  • How does one identify classes and objects in specific applications?
  • How does one describe the architecture of an object-oriented system?
  • How does one build well-structured object-oriented systems?
  • How does one organize the management of the development process according to OOD? The next five chapters are devoted to these questions.

Summary

  • The evolution of the software industry has led to the creation of methods of object-oriented analysis, design, and programming, which serve for programming "in the large".
  • In programming there are several paradigms, oriented toward procedures, objects, logic, rules, and constraints.
  • An abstraction denotes the essential characteristics of some object that distinguish it from all other kinds of objects and thus abstraction clearly defines the conceptual boundary of the object from the viewpoint of the observer.
  • Encapsulation is the process of separating the structure and behavior of an object; encapsulation serves to isolate the contractual interface of an abstraction from its implementation.
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.

  • Modularity is the property of a system that has been decomposed into a set of cohesive and loosely coupled modules.
  • Hierarchy is a ranking or ordering of abstractions.
  • Typing is a way to guard against the use of objects of one class in place of another, or at least a way to control such interchange.
  • Concurrency is the property that distinguishes an active object from one that is not active.
  • Persistence is the ability of an object to exist in time and/or in space.

Comments

To leave a comment

If you have any suggestion, idea, thanks or comment, feel free to write. We really value feedback and are glad to hear your opinion.
To reply

Lectures and tutorial on "Object Oriented Analysis and Design"

Terms: Object Oriented Analysis and Design