Pemrograman Berorientasi Objek

Object-oriented design is the roman numerals of computing

Rob Pike

Pemrograman berorientasi objek (Object Oriented Programming atau disingkat OOP) adalah sebuah paradigma pemrograman yang berorientasi pada objek dan menyelesaikan permasalahan berdasarkan pendekatan objek. Tujuan dari OOP diciptakan adalah untuk mempermudah pengembangan program dengan cara mengikuti model yang telah ada dalam kehidupan sehari-hari. Setiap bagian dari suatu permasalahan, sebenarnya adalah objek.

Sebelum OOP, pendekatan yang digunakan dalam pemrograman adalah murni terstruktur dan prosedural. Pemrograman terstruktur melihat program sebagai urutan (sequence) instruksi-instruksi yang akan dikerjakan yang terdiri dari variabel-variabel. Pemrograman berorientasi objek ditemukan pada tahun 1960 untuk menjawab kebutuhan sistem yang semakin lama semakin kompleks. Perlu ada metode yang menyelesaikan suatu permasalahan dengan pendekatan objek-objek yang terkait dalam permasalahan tersebut.

Pemrograman berorientasi objek dalam melakukan pemecahan suatu masalah tidak melihat bagaimana cara menyelesaikan suatu masalah tersebut (terstruktur) tetapi objek-objek apa yang dapat melakukan pemecahan masalah tersebut. Sebagai contoh sebuah departemen yang memiliki seorang manager, sekretaris, petugas administrasi data dan lainnya. Jika manager ingin memperoleh data dari bagian administrasi maka manager tersebut tidak harus mengambilnya langsung tetapi dapat menyuruh petugas bagian administrasi untuk mengambilnya. Pada kasus tersebut seorang manager tidak harus mengetahui bagaimana cara mengambil data tersebut tetapi manager bisa mendapatkan data tersebut melalui objek petugas administrasi. Jadi untuk menyelesaikan suatu masalah dengan kolaborasi antar objek-objek yang ada karena setiap objek memiliki deskripsi tugasnya sendiri.

Ide dasar pada OOP adalah mengkombinasikan data dan fungsi untuk mengakses data menjadi sebuah kesatuan unit yang dikenal dengan nama objek. Objek adalah struktur data yang terdiri dari data dan fungsi dan interaksi objek dalam program komputer. Semua data dan fungsi ini dibungkus dalam kelas-kelas atau objek-objek. Setiap objek dapat menerima pesan, memproses data, dan mengirim pesan ke objek lainnya.

Pemrograman berorientasi objek bekerja dengan baik ketika dibarengi dengan Objek-Oriented Analysis And Design Process (OOAD). Jika membuat program berorientasi objek tanpa OOAD, seperti membangun rumah tanpa terlebih dahulu penganalisis apa saja yang dibutuhkan oleh rumah itu, tanpa perencanaan, tanpa blue-print, tanpa menganalisis ruangan apa saja yang diperlukan, seberapa besar rumah yang akan dibangun dan sebagainya.

Keuntungan OOP

1. Reusability

Reusability atau dapat digunakan kembali. Suatu objek adalah entitas yang memiliki kumpulan data dan fungsi yang dapat berinteraksi dengan objek lain. Suatu objek dapat mencukupi atau mungkin memiliki ketergantungan terhadap objek lain. Tetapi suatu objek biasanya dikembangkan untuk memecahkan serangkaian masalah tertentu. Jadi, ketika seorang developer menderita dari serangkaian masalah yang sama, mereka bisa memasukkan class yang dibuat developer lain ke dalam proyeknya dan menggunakannya tanpa mempengaruhi alur kerja yang ada. Ini mencegah D.R.Y, yang berarti “Don’t Repeat Yourself”. Dalam pemrograman fungsional atau modular, menggunakan kembali dimungkinkan tetapi rumit.

2. Easy Refactoring

Code refactoring dalam pemrograman ibarat merapikan sirkuit kabel yang sudah terlanjur semrawut dan tidak beraturan, menjadi lebih teratur dan lebih mudah dirawat dengan tetap mempertahankan fungsionalitas yang sama. Ketika perlu memperbaiki sebuah program tertentu, OOP memberi manfaat maksimal, karena semua objek adalah entitas kecil yang mengandung data dan fungsinya sebagai bagian dari dirinya sendiri, sehingga proses refactoring menjadi relatif lebih mudah.

3. Extensible

Extensible atau dapat diperluas. Salah satu fitur inti OOP adalah ekstensibilitas. Karena sebuah program OOP terdiri dari objek-objek, maka sebuah program dapat diperbaiki dan dikembangkan terus menerus dengan menambahkan fitur-fitur tertentu melalui penambahan objek-objek lain, tanpa mengubah program sebelumnya. Kompatibilitas mundur program masih dapat dipertahankan atau sebuah kelas dapat dengan mudah diperluas fungsionalitasnya.

4. Maintenance

Kode program berorientasi objek lebih mudah dipelihara karena mengikuti konvensi pengkodean yang ketat dan ditulis dalam format penjelasan sendiri. Sebagai contoh, ketika seorang developer memperluasnya, merefaktorinya, atau mendebugnya, mereka dapat dengan mudah mengetahui struktur pengkodean bagian dalam dan mempertahankan kode dari waktu ke waktu. Selain itu, setiap kali ada lingkungan pengembangan tim di proyek Anda, OOP bisa menjadi solusi terbaik karena Anda dapat mendistribusikan kode anda setelah membaginya menjadi bagian-bagian kecil. Bagian-bagian kecil ini dapat dikembangkan sebagai objek terpisah, sehingga developer dapat mengembangkannya hampir secara mandiri. Akhirnya, akan sangat mudah untuk menggabungkan kode.

5. Efisiensi

Konsep pemrograman berorientasi objek sebenarnya dikembangkan untuk efisiensi dan kemudahan proses pengembangan yang lebih baik. Beberapa pola desain dikembangkan untuk membuat kode yang lebih baik dan efisien. Selain itu di OOP, Anda dapat memikirkan solusi Anda dalam pendekatan yang jauh lebih baik daripada pemrograman prosedural. Karena Anda pertama kali membagi masalah Anda menjadi satu set kecil masalah dan kemudian menemukan solusi untuk masing-masing masalah tersebut, masalah besar diselesaikan secara otomatis

Konsep Dasar OOP

  • Abstraction
  • Encapsulation
  • Polymorphism
  • Inheritance
  • Class
  • Object

Abstraction (Abstraksi)

Abstraksi adalah suatu cara melihat suatu objek dalam bentuk yang sederhana. Sebagai contoh jika kita melihat sepeda motor. Kita tidak perlu melihat susunan komponen mesin dan dukungan elektriknya yang cukup kompleks dan rumit, namun kita bisa melihat sepeda motor itu sebagai sebuah entitas / satuan tunggal (single entity) yang merupakan sebuah objek yang mempunyai sifat dan karakteristik tersendiri. Dengan pemikiran yang sederhana ini maka ketika kita mengendarai sepeda motor tersebut kita tidak perlu tahu betapa rumit komponen dan rangkaian yang menyusun sepeda motor. Karena untuk mengendarai sepeda motor yang perlu diketahui adalah bagaimana sepeda motor itu bisa dikendalikan. Sehingga dengan konsep abstraksi ini kita bisa melihat suatu sistem yang kompleks yang terdiri dari subsistem-subsistem yang rumit dan banyak bisa dipandang menjadi sebuah paket sistem yang sederhana.

Encapsulation (Enkapsulasi)

Enkapsulasi atau pembungkusan merupakan penggabungan potongan-potongan informasi dan perilaku-perilaku spesifik yang bekerja pada informasi tersebut, kemudian mengemasnya menjadi sesuatu yang disebut objek. Enkapsulasi berarti juga proses untuk memastikan pengguna sebuah objek tidak dapat menggantikan keadaan dari objek tersebut dengan cara yang tidak sesuai prosedur. Hanya metode yang terdapat dalam objek tersebut yang diberi izin untuk mengakses keadaan yang diinginkan. Setiap objek mengakses interface yang menentukan bagaimana objek lainnya dapat berkomunikasi dengannya. Objek lainnya tidak akan mengetahui representasi didalam objek tersebut (Information Hiding).

Inheritance (Pewarisan)

Pengertian inheritance adalah suatu objek dapat memiliki objek turunan (child). Disamping itu, suatu objek dapat juga merupakan turunan dari objek lain (parent). Objek turunan memiliki sifat dan perilaku yang diwarisi dari induknya, namun juga ada beberapa sifat dan perilaku tambahan (extends) yang merupakan perluasan dari sifat dan perilaku induknya.

Polymorphism (Polimorfisme)

Polimorfisme berarti banyak bentuk. Sebuah objek memiliki identitas yang sama, namun berbeda bentuk. Meskipun objek-objek tersebut memiliki bentuk yang berbeda, namun sebenarnya objek tersebut memiliki kesamaan yang fundamental. Contohnya: objek kursi yang berbeda-beda bentuk. Ada kursi yang panjang, ada sofa, ada bangku sekolah, namun pada dasarnya semua adalah kursi yang berfungsi sebagai tempat duduk.

Polimorfisme juga berarti banyak operasi. Dalam mengerjakan sebuah kegiatan yang sama, beberapa objek dapat mengerjakannya secara berbeda. Contohnya: Ada mobil yang membuka pintu dengan dibuka kesamping, ada juga mobil yang membuka pintu dengan dibuka keatas. Kegiatan yang dilakukan adalah sama, yaitu membuka pintu. Namun dikerjakan secara berbeda-beda oleh objek-objek lain.

Class (Kelas)

Kelas merupakan penggambaran satu set objek yang memiliki atribut yang sama. Kelas mirip dengan tipe data pada pemrograman non objek, akan tetapi lebih komprehensif karena terdapat struktur sekaligus karakteristiknya. Kelas baru dapat dibentuk lebih spesifik dari kelas pada umumnya. Kelas merupakan jantung dalam pemrograman berorientasi objek.

Object (Objek)

Objek adalah entitas yang memiliki atribut atau karakteristik, dan perilaku yang kadang kala disertai kondisi. Setiap objek melekat 3 hal, yaitu: identitas, karakteristik, perilaku. Objek adalah sebuah benda yang konkrit maupun benda abstrak. Objek adalah representasi dari segala sesuatu.

Dalam pemrograman, objek merupakan realisasi dari sebuah class. Jika class adalah blueprint, maka objek adalah hasil realisasi class. Objek ini memiliki nama (identitas), sifat dan karakteristik (variable), dan tingkah laku/operasi (method).

Objek tidak hadir dalam kesendirian. Objek selalu berinteraksi dengan objek lain. Hubungan antar objek-objek dapat berupa:

  • Generalization. Objek tertentu merupakan generalisasi dari objek lain.
  • Association. Objek tertentu berasosiasi (berhubungan) dengan objek lain.
  • Aggregation. Objek tertentu merupakan gabungan dari beberapa objek lain.
  • Composition. Objek tertentu merupakan komposisi dari beberapa objek lain.
  • Multiplicity. Jumlah objek yang berpartisipasi dalam sebuah relasi

Leave a Reply

Your email address will not be published. Required fields are marked *