Association vs Aggregation vs Composition

In object oriented programming or in Unified Modelling, relationships between objects can be classified as association, aggregation, composition and inheritance. 

 

Association

Association is a relationship between two objects. Here objects might not be completely dependent on each other.

Example: Student and teacher, where multiple students can associate with single teacher and single student can associate with multiple teachers. Both can be added and removed independently. 

 

Aggregation

Aggregation is a strong form of association implying a part-whole hierarchy. Aggregation can be considered as a “has-a” relationship. The parent object contains (has) child objects, but the child object can also survive or exist without the enclosing class. 

Example: Room has a table, but the table can exist without the room.

 

Composition 

Composition is a strong form aggregation, where the part is inside exactly one whole. Composition is also known as a ‘is a part of’ relationship. The part may also be created and destroyed by the whole. The member object (part) cannot exist without the containing class. 

Example: A department is part of a college and it cannot exist or has no meaning after the lifetime of the college. Another example is rooms in a house, which cannot exist after the lifetime of the house.

 

Inheritance

Inheritance is also a form of association in UML where we form classes using classes that has already been defined. Inheritance can be considered as a “is-a” relationship. Inheritance is unidirectional. In OO, the concept of IS-A is based on class inheritance or interface implementation. 

Example: For example, House is a building, Car is a vehicle.

 

More Examples

Example 1

class Man extends Human { } - Man is a Human.

class Man implements Human { } - Man is a Human.

 

Example 2

class Man { private BestFriend dog; } - Man has a dog, who is a BestFriend.

class Man { private Dog bestFriend; } - Man has a best friend who is a Dog. 

 

Example 3

class Tech { WebService s; }

class JavaTech extends Tech { Spring s; }

Relationships in Example 3:

JavaTech has-a WebService

JavaTech has-a Spring

JavaTech is-a Tech

Tech has-a WebService

 

Task for you

Find out the notations in UML for each of the above.

Comments

Nice explanation  ............ :)

Was it useful?

Quick Notes Finder Tags

Activities (1) advanced java (1) agile (3) App Servers (6) archived notes (2) ArrayLists (1) Arrays (2) Best Practices (12) Best Practices (Design) (3) Best Practices (Java) (7) Best Practices (Java EE) (1) BigData (3) Chars & Encodings (6) coding problems (2) Collections (15) contests (3) Core Java (All) (53) course plan (2) Database (12) Design patterns (8) dev tools (3) downloads (2) eclipse (9) Essentials (1) examples (14) Exception (1) Exceptions (4) Exercise (1) exercises (6) Getting Started (18) Groovy (2) hadoop (4) hibernate (77) hibernate interview questions (6) History (1) Hot book (5) http monitoring (2) Inheritance (4) intellij (1) java 8 notes (4) Java 9 (1) Java Concepts (7) Java Core (8) java ee exercises (1) java ee interview questions (2) Java Elements (16) Java Environment (1) Java Features (4) java interview points (4) java interview questions (4) javajee initiatives (1) javajee thoughts (3) Java Performance (6) Java Programmer 1 (12) Java Programmer 2 (8) Javascript Frameworks (1) Java SE Professional (1) JPA 1 - Module (6) JPA 1 - Modules (1) JSP (1) Legacy Java (1) linked list (3) maven (1) Multithreading (16) NFR (1) No SQL (1) Object Oriented (9) OCPJP (4) OCPWCD (1) OOAD (3) Operators (4) Overloading (2) Overriding (2) Overviews (1) policies (1) programming (1) Quartz Scheduler (1) Quizzes (17) RabbitMQ (1) references (2) resources (1) restful web service (3) Searching (1) security (10) Servlets (8) Servlets and JSP (31) Site Usage Guidelines (1) Sorting (1) source code management (1) spring (4) spring boot (3) Spring Examples (1) Spring Features (1) spring jpa (1) Stack (1) Streams & IO (3) Strings (11) SW Developer Tools (2) testing (1) troubleshooting (1) user interface (1) vxml (8) web services (1) Web Technologies (1) Web Technology Books (1) youtube (1)