Mini Project: Aplikasi Berbasis OOP

Pertemuan 15 - Konsolidasi Object-Oriented Programming

"Menyatukan Class, Interface, dan Pewarisan ke dalam Satu Sistem"

Tujuan Mini Project

Mini project ini bertujuan untuk menguji pemahaman arsitektur OOP Anda dengan mengimplementasikan konsep abstrak ke dalam studi kasus aplikasi fungsional.

📊 BOBOT PENILAIAN

Mini Project bernilai 50% dari nilai UAS

Project ini adalah pembuktian Anda mampu merancang sistem berskala menengah.

🎯 Target Pencapaian

  • Design Pattern Dasar: Merancang Class Diagram (UML) yang masuk akal.
  • Implementasi SOLID: Menerapkan pemisahan tugas (Single Responsibility) antar class.
  • Kolaborasi Tim: Berbagi peran antara perancang alur (arsitek) dan eksekutor kode (programmer).

Pilihan Topik Mini Project

Pilih salah satu dari empat arsitektur sistem berikut:

🛒 Sistem E-Commerce Mini

Fokus: Polymorphism pada Produk dan Pembayaran.

  • Class Product (Fisik & Digital)
  • Class Cart (Agregasi)
  • Interface PaymentGateway
🏥 Sistem Manajemen RS

Fokus: Relasi Antar Objek & Encapsulation.

  • Class Pasien & Dokter
  • Class RekamMedis
  • Class Tagihan (Billing System)
🎓 Sistem Akademik Kampus

Fokus: Inheritance (Pewarisan) & Access Modifier.

  • Class abstrak CivitasAkademik
  • Class Dosen & Mahasiswa
  • Class KRS (Kartu Rencana Studi)
🏨 Sistem Reservasi Hotel

Fokus: Exception Handling & Interface.

  • Class Kamar (Standar, Suite, Deluxe)
  • Proses CheckIn & CheckOut
  • Exception KamarPenuhException

Komponen Wajib OOP

Aplikasi Anda wajib mengimplementasikan 5 Pilar berikut di dalam source code PHP-nya:

1. Encapsulation & Constructor

Gunakan private/protected untuk properti, lalu buat Getter/Setter.

2. Inheritance (Pewarisan)

Harus ada minimal 1 class Induk (Parent) dan 2 class Anak (Child) yang menggunakan extends.

3. Polymorphism & Interface

Gunakan implements untuk menstandarisasi behavior, dan manfaatkan Type Hinting pada parameter method.

4. Relasi Objek (Agregasi / Komposisi)

Satu class harus memanggil/memiliki object dari class lain di dalamnya (misal: Keranjang berisi array Objek Produk).

5. Exception Handling

Harus ada minimal 1 blok try...catch dan throw new Exception untuk menangani error bisnis (contoh: saldo kurang, stok habis).

Integrasi Frontend & Backend (OOP)

Sistem ini merupakan gabungan antara Form HTML biasa yang memicu proses pembuatan (Instansiasi) Objek di PHP.

Demo: Simulator Instansiasi Objek (E-Commerce)

Pembagian Tugas Tim

Setiap tim terdiri dari 3 orang. Karena ini aplikasi OOP, peran difokuskan pada perancangan logika dan arsitektur.

ROLE 1: SYSTEM ARCHITECT (Ketua Tim)
Tugas:
  • Mendesain *UML Class Diagram* (Blueprint aplikasi).
  • Menentukan properti mana yang *private*, dan method apa yang digunakan.
  • Mengatur *Exception Handling* (Skenario error).
ROLE 2: BACKEND/OOP ENGINEER
Tugas:
  • Menulis file PHP murni yang berisi struktur OOP (Class, Interface, Abstrak).
  • Memastikan konsep Inheritance dan Polymorphism berjalan tanpa *error*.
  • Membuat fungsi pengolahan data utama.
ROLE 3: FULLSTACK INTEGRATOR
Tugas:
  • Mendesain Form HTML/CSS antarmuka pengguna (UI).
  • Menangkap data `$_POST` dari Form, lalu melakukan instansiasi objek PHP (contoh: `$obj = new Transaksi($_POST['data']);`).
  • Menampilkan hasil dari Objek ke dalam HTML (View).

Cara Pengumpulan Tugas

📤 Instruksi Pengumpulan

a) Dikumpulkan melalui portal S-Learn.

b) Hanya ketua Tim (Architect) yang upload.

c) Upload dalam bentuk ZIP Folder via Google Drive, berisi:

  • Source Code PHP (Terdiri dari file Class dan file UI HTML).
  • Class Diagram (UML) dalam bentuk gambar JPG/PNG.
  • Dokumen Laporan (Penjelasan penerapan 5 pilar OOP di kode Anda).

DEADLINE & PRESENTASI

Project dikumpulkan minggu depan. Persiapkan presentasi singkat selama 10 menit untuk mendemokan hasil kerja tim Anda.