Apa itu Object-Oriented Programming?
Object-Oriented Programming adalah pola programming yang membahas mengenai object/entitas dalam sebuah program. OOP berusaha untuk merepresentasikan dunia nyata dalam bentuk object yang memiliki atribut dan behavior yang terkait. Object dianggap sebagai elemen utama yang memiliki kemampuan untuk berinteraksi satu sama lain melalui metode dan pesan yang dikirimkan.
Tujuan OOP
OOP bertujuan untuk menyederhanakan masalah yang kompleks ke dalam potongan-potongan kecil (blocks) yang lebih mudah untuk dikerjakan, terutama untuk pengembangan yang kolaboratif dan melibatkan banyak tim.
Block-block program tersebut bisa digunakan kembali dalam program yang sama ataupun berbeda. Proses maintain dan modifikasi juga bisa lebih mudah dilakukan tanpa memengaruhi block lainnya.
Prinsip encapsulation juga membuat data menjadi lebih aman karena data disembunyikan dari pihak-pihak lainnya.
Konsep Dasar OOP
a) Object
Object dalam OOP adalah benda/sesuatu dari dunia nyata yang datanya ingin kita simpan atau proses. Misalnya, object adalah meja, kursi, kucing, transaksi pembayaran, dsb. Object diartikan sebagai data yang memiliki atribut dan behavior yang unik.
b) Class
Class adalah template untuk membuat object, mudahnya class adalah cookie cutter dan object adalah cookie yang dicetak.
Class memiliki properties (atribut) untuk mendeskripsikan data apa saja yang akan dimiliki sebuah objek serta methods untuk menerangkan apa saja yang bisa dilakukan sebuah objek. Nantinya, masing-masing object akan diberi value atribut yang berbeda sehingga masing-masing object menjadi unik.
Misalkan, kita memiliki class Kucing. Class kucing ini memiliki atribut warna bulu, nama, dan warna mata serta method berlari, makan, dan tidur. Dalam class kucing, terdapat objek mainecoon, persia, dan anggora. Ketiga object tersebut akan memiliki atribut yang sama namun dengan value yang berbeda. Mainecoon, persia, dan anggora sama-sama memiliki warna bulu, nama, dan warna mata. Namun mainecoon memiliki warna bulu hitam, dengan nama Molly dan warna matanya hijau, sementara persia warna bulunya oranye, bernama Oyen, dan warna matanya biru.
c) Inheritance
Inheritance adalah pewarisan atribut sebuah class kepada class lainnya. Misalkan, terdapat class Person dengan atribut nama, umur, dan alamat. Terdapat pula dua class lainnya yakni Customer dan Employee. Jika kita mewariskan class Person kepada Customer dan Employee, dua class tersebut akan mewarisi atribut yang sama dengan class Person. Namun, masing-masing class Customer dan Employee tentunya akan memiliki atribut yang berbeda sehingga dua class tersebut unik. Person disebut superclass, sementara Customer dan Employee disebut subclass.
d) Polymorphism
Subclass yang berbeda dari dari superclass yang sama bisa mengimplementasikan interface (method) yang diwariskan dalam cara yang berbeda. Misalnya, pada class Employee dan Customer sama-sama mewarisi sifat dari class Person yakni bisa menyimpan data di database. Namun, Employee dan Customer akan menyimpan datanya di database yang berbeda.
e) Abstraction
Abstraction sederhananya adalah simplifikasi dari objek/benda yang ada di dunia nyata. Berfokus hanya pada data dan proses yang relevan dengan program yang dikembangkan. Jika kita melihat dunia nyata, seorang Person (orang) tentunya memiliki banyak sifat (atribut) yang bisa menerangkan dirinya. Seorang mahasiswa bisa jadi memiliki nama, alamat, NPM, hobi, game yang dimainkan, apa laptop yang digunakan, data tentang tempat wisata yang pernah dikunjungi, dsb. Namun, jika kita sedang membangun Sistem Database Mahasiswa, tentunya kita akan memerlukan data yang relevan saja, seperti nama, alamat, dan NPM. Kita tidak memerlukan apa game yang dimainkan, laptop apa yang digunakan, atau data tentang ke mana saja dia pernah berwisata.
f) Encapsulation
Encapsulation adalah menyembunyikan detail bagaimana sebuah program/class yang memanipulasi data lainnya bekerja. Simpelnya, encapsulation adalah library yang sering digunakan dalam memprogram sesuatu. Library adalah bentuk encapsulation. Seseorang yang menggunakan library tersebut tidak perlu mengetahui apa yang terjadi di dalam sana, ia hanya perlu mengetahui nama library, method yang bisa digunakan, serta atribut yang diperlukan. Encapsulation berguna untuk menjaga struktur dari data tersebut serta keamanan data dari pihak-pihak lainnya. Selain itu, jika kita mengenkapsulasi data, data tersebut bisa digunakan berulang kali.