Subbab 6 / 9

Association, Composition, dan Aggregation

Dalam Object-Oriented Programming (OOP), sebuah sistem umumnya terdiri dari beberapa class yang saling berinteraksi untuk menjalankan fungsi tertentu. Hubungan antar-class tersebut disebut relationship.

Terdapat beberapa bentuk relationship, di antaranya Association, Aggregation, dan Composition. Ketiganya sama-sama menggambarkan hubungan antar-object, tetapi memiliki tingkat keterikatan dan kepemilikan yang berbeda.

Contoh penerapan Association, Aggregation, dan Composition dalam kehidupan nyata
Contoh penerapan Association, Aggregation, dan Composition dalam kehidupan nyata

1. Association

Pengertian

Association adalah hubungan antar-class ketika suatu object dapat menggunakan atau berinteraksi dengan object dari class lain, tanpa adanya hubungan kepemilikan (ownership) di antara keduanya.

Contoh Kasus: Student dan Course

Pada kasus Student dan Course, Student berhubungan dengan course karena student dapat mengikuti suatu course. Namun, Student tidak memiliki course, dan course tidak menjadi bagian dari Student.

Ciri Utama

  • Tidak terdapat ownership.
  • Kedua object dapat berdiri secara independen.
  • Hubungan terbentuk karena adanya interaksi atau penggunaan object lain.

Implementasi

php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Student
{
    public string Name{ get; set; }

    public void Enroll(Course course)
    {
        Console.WriteLine($"{Name} mengikuti {course.Name}");
    }
}

class Course
{
    public string Name{ get; set; }

    public Course(string name)
    {
        Name= name;
    }
}
php
1
2
3
4
5
6
7
8
Student student = new Student
{
    Name = "Andi"
};

Course course = new Course("Pemrograman C#");

student.Enroll(course);

2. Aggregation

Pengertian

Aggregation adalah hubungan has-a ketika suatu object memiliki object dari class lain, tetapi object yang dimiliki dapat berdiri sendiri tanpa object pemiliknya.

Contoh Kasus: Car dan Wheel

Pada kasus Car dan Wheel, sebuah Car memiliki beberapa Wheel. Namun, Wheel bukan bagian yang sepenuhnya bergantung pada Car. Sebuah Wheel dapat dibuat, digunakan, atau dipindahkan ke Car lain secara independen.

Ciri Utama

  • Terdapat ownership, yaitu Car memiliki Wheel.
  • Object Wheel dapat dibuat dan dikelola secara independen.
  • Wheel dapat digunakan oleh object Car lain.
  • Hubungan memiliki sifat weak ownership.

Implementasi

php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Wheel
{
    public string Brand { get; set; }

    public Wheel(string brand)
    {
        Brand = brand;
    }
}

class Car
{
    public string Model { get; set; }
    public List<Wheel> Wheels { get; set; }

    public Car(string model, List<Wheel> wheels)
    {
        Model = model;
        Wheels = wheels;
    }
}
php
1
2
3
4
5
6
7
8
9
10
Wheel wheel1 = new Wheel("Michelin");
Wheel wheel2 = new Wheel("Bridgestone");

List<Wheel> wheels = new List<Wheel>
{
    wheel1,
    wheel2
};

Car car = new Car("Toyota", wheels);

3. Composition

Pengertian

Composition adalah hubungan has-a ketika suatu object memiliki object dari class lain sebagai bagian integralnya, sehingga object yang dimiliki bergantung pada object pemiliknya.

Contoh Kasus: House dan Room

Pada kasus House dan Room, sebuah House memiliki beberapa Room. Room dianggap sebagai bagian dari House, sehingga keberadaannya dikelola oleh House.

Ciri utama

  • Terdapat strong ownership.
  • Object bagian dibuat dan dikelola oleh object pemilik.
  • Object bagian merupakan bagian integral dari object pemilik.
  • Lifecycle object bagian bergantung pada object pemilik.

Implementasi

php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class Room
{
    public string Name { get; set; }

    public Room(string name)
    {
        Name = name;
    }
}

class House
{
    public string Address { get; set; }
    public List<Room> Rooms { get; set; }

    public House(string address)
    {
        Address = address;

        Rooms = new List<Room>
        {
            new Room("Living Room"),
            new Room("Bedroom")
        };
    }
}
php
1
House house = new House("Jl. Mawar No. 10");

Perbedaan

Aspek

Association

Association

Composition

Hubungan

Berinteraksi dengan object lain

Has-a

Has-a

Ownership

Tidak ada

Weak ownership

Strong ownership

Ketergantungan

Object independen

Object bagian dapat berdiri sendiri

Object bagian bergantung pada pemilik

Contoh

Student → Course

Car → Wheel

House → Room