uml - What is the difference between association, aggregation and composition? - Stack Overflow
Encapsulation is one of the pillars of Object Oriented Design. AGGREGATION: Lets say if the relationship between objects is weak then we. We see the following relationships: owners feed pets, pets please owners ( association); a tail is a part of both dogs and cats (aggregation / composition); a cat is. Object oriented programming generally support 4 types of relationships that are: inheritance, association, composition and aggregation.
You need to bundle your data and the operations you will perform on your data. When 2 objects are interacting, they have to interact each other via an interface.
And that's what encapsulation ensures about when we design our OO system. Here is how these concepts are applied to the code: Association indicates the relationship between objects. It lets the programmer know what methods to write in their classes to make them interact with each other. You can find several examples of code and class diagrams to understand association.
In your example of Teach and Student, there is a relationship of teaching and taught by. Association vs Aggregation vs Composition The question "What is the difference between association, aggregation and composition" has been frequently asked lately.
Actually, Aggregation and Composition are subsets of association meaning they are specific cases of association. In both aggregation and composition object of one class "owns" object of another class.
Object Oriented Aggregation | Atomic Object
But there is a subtle difference: Aggregation implies a relationship where the child can exist independently of the parent. Class parent and Student child. Delete the Class and the Students still exist.
Composition implies a relationship where the child cannot exist independent of the parent. House parent and Room child. Rooms don't exist separate to a House. We should be more specific and use the composition link in cases where in addition to the part-of relationship between Class A and Class B - there's a strong lifecycle dependency between the two, meaning that when Class A is deleted then Class B is also deleted as a result Aggregation Example: It's important to note that the aggregation link doesn't state in any way that Class A owns Class B nor that there's a parent-child relationship when parent deleted all its child's are being deleted as a result between the two.
Actually, quite the opposite!
UML Association vs Aggregation vs Composition
For example, using inheritance, you could create a new type of wheel that is made of hard plastic and rolls better on carpet. You could also create one that is covered in rubber for use on hardwood floors.
These examples are both good uses of inheritance because the resultant object is still a wheel, just a more specific type of wheel. Inheritance is about creating an is a relationship. When done right, you can say that "the hard plastic wheel is a wheel. Therefore creating a new object that inherits from wheel but adds a jet engine would be poor practice.
You can't really say that a jet engine is a wheel. Composition Composition is about expressing relationships between objects. Think about the chair example.
A chair has a Seat. A chair has a back. And a chair has a set of legs. The phrase "has a" implies a relationship where the chair owns, or at minimum, uses, another object. It is this "has a" relationship which is the basis for composition.6 5 Using aggregation and composition
Consider the class definitions for each of the chair parts and the chair itself below. Note that for simplicity, each of the chair parts is just an empty object. They would each have properties and methods of their own in a real application. Back; protected var seat: Seat; protected var legs: Using composition does not mean you will never use inheritance.