Paradigma berorientasi objek adalah metodologi pemrograman yang mempromosikan desain dan pengembangan sistem perangkat lunak yang efisien menggunakan komponen yang dapat digunakan kembali yang dapat dirakit dengan cepat dan aman ke dalam sistem yang lebih besar.
Tujuan utama dari Pemrograman Berorientasi Objek adalah untuk mengimplementasikan konsep dunia nyata seperti:
- Object (Entitas dunia nyata)
- Classes (Template/ cetak biru)
- Abstraction (Kontrol Visibilitas)
- Inheritance (Turunan)
- Polymorphism (Banyak bentuk)
Komponen OOP
1. Object
Object merupakan instance dari kelas. Entitas apapun yang memiliki pernyataan atau sifat disebut object. Contohnya seperti kursi, pena, meja, keyboard, dll. Dapat berupa fisik atau logis.
2. Class
Class merupakan kumpulan objek yang mempunyai properti yang sama. Class merupakan template atau blueprint dari objek yang dibuat. Class merupakan entitas logis. Class merupakan tipe data non primitive. Class tidak dapat berupa fisik (tidak mempunyai ruang memori). Member class adalah pemberi akses, objek, methods, instance variable, dan konstruktor.
3. Inheritance
Inheritance atau pewarisan adalah salah satu konsep dasar dalam Pemrograman Berorientasi Objek (OOP) yang memungkinkan sebuah class untuk mewarisi properti dan perilaku dari class lain. Inheritance memungkinkan pembuatan class baru yang merupakan versi modifikasi atau khusus dari sebuah class yang sudah ada.
Class yang diwarisi disebut sebagai class induk, superclass, atau base class, sedangkan class baru yang dibuat melalui inheritance disebut sebagai class anak, subclass, atau derived class. Class anak dapat mengakses semua properti dan method yang tidak bersifat private dari class induk dan dapat menambahkan properti dan method miliknya sendiri.
4. Polymorphism
Polymorphism atau polimorfisme adalah konsep dasar dalam Pemrograman Berorientasi Objek (OOP) yang memungkinkan objek dari kelas yang berbeda diperlakukan seolah-olah mereka adalah objek dari kelas yang sama. Polimorfisme memungkinkan fleksibilitas dan perluasan dalam desain perangkat lunak, karena memungkinkan beberapa objek untuk berbagi antarmuka atau perilaku yang sama, sambil mengimplementasikannya dengan cara mereka sendiri.
Polimorfisme dicapai melalui dua mekanisme: method overloading dan method overriding. Method overloading terjadi ketika dua atau lebih method di dalam satu kelas memiliki nama yang sama tetapi parameter yang berbeda. Method overriding terjadi ketika sebuah method di dalam subclass memiliki nama, tipe pengembalian, dan parameter yang sama dengan method pada superclass-nya.
5. Abstraction
Abstraction secara umum menyembunyikan implementasi dan mencapai akses fungsionalitas dengan mengekspos menggunakan keyword extend. Abstract class adalah kelas yang tidak mempunyai instance langsung apapun. Abstract operation adalah operasi yang belum komplit dan membutuhkan anak untuk mendapatkan implementasi dari operasi.
6. Encapsulation
Encapsulation adalah integrasi dari data dan operasi menjadi sebuah kelas. Encapsulation adalah menyembunyikan detail fungsional dari object yang dipanggil.