Association
“Association represents the static relationship shared among the objects of two classes. “So any relationship between object of two classes is called association.
An association says there is some kind of dependency between the objects. It can either be a weak or Strong dependency.
Consider an example of Teacher and Student classes. Multiple students can associate with single teacher and single student can associate with multiple teachers. This is a kind of a weak relationship because there is no ownership between the student and teacher and the life cycle are maintained by themselves.
Composition
Composition is specialized form of aggregation and we can call this as a “life and death” relationship. It is a strong type of aggregation. Child object does not have their life-cycle and if parent object deletes all child objects will also be deleted.
Consider an example of a set of classes Engine and Car. The object Engine is said to be composed with in the Car object as the Engine cannot leave without the Car object and the relationship is said to be whole because the Engine is a part of the Car object. Here the life cycle of Engine is managed by the Car object. If the Car gets destructed the associated composite object like Engine will also get destroyed.
Thus a composition relationship specifies that the lifetime of the part classifier is dependent on the lifetime of the whole classifier.
public class Engine
{
. . .
}
public class Car
{
Engine e = new Engine();
…….
}
Yet another example for Composite relationship is, consider a set of classed Person, Leg and Hand. The objects Leg and Hand are composed within the Person object. The life cycle of Leg and Hand objects are maintained by Person object. Also you can see the Leg and Hand object cannot leave independently without the Person object. And note there is a strong relationship of Leg and Hand object with the Person.
Aggregation
The difference between aggregation and composition is the object which can exists independently uses aggregation and an object that has no meaning outside of the relationship uses composition
Let’s take an example of Department and teacher. A single teacher cannot belong to multiple departments, but if we delete the department, the teacher object will not destroy. We can think about “has-a” relationship.
Let us take another example of Company and Employee classes. The employee is said to be aggregated with the Company. The Employee is working for a company and has a relationship with the company. The employee object can still survive even if say the Company object does not exists.
Conclusion
I will conclude here by taking a real world example which has aggregation and compositions.
Consider a scenario of a University which owns various departments (e.g., physics, chemistry) and each department has a number of professors. If the university closes, the departments will no longer exist, but the professors in those departments will continue to exist. Therefore, a University can be seen as a composition of departments, whereas departments have an aggregation of professors. In addition, a Professor could work in more than one department, but a department could not be part of more than one university.