The Object-Oriented
Thought Process
Chapter 09
Building Objects and Object-
Oriented Design
How Objects Are Related
Both inheritance and composition represent ways
that objects interact.
– When inheritance is used, the end result is,
at least conceptually, a single class that
incorporates all the behaviors and
attributes of the inheritance hierarchy.
– When composition is used, one or more
classes are used to build another class.
Composition Relationships
The reason to use composition is that it builds
systems by combining less complex parts.
– This is a common way for people to
approach problems.
– Studies show that even the best of us can
keep, at most, seven chunks of data in our
short-term memory at one time.
Is-a and Has-a
For consistency, we stick with phrases like “is-a
animal” and “has a engine,”
– Even though “is a animal” and “has an
engine” are grammatically correct.
– We do this because I want to simply state
the rules as “is-a” and “has-a.”
Building in Phases
Another major advantage in using composition is
that systems and subsystems can be built
independently.
– Perhaps more importantly, tested and
maintained independently.
– For large software systems to work
properly and be easily maintained, they
must be broken into smaller, more
manageable parts.
Types of Composition
Generally, there are two types of composition:
association and aggregation.
– In both cases, these relationships represent
collaborations between the objects.
– In many designs, both association and
aggregation are used.
Is Composition a Form of
Association?
§ Some texts say that composition is a form of
association, and some say that an association
is a form of composition.
– In any event, in this book, we consider
inheritance and composition the two
primary ways to build classes.
• In this book, association is considered a
form of composition.
Aggregations
Perhaps the most intuitive form of composition is
aggregation. Aggregation means that a
complex object is composed of other objects.
– When you go into an appliance store, the
salesperson does not say, “Let me show
you this aggregation of microchips, a
picture screen, a tuner, and so on.”
– The salesperson says, “Let me show you
this TV.”
Associations
Associations present both the whole and the
parts.
– As stated in the stereo example, the
various components are presented
separately and connect to the whole by use
of patch cords (the cords that connect the
various components).
Aggregation Versus Association
An aggregation is a complex object composed of
other objects.
An association is used when one object wants
another object to perform a service for it.
Using Associations and
Aggregations Together
A computer system is used to describe
associations and also contains some
aggregation.
– Although the interaction between the computer box,
the monitor, the keyboard, and the mouse is
association, the computer box itself represents
aggregation.
– You see only the computer box, but it is actually a
complex system made up of other objects, including
chips, motherboards, video cards, and so on.
Avoiding Dependencies
When using composition, it is desirable to avoid
making objects highly dependent on one
another.
– One way to make objects very dependent
on each other is to mix domains.
– In the best of all worlds, an object in one
domain should not be mixed with an object
in another domain, except under certain
circumstances.
.
Cardinality
Cardinality is defined as the number of objects
that participate in an association and whether
the participation is optional or mandatory.
– Which objects collaborate with which other
objects?
– How many objects participate in each
collaboration?
Cardinality Notation
The notation of 0 . . . 1 means that an employee
can have either zero or one spouse.
The notation of 0 . . . n means that an employee
can have any number of children from zero to
an unlimited number.
– The n basically represents infinity.
Optional Associations
One of the most important issues when dealing
with associations is to make sure that your
application is designed to check for optional
associations.
– This means that your code must check to
see whether the association is null.