Apa itu Class Diagram?
Untuk mengembangkan sebuah sistem, software engineer dan developer membutuhkan sebuah diagram. Diagram yang umum digunakan adalah diagram dari bahasa pemodelan UML (Unified Modeling Language), yang terdiri dari diagram perilaku dan diagram struktur.
Diagram perilaku menggambarkan aspek dinamis atau perilaku suatu sistem. Sedangkan diagram struktur menggambarkan aspek statis atau struktur dari sistem software yang akan dikembangkan.
Salah satu diagram struktur yang menggambarkan pemodelan objek paling mendasar adalah class diagram. Dikutip dari IBM, class diagram adalah diagram yang memperlihatkan struktur sistem mulai dari kelas sistem, atribut, metode, dan hubungan antar objek.
Tergantung pada kompleksitas sistem, diagram ini bisa digunakan untuk memodelkan keseluruhan sistem atau beberapa komponen saja.
Karena class diagram dapat membantu memahami persyaratan sistem dan detail desain, diagram ini menjadi salah satu diagram struktur UML yang umum digunakan untuk mendokumentasikan arsitektur atau struktur software.
Fungsi Class Diagram
Dikutip dari IBM, fungsi utama class diagram adalah untuk memvisualisasikan, menentukan, dan mendokumentasikan fitur struktural dari pemodelan sistem.
Berikut ini beberapa kegunaan dari class diagram dalam mengembangkan sistem:
- Memvisualisasikan model data sebuah sistem, baik yang sederhana maupun kompleks
- Membantu memahami kebutuhan dari sistem dan komponennya
- Memperlihatkan bagaimana sistem bekerja, termasuk memperlihatkan hubungan antara komponen sistem
- Membantu mengetahui kode spesifik tertentu yang perlu diprogram dan diimplementasikan ke struktur sistem yang telah direncanakan
- Bagi business analyst, class diagram dapat digunakan untuk memodelkan sistem dari sebuah perspektif bisnis
Keunggulan Class Diagram
Class diagram dengan jelas memetakan struktur sistem dengan menggambarkan kelas, atribut, operasi, dan hubungan antar objeknya. Hal ini sangat membantu developer memahami gambaran umum dari skema aplikasi.
Selain itu, class diagram merupakan satu-satunya diagram UML yang dapat dipetakan langsung menggunakan bahasa berorientasi objek (object-oriented language/OOL).
Bahasa berorientasi objek (OOL) atau disebut juga dengan object-oriented programming (OOP) adalah salah satu bahasa pemrograman yang fokusnya pada objek atau data dalam pengembangan program software, dibandingkan pada fungsinya. Contoh OOL termasuk Java, Python, dan C++.
Karena itu, class diagram populer digunakan untuk pemodelan sistem berorientasi objek.
Komponen Class Diagram
Seperti yang sudah disinggung sebelumnya, class diagram mendeskripsikan struktur sistem dengan memperlihatkan kelas sistem, atribut, operasi atau metode, dan hubungan antar objek.
Setiap komponen terletak pada bagian yang berbeda. Kelas (class) termasuk dalam upper section, atribut termasuk middle section, dan metode termasuk bottom section.
Misalnya pada gambar di bawah ini yang menjelaskan class customer hotel.
Lebih lanjut, berikut ini penjelasan dari masing-masing komponen class diagram:
- Kelas (class)
Di bagian atas terdapat nama kelas yang mewakili sebuah atau sekumpulan objek dengan perilaku dan struktur yang sama. Objek bisa berupa instance atau wujud yang konkret atau hanya prototipe saja.
Instance konkret merupakan orang atau benda aktual di dunia nyata. Misalnya, instance konkret dari kelas customer hotel adalah orang di dunia nyata yang memesan kamar hotel.
Namun jika hanya ingin membuat class diagram untuk prototipe saja, bisa menguraikan atribut dan metodenya berdasarkan gambaran ideal dari customer yang ditargetkan. Misalnya, instance prototipe customer hotel memiliki atribut seperti nomor KTP, nama, nomor telepon, dan lain-lain yang angka dan karakteristiknya berdasarkan perkiraan.
- Atribut
Atribut berisikan karakteristik objek dan berfungsi menjelaskan kualitas kelas. Atribut dituliskan pada bagian atau kolom kedua, dan hanya digunakan untuk mendeksripsikan instance dari suatu kelas.
- Metode
Metode atau operasi (operation) dituliskan pada bagian atau kolom ketiga. Metode menggambarkan perilaku kelas, seperti bagaimana interaksi kelas dengan data dan apa yang bisa dilakukan oleh kelas.
- Package
Package atau kelompok berisikan elemen seperti diagram, kelas, dokumen, atau package lain yang mirip atau terkait satu sama lain. Bisa dikatakan, package ini sama seperti folder.
Atribut dan metode dalam class diagram bisa memiliki salah satu sifat berikut. Sifat-sifat ini menandakan visibilitas atau kemampuan akses kelas, dan digambarkan dengan simbol yang ditulis sebelum atribut atau metode:
- Private (-): Hanya bisa dilihat dan diakses dari dalam kelas, tidak bisa digunakan atau dimodifikasi oleh luar kelas.
- Public (+): Bisa terlihat pada seluruh sistem, yang berarti bisa digunakan oleh siapapun yang membutuhkan.
- Protected (#): Bisa terlihat dari dalam kelas dan sub kelas, tidak bisa diakses dari luar kelas.
- Package (~): Kelas yang tergabung dalam kelompok yang sama bisa saling mengakses atribut atau metode antar kelas.
Contoh Class Diagram
Class diagram tak hanya bisa memvisualisasikan struktur dari sistem software yang dikembangkan, tapi juga untuk sistem dalam suatu bisnis. Class diagram berikut akan mengambil contoh sistem manajemen hotel.
Class diagram dapat menunjukkan hubungan setiap objek dalam sistem manajemen hotel, termasuk informasi tamu, tanggung jawab staff, dan hunian kamar.
Tamu bisa memilih kamar yang diinginkan, yang kemudian diproses oleh resepsionis. Tamu juga bisa meminta bill dengan bantuan resepsionis. Ketika memiliki komplain, tamu juga bisa langsung menghubungi manajer.
Akses tamu dan hubungannya dengan objek lain dalam sistem manajemen hotel digambarkan dengan contoh class diagram berikut yang dibuat Lucidchart, tool pembuatan diagram.
FAQ (Frequently Asked Question)
Apa yang dimaksud relasi antar kelas pada class diagram?
Relasi antar kelas pada class diagram menggambarkan hubungan pada setiap kelas atau objek dalam class diagram. Hubungan kelas ini digambarkan dengan garis dan terkadang anak panah untuk mengetahui arah hubungan.
Dikutip dari Lucid Chart, berikut tiga jenis relasi class diagram yang paling umum:
- Inheritance
Inheritance atau generalization menggambarkan sub-kelas menurunkan fungsi dari superclass atau kelas utama. Hubungan ini disimbolkan dengan garis lurus dan anak panah tertutup yang mengarah ke superclass.
Contohnya, mobil sebagai sub-kelas dan kendaraan sebagai superclass. Mobil menurunkan fungsi yang sama dengan kendaraan, karena itu arah hubungannya digambarkan garis panah dari mobil ke kendaraan.
- Bidirectional association
Bidirectional association atau asosiasi dua arah adalah bentuk hubungan paling umum antara dua kelas. Arah hubungan ini menunjukkan bahwa kedua kelas saling berhubungan atau berinteraksi satu sama lain.
Bidirectional association digambarkan dengan garis lurus yang menghubungkan dua kelas.
- Unidirectional association
Unidirectional association atau asosiasi searah menggambarkan hubungan satu kelas yang menyadari keberadaan kelas lain, kemudian berinteraksi dengannya. Hubungan ini digambarkan dengan garis lurus dan anak panah terbuka.
Salah satu contoh unidirectional association adalah sistem tilang elektronik (ETLE). Sebuah sensor diletakkan di tempat-tempat yang sering terjadi pelanggaran berkendara, misalnya pada ruas jalan dengan kecepatan tertentu.
Ketika ada kendaraan yang melakukan pelanggaran, sensor akan menangkap dan merekam kejadian tersebut sebagai bukti. Setelah mengidentifikasi pelat motor dan data kendaraan, polisi akan mengirimkan e-mail atau surat pemberitahuan mengenai pelanggaran tersebut ke pemilik kendaraan.
Setiap hubungan pada class diagram dilengkapi dengan notasi angka (di salah satu atau kedua ujung) untuk menunjukkan berapa banyak berinteraksi yang bisa diterima kelas tersebut.
Misalnya pada diagram di bawah ini yang menunjukkan hubungan antara kelas Departemen Sales dan Karyawan.
Angka 1 yang tertulis menunjukkan bahwa departemen tersebut hanya ada satu. Sedangkan gambar bintang (*) menunjukkan bahwa pada kelas karyawan terdiri dari beberapa objek atau orang.
Maka arti dari hubungan tersebut adalah kelas Departemen memiliki asosiasi atau hubungan dengan seluruh objek pada kelas Karyawan. Sebaliknya, setiap objek pada kelas Karyawan diasosiasikan hanya pada 1 objek yaitu kelas Departemen.