The following figure shows the general model of an object defined by aggregation. The outer objects contain inner (encpasulated) sub-objects which themselves may have hidden internal objects.
Composition via Aggregation |
---|
Composition using aggregation occurs in many familiar natural and man-made systems. The table below shows how several familiar systems can be mapped to the structure in the figure above.
Object | Sub-Object | Sub-Sub-Object |
---|---|---|
automobile | engine | pistons |
computer | mother board | processor chip |
molecules | atoms | quarks |
An aggregation of objects is created when one object (the "whole") contains in its encapsulated data one or more other objects (the "parts"). The simple one-second timer created above using association can also be implemented via aggregation as shown below. In this figure the basic objects that form the timer (Clock, Counter, TextBox, Frame, Start, and Stop) are contained within other objects (TimedCounter, Display and ControlButtons) that are, in turn, contained in the single encapsulating object, SimpleTimer. Notice that from the outside, only the SimpleTimer is visible; all other objects are concealed within the encapsulating boundary of the SimpleTimer object.
Composition via Aggregation |
---|
The first advantage of aggregation is that the outer object may be used without much, if any, concern for the operation, or even the existence, of the internal sub-objects. When driving a car we are rarely concerned about the thousands of parts which are composed together to realize the car. The ability to ignore the finer structure of an object greatly simplifies the task of understanding how a system works or building a system that works in a particular way. The second advantage of aggregation is that internal parts may be changed without affecting the user's view of the external whole. The internal structure of the parts may be completely changed or only individual parts may be replaced. Improvement in efficiency, reliability, or cost may motivate the replacement of parts.
|