Pemrograman Object-Oriented dan Prosedural

506 Direktorat Pembinaan SMK | 2008

15.2. Perbedaan Object-Oriented dan Prosedural

Bagaimana desain object oriented berbeda dengan kode prosedural yang lebih tradisional? Akan sangat mudah untuk mengatakan bahwa perbedaan utamanya adalah kode berorientasi obyek memiliki object di dalamnya. Ini tidak betul. Dalam PHP kita akan sering menemukan kode prosedural menggunakan obyek. Kita juga mungkin sering melihat class-class yang mengandung kode prosedural di dalamnya. Keberadaan class tidak menjamin adanya desain berorientasi obyek, walau dalam bahasa pemrogramman Java sekalipun, yang notabene “memaksa” kita untuk melakukan apa pun di dalam class. Satu perbedaan utama antara kode berorientasi obyek dengan kode prosedural dapat dilihat dari bagaimana tanggung jawab responsibility didistribusikan. Kode prosedural akan berupa urut-urutan perintah dan method calls. Kode pemanggil controlling code cenderung bertanggung jawab untuk menghandle pengecekan kondisi if, then, else dst. Kontrol top-down ini – dalam pengembangan aplikasi– dapat menghasilkan duplikasi kode dan saling ketergantungan lintas antar proyek. Kode berorientasi obyek mencoba untuk meminimalisasi ketergantungan ini dengan cara memindahakan responsibility untuk meng-handle tugas-tugas dari client code ke dalam obyek-obyek di dalam system.

15.3. Pemrograman berorientasi objek

Objek adalah kumpulan variabel dan method fungsi yang saling berkaitan. Mungkin kita pernah menggunakan struct dalam C atau record dalam PascalDelphi? Dalam struct dan record, kita bisa mengumpulkan tipe-tipe variabel yang berlainan. Nah, objek adalah perkembangan dari struct. Dalam objek, kita bisa mengumpulkan variabel-2 dengan tipe yang boleh berbeda-2 dan fungsi-2 yang disebut method. Objek sebenarnya meniru konsep alam. Ilustrasinya seperti ini. Sebutlah suatu objek, misalnya anjing. Anjing memiliki kondisi: warna, tinggi, lapar, sakit, dll. Selain itu anjing juga memiliki hal-hal yang biasa dilakukan, seperti: menggonggong, menggigit, goyang ekor, dan lain-lain. Jadi kondisi pada alam misal anjing ditiru dengan Variabel sedangkan hal-hal yang biasa dilakukan ditiru dengan Method. penggabungan antara Variabel dan Method itulah yang disebut Enkapsulasi. Hal penting berikutnya dalam OOP adalah Message. Antara objek satu dengan objek yang lain berkomunikasi melalui Message. Ketika objek A ingin objek B melakukan sesuatu, maka objek A mengirim Message ke objek B. Contoh: Misalnya objek A adalah ICT. Objek B adalah Sepeda. Jika ICT ingin memindahkan gigi sepedanya ke gigi 5, maka ICT akan mengirim Message ke Sepeda 2008 | Direktorat Pembinaan SMK 507 diketahui sepeda memiliki kemampuanMethod pindahGigi berbunyi pindahGigi5. Lengkapnya dapat ditulis: Sepeda.pindahGigi5. Message itu akan dilaksanakan oleh Sepeda. Kemampuan pindahGigi memerlukan informasi gigi yang diinginkan, dalam hal ini 5. Maka sekarang Variabel nantinya kita sebut atribut gigi bernilai 5. Bicara tentang Class, kita bayangkan dalam contoh sebelumnya bahwa Sepeda milik ICT adalah sepeda gunung kita sebut SepedaGunung. Tentunya selain SepedaGunung terdapat sepeda lain seperti SepedaOnta, SepedaTandem, dll. Tapi yang jelas, jenis-jenis tadi termasuk Sepeda. Jadi Sepeda Gunung adalah Instance dari Sepeda. SepedaGunung memiliki atribut- atributseperti gigi, roda, panjang, pedal, dan lain-lain juga kemampuanseperti pindahGigi, belok, dll Sepeda. Ada perbedaan antara Object dan Class. Class adalah blue print atau rancangan dari Object. Jadi dengan satu Class, kita dapat membuat berapapun Object. Inheritance adalah pewarisan sifat. Sebuah Subclass akan mewarisi sifat dari Superclass- nya. Dalam contoh di atas, Sepeda Gunung akan memiliki atribut gigi, roda dan panjang dan juga kemampuannya yaitu pindah Gigi dan belok. Tetapi Subclass tidak harus hanya memiliki sifat dan kemampuan yang sama persis dengan Superclassnya, tetapi biasanya ditambahkan sifat dan kemampuan lain yang membedakannya dengan Subclass lain dengan Superclass yang sama. Itulah yang membuat SepedaGunung dan SepedaOnta berbeda. Subclass juga dapat melakukan Override terhadap sifat dan kemampuan warisan Superclassnya. Misalnya yang dilakukan oleh SepedaTandem. SepedaTandem memiliki lebih dari dua roda dan juga pedal sehingga perlu memiliki kemampuan untuk mengaturnya. Sehingga suatu kemampuan warisan dari class Sepeda dapat diganti atau ditambahkan. Interface membuat satu class dapat berinteraksi dengan class lain yang benar-benar berbeda. Misalnya dalam Show Room yang menjual Mobil, Motor juga Sepeda. Tentu saja ManajerShowRoom harus bisa mengatur sepeda-sepeda bersama dengan Mobil-2 dan Motor-2. Masalahnya adalah perbedaan class yang sangat mencolok. Interface mengatasinya dengan cara:  Mencari persamaan antara class-2 yang berbeda tanpa memaksa class tersebut saling berhubungan.  Membuat method yang ingin diterapkan pada class-class. Istilah-istilah yang digunakan dalam pemrograman berorientasi objek  Class adalah blueprint atau prototype dari object-objec tertentu yang memiliki kesamaan variable dan method.  Object atau insance of class merupakan software yang mengemas variable-variable dan methodmethod menjadi satu kesatuan.  Attribute adalah suatu bentuk karakteristik atau status dari suatu object.  Method atau behavior dari object adalah action yang bisa di kerjakan oleh suatu object