Pemrograman Berorientasi Objek memiliki banyak definisi. Pemrograman berorientasi objek dapat dikatakan sebagai paradigma atau mekanisme yang digunakan dalam pemrograman yang didasarkan oleh konsep objek dan kelas. Pada definisi lain, pemrograman berorientasi objek dapat dikatakan sebagai model pemrograman yang membangun perangkat lunak menggunakan pendekatan data atau objek dibandingkan dengan fungsi dan logika. Kedua definisi tersebut secara konsep menyatakan bahwa pemrograman berorientasi objek merupakan pemrograman yang berfokus pada struktur data dalam bentuk objek.
Sebelum membahas lebih mendalam mengenai pemrograman berorientasi objek, ada baiknya kita membahas apa itu objek. Pada kehidupan sehari - hari objek merupakan benda baik dalam wujud nyata maupun virtual yang dapat kita rasakan keberadaanya. Sebagai contoh, pena yang kita pegang untuk menulis, mobil / motor yang kita kendarai saat bepergian, kue yang kita makan, kucing yang kita pelihara, telefon yang kita gunakan untuk berkomunikasi, kesemuanya adalah benda nyata dan merupakan objek. Pembayaran tagihan melalui internet, sistem antrian tiket di bioskop, penyimpanan uang di bank, atau pengendalian komunikasi data pada port I/O komputer, meskipun bukan benda nyata, namun kesemuanya juga merupakan objek.
Pada bidang pemrograman, objek dapat dikatakan sebagai unit atau potongan dari program yang memiliki data (karakteristik) dan fungsi. Pemrograman berorientasi objek mengembangkan tingkat pemrograman yang semula menggunakan unit - unit fungsi menjadi unit - unit yang lebih kompleks sehingga dapat digunakan untuk membentuk objek - objek yang berbeda dari rancangan yang sama. Pada aplikasi dengan skala kompleksitas yang tidak terlalu tinggi, pemrograman berorientasi objek tidaklah lebih efektif dibandingkan pemrograman prosedural biasa. Namun seiring dengan semakin banyaknya jumlah dan jenis data yang harus diolah serta tingkat kompleksitas aplikasi yang terus meningkat, maka dibutuhkan sebuah rancangan atau potongan kode yang dapat digunakan secara berulang dan dapat dipelihara dengan mudah.
Kemudahan untuk dikembangkan, dapat digunakan secara berulang dan dapat dipelihara dengan mudah merupakan beberapa dari kelebihan pemrograman berorientasi objek. Pemrograman berorientasi objek menggunakan model data yang terdiri dari atribut atau properti dan fungsi. Sekilah, pemrograman berorientasi objek mirip dengan pemrograman prosedural biasa. Namun, pemrograman berorientasi objek membungkus variabel dan fungsi menjadi satu rancangan (class) yang dapat digunakan untuk membentuk beberapa objek atau data dengan kriteria yang berbeda - beda dan dapat diproses secara terpisah. Selain itu, rancangan ini dapat dikembangkan dengan diturunkan menjadi rancangan baru yang lebih spesifik atau biasa yang disebut dengan pewarisan (inheritance). Adapun perbedaan mendasar antara pemrograman berorientasi objek dan pemrograman prosedural adalah sebagai berikut :
Prosedural | Orientasi Objek |
Program dipecah-pecah ke dalam subprogram yang lebih sederhana biasanya dalam bentuk fungsi atau prosedur. | Fungsi dan data menjadi satu kesatuan rancangan yang disebut class yang dapat melahirkan objek - objek yang berbeda. |
Fokus utama pada prosedur dan fungsi. | Fokus utama pada rancangan class yang terdiri dari atribut dan fungsi. |
Struktur dari pemrograman berorientasi objek :
- Class, abstraksi / model / rancangan yang mendeskripsikan data (sifat karakteristik) dan fungsi dari objek yang terdiri dari atribut dan method.
- Object, wujud individu dari class atau biasa disebut instance dari kelas yang memiliki data yang spesifik.
- Attribute, variabel yang telah didefinisikan di dalam kelas yang menjadi fitur atau data dari objek atau biasa disebut state dari objek.
- Method, fungsi yang telah didefinisikan di dalam kelas yang berupa subrutin. Setiap objek akan memiliki method nya sendiri (instance methods) sesuai dengan method yang didefinisikan pada kelas. Method dapat digunakan untuk merubah nilai atribut suatu objek (merubah state), menerima informasi dari objek lain, mengirim informasi ke objek lain untuk melakukan sesuatu, dan lain sebagainya.
Prinsip utama pada pemrograman berorientasi objek :
- Encapsulation, variabel dan method dalam suatu objek dibungkus agar terlindungi yang dapat diakses melalui interface. Dengan enkapsulasi, setiap objek dapat memiliki variable dan method nya sendiri tanpa mempengaruhi objek lainnya.
- Inheritance, kelas dapat digunakan kembali untuk membentuk kelas lain dengan perubahan atau penambahan atribut dan method sesuai dengan kebutuhan.
- Polymorphism, objek - objek yang berbeda kelas namun secara hierarki kelas memiliki kelas parent yang sama dapat memiliki method yang sama namun dengan perubahan ataupun penambahan yang berbeda yang merupakan turunan dari kelas parent. Hal ini memungkinkan untuk mengurangi duplikasi kode dan kemampun mengakses objek - objek tersebut menggunakan interface yang sama.
- Abstraction, objek diakses melalui interface berupa methods dimana proses yang terjadi di dalam objek tidak terlihat oleh objek lain atau lingkungannya.