- Has-A relationship is also known as composition/Aggregation
- There is no specific keyword to implement Has-A relation, but most of the time new keyword.
- The main Advantage of Has-a Relationship is reusability of the code.
E.g.-:
class car{
Engine e=new Engine();
}
class Engine{
//Engine specific functionality
}
Car Has-A engine reference.
Composition-:
Without existing container object if there is no chance of existing contained objects, then container and contained object are strongly associated and this strong association is nothing but composition.
E.g-:
University consist of several departments without existing University there is no chance of existing department, hence university and department are strongly associated and this strong association is nothing but composition.
Aggregation-:
Without existing container object if there is chance of existing contained object then container and contained object are weekly associated and this week association is nothing but aggregation.
E.g.-:
Department consist of various Professor are contained without existing department there may be a chance of existing Professor objects, hence department and Professor objects are weekly associated and this week association is nothing but Aggregation.
Note-:
- In composition object are strongly associated, whereas in aggregation object are weekly associated
- In composition, a container object holds directly contained objects. Where are in aggregation, container object holds just references of contained object.
IS-A vs Has-A relationship-:
If we want to total functionality of a class automatically, then we should go for IS-A relationship.
If we want of part of functionality, then we should go for Has-A relationship.