Unified Modeling Language (UML)

"Cetak Biru (Blueprint) Perangkat Lunak"

Object-Oriented Programming (OOP) PHP

Pertemuan 14 - Bagian 2

Tujuan Pembelajaran

  • Mahasiswa memahami pentingnya pemodelan visual sebelum menulis kode (koding).
  • Mahasiswa mengenal standar bahasa visual UML (Unified Modeling Language).
  • Mahasiswa mampu membaca dan merancang Use Case Diagram dan Class Diagram.
  • Mahasiswa mampu menerjemahkan panah relasi UML (Inheritance, Agregasi, Komposisi) ke dalam bentuk kode PHP.

Analogi: Arsitek vs Programmer

Jika Anda meminta tukang bangunan untuk membuat rumah tingkat 3 tanpa memberikan gambar denah, rumah itu mungkin akan rubuh karena fondasinya asal-asalan.

Mengapa Harus Menggambar Dulu?

Sama halnya dengan membuat aplikasi. UML adalah denah arsitektur untuk programmer.

Sebelum kita mengetik class, extends, atau __construct(), kita harus memetakan siapa saja entitas yang terlibat dan bagaimana mereka saling mengobrol.

UML menjadi bahasa standar global. Programmer dari Indonesia, Amerika, atau Jepang bisa saling memahami arsitektur aplikasi walau hanya dengan melihat diagram panah UML.

Jenis-Jenis Diagram UML

UML memiliki banyak jenis diagram, namun dalam OOP, ada dua yang paling wajib Anda kuasai:

  1. Use Case Diagram (Behavioral):
    Menggambarkan apa yang bisa dilakukan oleh sistem dari sudut pandang interaksi pengguna (Aktor). Contoh: Admin bisa login, Pembeli bisa checkout.
  2. Class Diagram (Structural):
    Menggambarkan struktur statis dari sistem. Ini adalah visualisasi langsung dari kode OOP Anda (Class, properti, method, dan panah relasinya).

Mari kita bedah terlebih dahulu mengenai Use Case Diagram sebelum masuk ke hal teknis Class Diagram.

Komponen Use Case Diagram

Use Case Diagram berfungsi memetakan fungsi sistem. Ada 3 komponen utama yang wajib digambar:

1. Actor (Aktor) — Simbol Stick Figure (Orang)
Mewakili peran pengguna manusia atau sistem eksternal lain yang berinteraksi dengan sistem kita. Contoh: Customer, Admin, Sistem Bank.
2. Use Case — Simbol Oval/Elips
Mewakili fungsi, fitur, atau fungsionalitas utama yang disediakan sistem. Penamaan wajib menggunakan kata kerja. Contoh: Login, Tambah Produk, Checkout Pesanan.
3. System Boundary — Simbol Kotak Persegi Panjang
Membatasi ruang lingkup sistem. Seluruh Use Case (Oval) berada di dalam kotak, sedangkan Actor berada di luar kotak.

Relasi Use Case: Include vs Extend

Menghubungkan antar use case menggunakan garis panah putus-putus bertuliskan stereotip khusus:

➔ <<include>> (Relasi Keharusan/Wajib)
Menandakan bahwa Use Case target wajib dijalankan agar Use Case asal bisa berhasil.

Contoh: Ketika pembeli melakukan Use Case Checkout Pesanan, maka sistem secara otomatis harus memanggil Use Case Login Akun terlebih dahulu.
➔ <<extend>> (Relasi Perluasan/Opsional)
Menandakan perluasan fungsi yang hanya berjalan pada kondisi tertentu (kondisional/pilihan).

Contoh: Saat melakukan Use Case Bayar Tagihan, pembeli *bisa memilih* untuk menjalankan Use Case Klaim Voucher Diskon (jika punya voucher). Jika tidak punya, use case utama tetap berjalan lancar.

Simulasi: Visualisasi Use Case

Klik komponen di bawah ini untuk melihat gambaran visual dan alur logika sebuah Use Case Diagram pada sistem E-Commerce.

Klik tombol di atas untuk merangkai diagram Use Case...

Anatomi Sebuah Class Diagram

Setelah alur hak akses dipetakan di Use Case, kita breakdown strukturnya di Class Diagram. Satu Class divisualisasikan sebagai kotak yang dibagi menjadi 3 baris beserta simbol Visibility:

Mahasiswa
- nim : string
+ nama : string
# nilai : float

Panah Relasi UML (Bagian 1)

Mengingat kembali materi pertemuan 12, relasi antar class digambarkan dengan jenis panah yang berbeda-beda:

Simbol Panah Nama Relasi Arti / Keyword PHP
───▷ Inheritance
(Generalization)
Garis lurus dengan panah segitiga kosong. Anak mewarisi Induk.
Keyword: extends
- - - ▷ Realization Garis putus-putus dengan panah segitiga kosong. Mengimplementasikan kontrak.
Keyword: implements
- - - > Dependency Garis putus-putus dengan panah biasa. Menggunakan sementara (misal sbg parameter fungsi).

Panah Relasi UML (Bagian 2)

Ini adalah relasi "Has-A" atau kepemilikan struktur di dalam objek.

Simbol Panah Nama Relasi Arti di PHP
───── Association Garis lurus biasa. Berdiri sejajar. Dosen berelasi dengan Mahasiswa.
◇──── Aggregation
(Has-A Lemah)
Belah ketupat KOSONG di sisi induk. Objek di-inject dari luar. Jika induk musnah, anak tetap hidup. (Contoh: Keranjang belanja & Produk).
◆──── Composition
(Has-A Kuat)
Belah ketupat HITAM di sisi induk. Objek dibuat di dalam __construct induk. Jika induk mati, anak PASTI ikut mati. (Contoh: Mobil & Mesin).

Simulasi: Penerjemah Garis Class Diagram ke PHP

Pilih jenis panah UML di bawah ini untuk melihat bagaimana panah tersebut diterjemahkan secara nyata ke dalam kode PHP.

Silakan klik salah satu tombol panah UML di atas.

Kesimpulan

UML (Unified Modeling Language) adalah jembatan emas antara ide manusia dan kode mesin.

  • Use Case Diagram memastikan fungsionalitas sistem dari kacamata user terakomodasi secara terstruktur sejak awal.
  • Class Diagram memastikan properti, method, dan *visibility* kita konsisten sebelum koding dimulai.
  • Satu garis panah di UML (seperti belah ketupat hitam Komposisi) memiliki dampak besar pada memori dan cara kita menyusun *constructor* di PHP.