Object-Oriented Chapter2 Full
Object-Oriented Chapter2 Full
Grady Booch
CONCEPTS
Robert A. Maksimchuk
Michael W. Engle
Bobbi J. Young, Ph.D.
CHAPTER
CHAPTER 2:
2: The
The OBJECT
OBJECT MODEL
MODEL
Jim Conallen
Kelli A. Houston
Concepts
• Object-oriented technology is built on a sound engineering
foundation, whose elements we collectively call the object model of
development or simply the object model.
• Let there be no doubt that object-oriented analysis and design is
fundamentally different than traditional structured design
approaches.
• It requires a different way of thinking about decomposition, and it
produces software architectures that are largely outside the realm of
the structured design culture.
• These differences arise from the fact that structured design methods
build upon structured programming, whereas object-oriented design
builds upon object-oriented programming.
• In this chapter, we will show clearly what object-oriented
development is and what it is not, and how it differs from other
methods through its use of the seven elements of the object model.
The Evolution of the Object Model
• Object-oriented development did not spontaneously generate itself
from the ashes of the uncounted failed software projects that used
earlier technologies.
• It is not a radical departure from earlier approaches. Indeed, it is
founded in the best ideas from prior technologies.
• As we look back on the relatively brief yet colorful history of software
engineering, we cannot help but notice two sweeping trends:
▫ 1. The shift in focus from programming-in-the-small to
programming-in-the large
▫ 2. The evolution of high-order programming languages
• Most new industrial-strength software systems are larger and more
complex than their predecessors were, even just a few years ago.
• This growth in complexity has prompted a significant amount of
useful applied research in software engineering, particularly with
regard to decomposition, abstraction, and hierarchy.
The Generations of Programming Languages
• 1. Procedure-oriented Algorithms
• 2. Object-oriented Classes and objects
• 3. Logic-oriented Goals, often expressed in a predicate
calculus
• 4. Rule-oriented If–then rules
• 5. Constraint-oriented Invariant relationships
• From the most to the least useful, these kinds of abstractions include
the following:
• Entity abstraction: An object that represents a useful model of a
problem domain or solution domain entity
• Action abstraction: An object that provides a generalized set of
operations, all of which perform the same kind of function
• Virtual machine abstraction: An object that groups operations
that are all used by some superior level of control, or operations that
all use some junior-level set of operations
• Coincidental abstraction: An object that packages a set of
operations that have no relation to each other
The Meaning of Encapsulation