Skip to content

M02 · Bab 10± 45 menitDraf AI

Prinsip Desain OOP (SOLID)

Tujuan belajar

  • Menjelaskan kelima prinsip SOLID dengan contoh backend sebelum/sesudah
  • Menilai desain lewat coupling dan cohesion
  • Menerapkan dependency inversion dengan interface dan constructor injection
  • Mengenali code smell umum dan refactoring kecil untuk memperbaikinya
  • Menimbang DRY, KISS, dan YAGNI agar tidak terjebak over-engineering

Prasyarat: Package, Import, dan Struktur Project

Kuis

5 soal · lulus bila minimal 70% benar

1.Square extends Rectangle meng-override setWidth dan setHeight agar sisi selalu sama. Method resize(Rectangle r) memanggil r.setWidth(5); r.setHeight(4); return r.area();. Apa output resize(new Square())?
2.Class ReportService mengambil data penjualan, membuat PDF, dan mengirim email. Tim marketing minta ganti template email, tim keuangan minta ganti rumus komisi, dan setiap perubahan sering merusak bagian lain. Prinsip apa yang dilanggar?
3.OrderService membuat new MySqlOrderRepository() di dalam constructor-nya sendiri, sehingga unit test-nya selalu butuh database. Perbaikan yang paling tepat?
4.Interface PaymentMethod mewajibkan charge() dan refund(). Class CashOnDelivery terpaksa menulis refund() yang melempar UnsupportedOperationException. Prinsip apa yang paling tepat menggambarkan masalahnya?
5.Fitur baru hanya butuh satu cara kirim email. Seorang developer langsung membuat interface, abstract class, factory, dan konfigurasi plugin "agar siap kalau nanti ada SMS dan WhatsApp". Bagaimana menilainya?

Jawab semua soal dulu (0/5)