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.
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
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
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
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 |