Professional Documents
Culture Documents
Sudah lebih dari 6 bulan sejak terakhir saya memposting “Manajemen State dengan Redux
Middleware”, dan mulai menjauh lagi dari Redux, berpindah ke backend programmer menggunakan
NodeJs, kemudian berpindah lagi. Alasan tersebut yang membuat saya akhirnya membahas hal yang
jauh berbeda dengan Redux maupun NodeJs. Alasan lain adalah belum mendapatkan hal yang menarik
yang spesifik dari Javascript untuk dibagikan pada medium saya.
Pada kesempatan kali ini saya akan membagikan penjelasan hubungan antar-kelas pada bahasa
pemrograman Java yang menerapkan konsep pemrograman berbasis objek. Untuk seorang
programmer, mungkin pengertian dan konsep ini tidak terlalu penting, namun akan sangat berguna
apabila bisa mengerti di luar kepala.
Hubungan antar-kelas pada Java ada empat termasuk sifat pewarisan kelas, yaitu Asosiasi, Agregasi,
Komposisi dan Pewarisan. Pada postingan kali ini hanya akan dibahas sampai hubungan komposisi.
Berikut penjelasan hubungan - hubungan tersebut:
Asosiasi
Dapat dilihat pada gambar kelas diagram di atas, hubungan asosiasi digambarkan dengan satu garis
tidak putus - putus dan tidak memiliki anak panah pada kedua ujungnya. Kemudian juga dibubuhkan
kardinal pada garis tersebut.
Asosiasi adalah hubungan yang bisa saling menggunakan di dalam sebuah kelas, dan tidak saling
memiliki. Misal pada gambar di atas terdapat kelas Dosen dan kelas Mahasiswa, dilihat dari
kardinalitasnya, satu dosen bisa memiliki banyak mahasiswa. Apabila dosen dihilangkan, mahasiswa
masih bisa digunakan karena tidak saling memiliki.
Penjelasan tentang asosiasi ini bisa lebih jelas dengan melihat dua potongan kode dibawah
mahasiswa.java
dosen.java
Dari dua potongan kode di atas, dapat kita ketahui bahwa kelas Dosen menggunakan variable nim
mahasiswa yang terdapat pada kelas Mahasiswa. Kita dapat menghapus setiap kelas tanpa
mempengrahui kelas lain. Hubungan seperti di atas adalah hubungan asosiasi.
Agregasi
Jika hubungan asosiasi adalah saling menggunakan, di sini hubungan yang terjadi adalah memiliki.
Dilihat pada gambar kelas diagram di atas, bahwa kelas Jurusan memiliki kelas Mahasiswa sebagai
variable nya. Meskipun kelas Jurusan memiliki kelas Mahasiswa, namun kedua kelas tersebut dapat
dibuat secara independen.
Penjelasan dengan menggunakan potongan kode akan bisa lebih rinci di bagian menggunakan kelas lain.
Lihat potongan kode di bawah.
jurusan.java
Potongan kode di atas merupakan lanjutan dari potongan kode pada bagian asosisasi. Bisa dilihat bahwa
pada kelas Jurusan, menggunakan kelas Mahasiswa sebagai variable di dalamnya, sehingga bisa dibilang
bahwa kelas Jurusan memiliki kelas Mahasiswa. Apabila kelas Mahasiswa dihapus maka kelas Jurusan
tidak dapat berdiri, namun tidak terjadi sebaliknya, kelas Mahasiswa masih bisa berdiri tanpa terdapat
kelas Jurusan. Hubungan seperti ini disebut agregasi.
Komposisi
Komposisi digambarkan menggunakan diamond hitam yang menyatakan memiliki bagian seperti pada
agregasi, tapi lebih spesial. Kemudian menggunakan garis tidak putus ke kelas yang dimiliki.
Pada paragraf di atas dikatakan “memiliki bagian seperti pada agregasi, namun lebih spesial”, apa yang
menjadikan hubungan komposisi lebih spesial adalah karena setiap kelas tidak dapat berdiri sendiri.
Seperti contoh kelas diagram di atas, bahwa kelas Komputer tidak akan terbentuk tanpa adanya kelas
Keyboard, Mouse dan CPU. Begitu pula sebaliknya, apabila tidak terdapat kelas Komputer, maka kelas
kelas yang lain tidak akan berfungsi.
cpu.java
keyboard.java
mouse.java
komputer.java
mainKomputer.java
Dapat dilihat dari file mainKomputer.java bahwa komponen kelas Mouse, Keyboard, Cpu baru dibuat
setelah komputer dibuat. Apabila objek komputer dihapus maka semua komponen juga terhapus.
Begitulah ilustrasi dari hubungan komposisi.