Search results
Results from the WOW.Com Content Network
An aggregation is a kind of association that models a part/whole relationship between an aggregate (whole) and a group of related components (parts). A composition, also called a composite aggregation, is a kind of aggregation that models a part/whole relationship between a composite (whole) and a group of exclusively owned parts.
Misuses of composition and aggregation. In object-oriented programming this relationship can be represented with a Unified Modeling Language Class diagram. This has-a relationship is also known as composition. As you can see from the Class Diagram on the right a car "has-a" carburetor, or a car is "composed of" a carburetor.
The diagram on top shows Composition between two classes: A Car has exactly one Carburetor, and a Carburetor is a part of one Car. Carburetors cannot exist as separate parts, detached from a specific car. The diagram on bottom shows Aggregation between two classes: A Pond has zero or more Ducks, and a Duck has at most one Pond (at a time).
Composition over inheritance (or composite reuse principle) in object-oriented programming (OOP) is the principle that classes should favor polymorphic behavior and code reuse by their composition (by containing instances of other classes that implement the desired functionality) over inheritance from a base or parent class. [2]
Aggregation - 1. a special type of association used to represent a stronger relationship between two classes than a regular association; typically read as "owns a", as in, "Class A owns a Class B". A hierarchy of classes where the child object may or may not continue to exist if the parent object is destroyed; see 'composition'.
Inheritance is contrasted with object composition, where one object contains another object (or objects of one class contain objects of another class); see composition over inheritance. In contrast to subtyping’s is-a relationship, composition implements a has-a relationship.
Also take the point about the carburetor. The diagram in the article describes this relationship as composition - but I would have thought the life-line of a carburetor is not implicitly tied to the life-line of the car (which would be the definition of composition), and so this too would be aggregation. Ultimately: I agree.
In object-oriented programming, association defines a relationship between classes of objects that allows one object instance to cause another to perform an action on its behalf. This relationship is structural , because it specifies that objects of one kind are connected to objects of another and does not represent behaviour .