Komposisi merupakan relasi antar kelas yang lebih ketat dibanding agregasi (lihat pos yang lalu), sedikit berbeda dibanding inheritance yang bersifat generalisasi/spesialisasi. Masih dengan kasus yang sama berikut ini.
Diagram kelas Unified Modeling Language (UML) di atas memperlihatkan relasi antara kelas Dosen dan Mahasiswa “Membimbing”. Teknik di atas sering muncul di buku karangan Alan Denis (System Analysis & Design – an OO Approach with UML).
Karakteristik agregasi antara dua kelas adalah independen. Jika dihapus satu objek yang berelasi, objek lain masih ada, sementara komposisi tidak. Ada istilah Wadah (Container) dan Isi (Contain). Jika wadah dihapus maka isi ikut terhapus juga. Misalnya komputer yang memiliki komponen prosesor, ram, mainboard, dan lain-lain dihapus, maka komponen otomatis ikut terhapus.
Secara kode mirip dengan agregasi, hanya saja isi, dalam hal ini isi, misalnya dosen pembimbing, dibangkitkan dalam objek yang berperan sebagai wadah, misal mahasiswa.
Pada agregasi, objek mahasiswa y (si Wahyu) memiliki dosen pembimbing x (Rahmadya). Jika objek y dihapus (ketik saja “del y” di colab) x masih ada. Nah, untuk komposisi dosen pembimbing y (Ujang) diletakan di dalam y sebagai wadah. Jika y dihapus/delete dosen pembimbing pun terhapus, berbeda dengan agregasi yang masih ada x tersisa. Berikut secara UML bagaimana notasi agregasi dan komposisi.
Namun dalam implementasinya antara agregasi dan komposisi hanya garis saja seperti dalam buku Alan Dennis et al, kecuali jika ingin merinci diagram kelasnya. Untuk inheritance harus dicantumkan dalam diagram simbolnya, karena atribut dan metode ada di kelas induk. Jika tidak diberi simbol panah khawatir pembaca akan bingung kemana atribut dan metode lainnya yang berada di kelas induk. Untuk lebih jelasnya silahkan lihat video Youtube berikut ini.