OOP atau Object Oriented Programming atau Pemrograman
Berorientasi Objek adalah suatu metode pemrograman yang berorientasi kepada
objek. Tujuan dari OOP diciptakan adalah untuk mempermudah pengembangan program
dengan cara mengikuti model yang telah ada di kehidupan sehari-hari. Jadi
setiap bagian dari suatu permasalahan adalah objek, dan objek itu sendiri
merupakan gabungan dari beberapa objek yang lebih kecil lagi.
1. Objek
Untuk mempermudah pemahaman, maka disini akan dijelaskan
melalui analogi. Pada dasarnya semua benda yang adadi dunia nyata dapat
dianggap sebagai objek. Misalnya rumah, mobil, sepeda, motor, gelas, komputer,
meja, sepatu, dll. Setiap objek memiliki atribut sebagai status (state) dan
tingkah laku sebagai behavior.
Dalam OOP, state disimpan pada variabel dan tingkah laku
disimpan pada method. Dalam bahasa teoretis OOP, Objek berfungsi untuk
membungkus data dan fungsi bersama menjadi satu unit dalam sebuah program
komputer. Objek merupakan dasar dari modularitas dan struktur dalam sebuah
program komputer berorientasi objek.
2. Class
Definisi class yaitu template untuk membuat objek. Class
merupakan prototipe atau blue prints yang mendefinisikan variabel-variabel dan
method-method secara umum. Objek merupakan hasil instansiasi dari suatu class.
Proses pembentukan objek dari suatu kelas disebut sebagai instantiation. Objek
disebut juga sebagai instances.
Dalam bahasa teoretis OOP, class merupakan kumpulan atas
definisi data dan fungsi-fungsi dalam suatu unit untuk suatu tujuan tertentu.
Sebagai contoh 'class of dog' adalah suatu unit yang terdiri atas
definisi-definisi data dan fungsi-fungsi yang menunjuk pada berbagai macam
perilaku/turunan dari anjing. Sebuah class adalah dasar dari modularitas dan
struktur dalam pemrograman berorientasi object.
Sebuah class secara tipikal sebaiknya dapat dikenali oleh
seorang non-programmer sekalipun terkait dengan domain permasalahan yang ada,
dan kode yang terdapat dalam sebuah class sebaiknya (relatif) bersifat mandiri
dan independen (sebagaimana kode tersebut digunakan jika tidak menggunakan
OOP). Dengan modularitas, struktur dari sebuah program akan terkait dengan
aspek-aspek dalam masalah yang akan diselesaikan melalui program tersebut. Cara
seperti ini akan menyederhanakan pemetaan dari masalah ke sebuah program
ataupun sebaliknya.
3. Attributes
Atribut adalah data yang membedakan antara objek satu dengan
yang lainnya.
Dalam class, atribut sering disebut sebagai variabel.
Atribut dibedakan menjadi dua jenis yaitu Instance Variable dan Class Variable.
Instance variable adalah atribut untuk tiap objek dari kelas
yang sama. Tiap objek mempunyai dan menyimpan nilai atributnya sendiri. Jadi,
tiap objek dari class yang sama bokeh mempunyai nilai yang sama atau berbeda.
Class Variable adalah atribut untuk semua objek yang dibuat
dari class yang sama. Semua objek mempunyai nilai atribut yang sama. Jadi semua
objek dari class yang sama mempunyai hanya satu nilai yang value nya sama.
4. Behavior
Behavior/tingkah laku adalah hal-hal yang bisa dilakukan
oleh objek dari suatu class. Behavior dapat digunakan untuk mengubah nilai
atribut suatu objek, menerima informasi dari objek lain, dan mengirim informasi
ke objek lain untuk melakukan suatu tugas (task).
Dalam class, behavior disebut juga sebagai methods. Methods
sendiri adalah serangkaian statements dalam suatu class yang menghandle suatu
task tertentu. Cara objek berkomunikasi dengan objek yang lain adalah dengan
menggunakan method.
5. Abstraksi
Abstraksi adalah kemampuan sebuah program untuk melewati
aspek informasi yang diproses olehnya, yaitu kemampuan untuk memfokus pada
inti. Setiap objek dalam sistem melayani sebagai model dari "pelaku"
abstrak yang dapat melakukan kerja, laporan dan perubahan keadaannya, dan
berkomunikasi dengan objek lainnya dalam sistem, tanpa mengungkapkan bagaimana
kelebihan ini diterapkan. Proses, fungsi atau metode dapat juga dibuat abstrak,
dan beberapa teknik digunakan untuk mengembangkan sebuah pengabstrakan.
dibagi menjadi 3, yaitu encapsulation
(enkapsulasi/pembungkusan), inheritance(pewarisan), serta polymorphisme(polimorfisme/perbedaan
bentuk).
Encapsulation adalah mekanisme pemrograman yang membungkus
kode dan data yang dimanipulasi dan menjaganya supaya terhindar dari
interferensi dan penggunaan yang tidak perlu. Salah satu caranya dengan
membentuk objek. Sedangkan manfaat encapsulation adalah :
(1)Menyembunyikan implementasi detil sebuah class, dan
menyediakan public method
(2)Memaksa pengguna untuk menggunakan method untuk mengakses
data
(3)Membuat kode lebih terpelihara
Mengapa Harus Di Enkapsulasi?
Karena ada informasi yang harus disembunyikan. Artinya anggota
dari suatu class bisa disembunyikan agar tidak bisa diakses dari luar.
Inheritance memungkinkan programer meletakkan member yang
sama dalam satu class dan class-class lain dapat mewarisi member tersebut.
Class yang mengandung member yang sama dari beberapa class lain dinamakan
superclass atau parent class. Class yang mewarisi dinamakan subclass atau child
class. Inheritance menghasilkan class hierarchy.
Keuntungan Pewarisan
Subclass menyediakan state/behaviour yang spesifik yang
membedakan dengan superclass, sehingga memungkinkan programmer untuk
menggunakan ulang source code dari superclass yang telah ada.
Programmer dapat mendefinisikan superclass khusus yang
bersifat generik, yang disebut abstract class (abstraksi), untuk mendefinisikan
class dengan tingkah laku dan state secara umum.
Single & Multiple Inheritance
Bahasa C adalah contoh multiple inheritance. Suatu class
diperbolehkan untuk mempunyai lebih dari satu superclass. Variabel dan method
yang diwariskan merupakan kombinasi dari superclass-nya. Java adalah contoh
single inheritance. Suatu class hanya boleh mempunyai satu superclass.
Multilevel Inheritance
Suatu subclass bisa menjadi superclass bagi class yang lain.
Polymorphisme artinya mempunyai banyak bentuk. Dua objek
atau lebih dikatakan sebagai polymorphic, bila objek-objek itu mempunyai antar
muka yang identik namun mempunyai perilaku-perilaku yang berbeda
Polimorfisme adalah kemampuan suatu obyek untuk mempunyai
lebih dari satu bentuk. Polimorfisme tidak bergantung kepada pemanggilan
subrutin. Metode tertentu yang berhubungan dengan sebuah pengiriman pesan
tergantung kepada objek tertentu di mana pesan tersebut dikirim. Contohnya,
bila sebuah burung menerima pesan "gerak cepat", dia akan menggerakan
sayapnya dan terbang. Bila seekor singa menerima pesan yang sama, dia akan
menggerakkan kakinya dan berlari. Keduanya menjawab sebuah pesan yang sama,
namun yang sesuai dengan kemampuan hewan tersebut. Ini disebut polimorfisme
karena sebuah variabel tungal dalam program dapat memegang berbagai jenis objek
yang berbeda selagi program berjalan, dan teks program yang sama dapat
memanggil beberapa metode yang berbeda di saat yang berbeda dalam pemanggilan
yang sama. Hal ini berlawanan dengan bahasa fungsional yang mencapai
polimorfisme melalui penggunaan fungsi kelas-pertama.