OOP Dependency-Inversion: Polemik Pisang, Monyet, dan Hutan!

Anjar Wicaksono
2 min readApr 19, 2019

--

Ada yang bilang, Pemrograman berorientasi objek atau Object oriented programming (OOP) ditulis terlalu panjang dan kesannya bertele-tele. Sehingga ada anekdot:

OOP itu ibarat demi memberi pisang pada seekor monyet, Anda harus membuat hutannya dulu.

Pertama, hal ini bisa saja harus terjadi, namun biasanya karena implementasi struktur yang salah.

PS: Saya menggunakan typescript sebagai bahasa pengantar.

Kasus awalnya adalah seperti berikut:

Dalam contoh di atas, saat kita ingin mendefinisikan pisang, kita terpaksa harus mendefinisikan monyet. Dan karena kita perlu mendefinisikan monyet, kita pun terpaksa harus mendefinisikan hutan.

Hal yang terlewatkan dari implementasi di atas adalah abstraksi. Abstraksi fokus pada peran, bukan pada asal-usul. Rantai ketergantungan antar class dapat diputus dengan penggunaan interface sebagai abstraksi.

Ya, begitulah kira-kira konsep interface dalam OOP menurut Pak Mario.

Nah, kita hanya menetapkan apa-apa saja yang mampu diberikan atau dilakukan oleh Makhluk Pemakan Pisang dan Produsen Pisang

Dengan demikian, hanya pada saat kita ingin membuat proses monyet (yang fitrahnya) memakan pisang, kita mulai membuat definisi dari seekor monyet.

dan hanya pada saat kita ingin membuat kondisi bahwa monyet tinggal di hutan, kita membuat definisi hutannya.

Kelebihan lain dari abstraksi adalah sebagai berikut:

Kenyataannya, makhluk yang makan pisang bukan hanya monyet.

Kenyataannya pula, tidak hanya hutan yang menjadi habitat yang cocok untuk tempat tinggal monyet atau makhluk lain penikmat pisang. Contohnya, kebun binatang mampu memberi pisang kepada makhluk-makhluk di dalamnya dengan membelinya terlebih dahulu dari petani.

Demikian, semoga dapat dipahami dan bermanfaat.

--

--