Class Diagram UML: Notasi, Jenis Relasi, dan Contoh Sistem Perpustakaan
Class diagram adalah diagram UML yang menggambarkan struktur sebuah sistem berorientasi objek: class apa saja yang ada, atribut dan method setiap class, serta hubungan antar-class. Kalau use case diagram menjawab "sistem bisa melakukan apa", class diagram menjawab "sistem tersusun dari apa".

Foto: StockSnap (CC0)
Supaya mudah dibandingkan, contohnya tetap memakai sistem perpustakaan. Jika belum familiar dengan istilah class dan object, baca dulu pengertian OOP.
Bentuk sebuah class
Satu class digambar sebagai kotak dengan tiga bagian: nama class, atribut, dan method (operasi).
Tanda di depan atribut atau method menunjukkan visibilitas:
| Simbol | Visibilitas | Bisa diakses oleh |
|---|---|---|
+ | public | Semua class |
- | private | Hanya class itu sendiri |
# | protected | Class itu dan turunannya |
~ | package | Class dalam paket yang sama |
Format penulisan: nama: tipe untuk atribut, dan nama(parameter): tipeKembalian untuk method.
Jenis hubungan antar-class
| Hubungan | Notasi | Arti | Contoh |
|---|---|---|---|
| Asosiasi | Garis biasa | Class saling berhubungan | Anggota — Peminjaman |
| Agregasi | Garis dengan belah ketupat kosong | "Punya", tetapi bagian bisa berdiri sendiri | Rak ◇— Buku (buku tetap ada walau rak dibongkar) |
| Komposisi | Garis dengan belah ketupat penuh | "Terdiri dari", bagian ikut hilang jika induknya hilang | Peminjaman ◆— DetailPeminjaman |
| Generalisasi (pewarisan) | Panah segitiga kosong | "Adalah jenis dari" | Petugas —▷ Pengguna |
| Dependensi | Panah putus-putus | Memakai class lain sementara | Laporan ⇢ Peminjaman |
Contoh class diagram perpustakaan
Cara membaca diagram di atas:
- Anggota dan Petugas mewarisi Pengguna (generalisasi), sehingga keduanya punya
id,nama, danlogin(). Atribut Pengguna bertanda#(protected) supaya bisa diakses class turunannya. - Satu Anggota punya 0..* (nol atau lebih) Peminjaman, dan setiap Peminjaman milik tepat 1 Anggota.
- Peminjaman terdiri dari 1..* DetailPeminjaman (komposisi, belah ketupat penuh di sisi Peminjaman). Jika transaksi peminjaman dihapus, detailnya ikut terhapus.
- Setiap DetailPeminjaman merujuk ke 1 Buku, dan satu Buku bisa muncul di banyak detail peminjaman.
- Rak menampung banyak Buku (agregasi, belah ketupat kosong di sisi Rak). Buku tetap ada walaupun raknya dipindah atau dibongkar.
Dari class diagram ke kode
Class diagram bisa langsung diterjemahkan ke kode. Contoh PHP 8 untuk generalisasi dan komposisi:
abstract class Pengguna
{
public function __construct(protected int $id, protected string $nama) {}
public function login(): bool { /* ... */ return true; }
}
class Anggota extends Pengguna
{
private array $peminjaman = []; // 0..* Peminjaman
}
class Peminjaman
{
private array $detail = []; // komposisi: dibuat & dimiliki di sini
public function tambahBuku(Buku $b): void
{
$this->detail[] = new DetailPeminjaman($b);
}
}
Perhatikan bahwa objek DetailPeminjaman dibuat di dalam Peminjaman. Inilah ciri komposisi: umur objek bagian mengikuti induknya.
Class diagram vs ERD
| Class diagram | ERD | |
|---|---|---|
| Fokus | Struktur program (objek) | Struktur penyimpanan data (tabel) |
| Isi | Atribut dan method | Atribut saja |
| Pewarisan | Didukung langsung | Harus diakali (tabel terpisah/gabungan) |
| Dipakai untuk | Merancang kode OOP | Merancang database |
Dalam praktik, keduanya sering mirip karena data yang disimpan biasanya sama. Untuk versi tabel databasenya, lihat ERD perpustakaan.