Wednesday, 14 January 2015

What is Association, Aggregation, Composition, Abstraction, Generalization and Dependency ?

These terms signify the relationships between classes. These are the building blocks of object oriented programming  and very basic stuff. But still for some, these terms look like Latin and Greek. Just wanted to refresh these terms and explain in simpler terms.

Association:

Association is a relationship between two objects. In other words,association defines the multiplicity between objects. You may be aware of one-to-one, one-to-many, many-to-one, many-to-many all these words define an association between objects.

Note: Aggregation is a special form of association.Composition is a special form of aggregation.



For Example:  A Student and a Faculty are having an association.

Aggregation:

Aggregation is a special case of association. A directional association between objects. When an object ‘has-a’ another object, then you have got an aggregation between them.Direction between them specified which object contains the other object. Aggregation is also called a “Has-a”
relationship.

For Example: A class contains students. A student cannot exist without a class There exists composition between class and students.


Composition: 

Composition is a special case of aggregation. In a more specific manner, a restricted aggregation is called composition. When an object contains the other object, if the contained object cannot exist without the existence of container object, then it is called composition.



For Example: A class contains students. A student cannot exist without a class. There exists composition between class and students.


Abstraction:

Abstraction is specifying the framework and hiding the implementation level information. Concreteness will be built on top of the abstraction. It gives you a blueprint to follow to while implementing the details. Abstraction reduces the complexity by hiding low level details.

For Example: A wire frame model of a car.

Generalization:

Generalization uses a “is-a” relationship from a specialization to the generalization class. Common structure and behaviour are used from the specialization to the generalized class. At a very broader level you can understand this as inheritance. Why I take the term inheritance is, you can
relate this term very well. Generalization is also called a “Is-a” relationship.

For Example: Consider there exists a class named Person. A student is a person. A faculty is a person. Therefore here the relationship between student and person, similarly faculty and person is generalization.


Dependency:

Change in structure or behaviour of a class affects the other related class, then there is a dependency between those two classes. It need not be the same vice-versa. When one class contains the other class it this happens.


For Example:  Relationship between shape and circle is dependency.

No comments:

Post a Comment