OOP adalah singkatan dari Object Oriented Programming, yaitu suatu metode pemrograman yang fokus atau berorientasi pada objek.
Tujuan utama dari pemrograman berorientasi objek (OOP) adalah untuk mempermudah proses pengembangan perangkat lunak dengan membagi program menjadi bagian-bagian yang lebih kecil dan lebih mudah diatur yang disebut sebagai objek. Oleh karena itu, program dapat dikembangkan dengan lebih cepat, mudah melakukan perbaikan, dan lebih fleksibel dalam pengembangannya.
CLASS DAN OBJEK
Class dalam OOP (Object-Oriented Programming) adalah blueprint atau cetak biru yang digunakan untuk membuat objek atau instance. Secara sederhana, class merupakan sebuah kerangka atau template yang mendefinisikan atribut (variabel) dan metode (fungsi) yang dimiliki oleh objek yang akan dibuat dari class tersebut. Dalam class, kita dapat mendefinisikan variabel-variabel yang akan menjadi properti dari objek dan metode-metode yang akan menentukan perilaku objek tersebut. Dengan demikian, class membantu kita dalam memodelkan objek sesuai dengan kebutuhan aplikasi yang kita buat.
Contohnya, jika kita ingin membuat objek mobil dalam program, maka kita dapat membuat sebuah class dengan nama “Mobil”. Di dalam class Mobil, kita dapat mendefinisikan variabel seperti merek, model, warna, dan tahun produksi.
Sedangkan Objek dalam OOP (Object-Oriented Programming) adalah suatu entitas yang terbentuk dari sebuah class atau blueprint. Objek memiliki atribut (variabel) dan perilaku (metode) yang didefinisikan oleh class tersebut.
Dalam OOP, objek dianggap sebagai dasar dari sebuah program, karena program akan berhubungan dengan objek kemudian melakukan operasi terhadap objek tersebut. Objek dapat merepresentasikan suatu hal di dunia nyata atau suatu konsep yang abstrak. Contohnya jika kita memiliki class dengan nama “Mobil”, maka objek mobil dapat dibuat dari class tersebut. Objek mobil tersebut memiliki atribut seperti merek, model, warna, dan tahun produksi, serta perilaku seperti menghidupkan mesin, mengubah kecepatan, atau mengisi bahan bakar. Setiap objek mobil yang dibuat akan memiliki nilai atau data yang berbeda pada atribut-atribut tersebut.
ABSTRACT CLASS DAN INTERFACE
Abstract class dan interface tentunya memiliki perbedaan. Beberapa perbedaan mendasar dari abstract class dan interface adalah sebagai berikut:
- Abstract class digunakan untuk memodelkan objek yang memiliki sifat-sifat yang sama, tetapi memiliki perilaku yang berbeda-beda. Sedangkan Interface digunakan untuk menetapkan kontrak antara objek yang berbeda, yaitu objek-objek yang memiliki perilaku yang berbeda namun harus memenuhi kontrak yang sama.
- Abstract class memiliki tingkat akses protected, private atau public, sedangkan semua metode di interface secara default public.
- Abstract class dapat memiliki variabel dan metode dengan implementasi, sedangkan interface tidak dapat memiliki variabel dan hanya dapat memiliki deklarasi metode. Hal ini membuat interface lebih fleksibel dan memungkinkan implementasi polimorfisme yang lebih luas.
- Abstract class dapat memiliki konstruktor, sedangkan interface tidak dapat memiliki konstruktor.
INHERITANCE
Inheritance adalah konsep di mana sebuah kelas dapat menurunkan properti dan metode yang dimilikinya ke kelas lain yang merupakan turunannya. Dalam konsep inheritance, kelas yang menjadi dasar atau induk disebut superclass atau parent class, sedangkan kelas yang mewarisi properti dan metodenya disebut subclass atau child class. Ini membantu mengorganisir dan memudahkan pengembangan kode program dalam PBO dengan memungkinkan penggunaan hierarki kelas dan menghemat waktu dan usaha dalam membuat kode program yang serupa.
ENCAPSULATION
Encapsulation adalah konsep dalam PBO yang memungkinkan penggabungan data dan perilaku dalam satu kesatuan utuh yang disebut class, dengan akses yang terkontrol. Dalam encapsulation, data dan perilaku diatur tingkat aksesnya dengan modifier access level seperti private, public, dan protected. Encapsulation sangat penting dalam PBO karena membantu mengurangi kompleksitas dan kerentanan kode program. Dengan menggunakan encapsulation, kita dapat memastikan data dan method hanya diakses dan dimanipulasi dengan cara yang aman dan benar. Selain itu, Dengan encapsulation memungkinkan kita untuk memisahkan antara implementasi dan interface, sehingga membuat kode program lebih mudah dipelihara dan dikembangkan di masa depan.
PRIVATE, PROTECTED, DAN PUBLIC
Perbedaan antara modifier private,protected dan public antara lain sebagai berikut:
- Private: Variabel atau metode hanya bisa diakses di dalam class tempat variabel atau metode tersebut didefinisikan. Kelas atau objek lain tidak ada yang bisa mengakses variabel atau metode tersebut. Modifier jenis ini digunakan saat kita ingin membatasi akses ke variabel atau metode tertentu yang hanya digunakan di dalam kelas itu saja.
- Protected: Variabel atau metode yang dapat diakses dari dalam class tempat variabel atau method tersebut didefinisikan, serta subclass (class turunan) dari class tersebut, yang berarti tidak dapat diakses dari luar class. Protected berfungsi untuk memberikan akses terbatas pada subclass sehingga, subclass dapat mengakses variabel atau metode tertentu dari superclass (class induk)
- Public : Variabel atau metode yang bisa diakses dari mana saja baik didalam class tempat variabel atau metode didefinisikan maupun diluar class, oleh karena itu modifier acces ini juga dapat diakses oleh subclass. Public berguna untuk membuat interface (antarmuka) pada sebuah class, sehingga class tersebut dapat digunakan oleh class lain.
POLYMORPHISM
Polymorphism dalam Pemrograman Berorientasi Objek (PBO) adalah kemampuan objek dari kelas yang berbeda untuk merespons panggilan method yang sama dengan cara yang berbeda. Polymorphism memungkinkan penggunaan kelas induk atau interface untuk memanipulasi objek dari kelas turunan yang berbeda tanpa harus mengetahui jenis spesifik dari objek tersebut. Polymorphism dapat diimplementasikan melalui konsep overloading dan overriding.
COUPLING DAN COHESION
Coupling dalam Pemrograman Berorientasi Objek (PBO) adalah hubungan antara dua atau lebih kelas. Coupling yang rendah mengindikasikan bahwa kelas-kelas tersebut tidak terlalu bergantung satu sama lain, sehingga memungkinkan pengembangan software yang lebih modular dan mudah dipelihara. Sedangkan coupling yang tinggi mengindikasikan ketergantungan yang kuat antara kelas-kelas tersebut, yang dapat menyebabkan sulitnya perubahan dan pemeliharaan kode program.
Cohesion dalam Pemrograman Berorientasi Objek (PBO) adalah tingkat keterkaitan atau hubungan antara elemen-elemen dalam sebuah kelas. Semakin tinggi koherensi suatu kelas, semakin erat hubungan antara variabel dan method dalam kelas tersebut. Kelas yang memiliki koherensi yang baik memiliki variabel dan method yang saling terkait dan membentuk satu kesatuan yang utuh dengan tujuan yang sama. Dengan koherensi yang baik, kelas dapat digunakan secara fleksibel dan mudah diadaptasi ketika terjadi perubahan kebutuhan dalam pengembangan software.