Pilar OOP

Ketika saya mencari-cari ada berapa pilar sebenarnya dalam oop, saya belum menemukan jawaban pasti ada yang berkata tiga (Encapsulation, Polymorphism dan Inheritance), empat (Abstraction, Encapsulation, Polymorphism dan Division of Responsibility), bahkan lima (Encapsulation, Data Hiding, Specialization, Polymorphism dan Inheritance). Lalu ada berapa pilar sebenarnya? saat ini saya hanya berpikir benyaknya pilar adalah bukti bahwa oop telah berkembang, itu saja dan tiga, emapat, atau lima, semuanya adalah benar.

Abstraction

Abstraction merupakan karakteristik dasar dari sebuah object yang membuatnya berbeda dengan object lain. Namum pebedaan itu bergantung pada perspektif, artinya beberapa hal penting yang mungkin penting dari sebuah konteks, akan menjadi tidak penting pada konteks yang lainnya.

Analoginya seperti ini, misalkan ada sebuah object Product. Ketika dalam sistem Shipping, maka attribut Size dan Weight itu penting, namun attribut Warna tidaklah penting. Tapi ketika object Product ini digunakan dalam Point Of Sales, maka attribut Warna & Harga Satuan menjadi hal yang penting disitu. Atau dalam contoh lain, seorang Sopir tidak perlu tahu bagimana mesin mobil bekerja, bagaimana timing pengapiannya, bagaimana setting ECU nya, yang penting dia bisa injak gas dan mobil jalan, selesai. Tapi lain halnya jika mobil itu di tangan seorang mekanik/bengkel, dimana object-object yang tadi tidak berguna untuk Sopir, namun jadi sangat penting bagi seorang mekanik/bengkel.

Dalam pengembanan aplikasi kemampuan menggabungkan konsep abstraction ini penting, karena biasanya kita hanya terpaku pada bagian tertentu dari property sebuah object tertentu tanpa mampu memilah-milah properties mana yang digunakan untuk konteks tertentu dan mana yang tidak perlu untuk digunakan.

Encapsulation

Biasa disebut juga dengan data binding, yaitu menyembunyikan informasi/bagaimana sesuatu itu dilakukan. Misalkan, ketika Sopir menginjak REM, maka dia tidak perlu bagaimana cara kerja rem itu, bagaimana cara kerja kaliper dalam menjepit disk brake dan lain sebagainya. Tapi yang jelas dia harus tahu, kalau mau memperlambat mobil, maka injak rem.

Jadi programmer harus bisa memberikan batas pada object dan menghilangkan ketergantungan terhadap implementasi. Artinya setiap object mempunyai implementasi sendiri yang terpisah, sehingga lebih memudahkan saat maintain. Disinilah perbedaan dengan pemrogramman terstruktur yang cenderung berorientasi pada urutan sebuah proses cara pemecahan masalah, sedangkan dalam oop adalah object mana yang bisa memecahkan masalah.

Modularity

Dengan OOP, sebuah sistem yang komplek dibangun dari beberapa object-object kecil yang sederhana. Object dibangun satu persatu secara independent, namum interaksi antar object tetap harus diperhatikan.

Memahami sebuah sistem Point Of Sales mungkin akan berat. Namun jika kita bagi menjadi bagian-bagian kecil semisal Inventory, Penjualan, Pembelian, Accounting dan bagian lainnya, maka akan lebih mudah, seberapapun kompleksnya. Dan mungkin object-object itu akan dipecah menjadi beberapa bagian lebih kecil lagi dan seterusnya.

Atau dalam kasus lainnya, saat bekerja secara tim. Dimana Tim A mengerjakan Modul Pembelian, Tim B mengejakan Modul Penjualan, Tim C mengerjakan Modul Inventory. Bayangkan bila ketiga tim bekerja bersama-sama kalau aplikasi tidak dipecah, dan tidak mengenal Versioning Control. Jadi malah tumpang tindih dan ga jelas siapa mengerjakan apa, semua semrawut jadi satu.

Hirarki

Setelah Abstraction, Encapsulation dan memecah menjadi bagian-bagian kecil dengan Modularity, maka akan tercipta sebuah pola hirarki. Sebuah program yang kompleks jika tidak bisa diketahui bagaimana pola hirarki nya, ya pasti susah dipahami apalagi mau dibuat. Hirarki ini juga bisa dibilang sebagai hasil dari proses pengurutan dan penataan dari satu atau beberapa Abstraction hingga hasilnya menjadi sebuah pohon hirarki.

Dengan pendekatan OOP, maka mendesign sebuah program justru jauh lebih mudah daripada struktural. Karena lebih jelas dan lebih terstruktur dengan baik, dimana sebelumnya terstruktuk berdasarkan urutan cara kerjanya, dengan PBO tersetruktur berdasarkan Object-nya.

Aggregation

Aggregation dapat diartikan sebagai sebuah object yang terdiri dari beberapa object lainnya yang bekerja bersama. Misalnya, Object Mobil kan terdiri dari Object Roda, Object Chasis, Object Mesin dll. Object Roda terdiri dari Object Velg, Object Ban Dalam, Object Ban Luar dan seterusnya. Itulah Aggregation.

results matching ""

    No results matching ""