JAVA Content

Aggregation vs Composition vs Association

Aggregation vs Composition vs Association

Main Diagram of Association, Aggregation, and Composition

Overview Diagram of Association, Aggregation, and Composition

Introduction

In object-oriented programming, understanding the relationships between classes is crucial for designing effective systems. Three primary types of relationships are Association, Aggregation, and Composition. Each represents a different level of dependency and ownership between objects. Here's a brief overview:

  • Association represents a general relationship where objects of one class are connected to objects of another class, but there is no strong ownership or lifecycle dependency.
  • Aggregation is a specialized form of Association where there is a "whole-part" relationship. The part can exist independently of the whole, indicating a weaker form of ownership.
  • Composition is a strong form of Aggregation with a more strict "whole-part" relationship, where the part's lifecycle is tightly bound to the whole. If the whole is destroyed, the parts are also destroyed.

Let's explore each of these relationships in detail:

1. Association

Association is a fundamental concept in object-oriented design that defines a relationship between two or more classes where they are connected to each other but do not have a strong ownership or lifecycle dependency. This relationship allows objects of one class to interact with objects of another class, and each class has its own lifecycle.

Real-time Example: Consider a Library and a Book in a library management system. A library has a collection of books, and each book belongs to a library. However, books can exist without being in a particular library, and libraries can exist without having specific books. This is a classic example of association where the lifecycle of the library and the book are independent of each other.

Association Diagram

Example Diagram of Association

class Library {
    private List books;
}

class Book {
    private String title;
}
            

2. Aggregation

Aggregation represents a "whole-part" relationship where the part can exist independently of the whole. This relationship indicates that the part can be shared among different wholes, and the lifecycle of the part is not tightly bound to the whole.

Real-time Example: In a university system, a Department class can contain Professor objects. Departments may employ multiple professors, but professors can exist independently of the department and can even work across different departments. If a department is closed, the professors are not destroyed; they can belong to other departments or institutions.

Aggregation Diagram

Example Diagram of Aggregation

class Department {
    private List professors;
}

class Professor {
    private String name;
}
            

3. Composition

Composition is a strong form of aggregation where the part's lifecycle is tightly bound to the whole. If the whole is destroyed, the parts are also destroyed. This implies a strong ownership and indicates that the part cannot exist independently of the whole.

Real-time Example: In a computer system, a Computer class can have multiple Component objects like CPU, RAM, and HardDrive. If the computer is dismantled or destroyed, the components (CPU, RAM, HardDrive) are also destroyed. These components cannot function independently of the computer system and are tightly coupled with it.

Composition Diagram

Example Diagram of Composition

class Computer {
    private CPU cpu;
    private RAM ram;
    private HardDrive hardDrive;
}

class CPU {
    private String model;
}

class RAM {
    private int size;
}

class HardDrive {
    private int capacity;
}
            

Comments