Pemrograman Berorientasi Obyek:Enkapsulasi, Pewarisan dan polimorfisme
Konsep Dasar OOP
- Enkapsulasi (Encapsulation)
- Pewarisan (Inheritance)
- Polimorfisme (Polymorphism)
Enkapsulasi
Definisi enkapsulasi: Pembungkusan variabel dan method dalam sebuah obyek yang terlindungi serta menyediakan interface untuk mengakses variabel tersebut.
Variabel dan method yang dipunyai suatu obyek, bisa ditentukan hak aksesnya.
Contoh: jam tangan
- Penting sekali untuk mengetahui waktu.
- Cara jam mencatat waktu dengan baik antara jam bertenaga baterai atau bertenaga gerak tidaklah penting kita ketahui.
Dalam OOP, konsep enkapsulasi sebenarnya merupakan perluasan dari struktur dalam bahasa C.
Pewarisan
Definisi: merupakan pewarisan atribut dan method dari sebuah class ke class lainnya.
Class yang mewarisi → superclass
Class yang diwarisi → subclass
Subclass bisa berlaku sebagai superclass bagi class lainya → multilevel inheritance.
Contoh: terdapat class sepeda dan sepeda gunung.
- Sepeda → superclass
- Sepeda gunung → subclass
- Sepeda gunung memiliki variabel dan method yang dimiliki oleh sepeda.
Prinsip: Persamaan-persamaan yang dimiliki oleh beberapa kelas dapat digabungkan dalam sebuah class induk sehingga setiap kelas yang diturunkannya memuat hal-hal yang spesifik untuk kelas yang bersangkutan.

Keuntungan pewarisan
- Subclass menyediakan state/behaviour yang spesifik yang membedakan dengan superclass → memungkinkan programmer untuk menggunakan ulang source code dari superclass yang telah ada.
- Programmer dapat mendefinisikan superclass khusus yang bersifat generik, yang disebut abstract class, untuk mendefinisikan class dengan tingkah laku dan state secara umum.
Single dan multiple inheritance
C c multiple inheritance
Suatu class diperbolehkan untuk mempunyai lebih dari satu superclass.
Variabel dan method yang diwariskan merupakan kombinasi dari superclass-nya.
Java → single inheritance
Suatu class hanya boleh mempunyai satu superclass.
Multilevel inheritance
Suatu subclass bisa menjadi superclass bagi class yang lain.
Polimorfisme
Polimorfisme (bahasa inggris polymorphism) adalah sebuah prinsip dalam biologi di mana oraganisme atau spesias dapat memiliki banyak bentuk atau tahapan (stages)
Polimorfisme dalam OOP adalah sebuah prinsip di mana class dapat memiliki banyak “bentuk” method yang berbeda-beda meskipun namanya sama. “Bentuk” di sini dapat kita artikan: isinya berbeda, parameternya berbeda, dan tipe datanya berbeda.
Jenis Polimorfisme
1. Static Polymorphism (Polimorfisme statis);
Polimorfisme statis menggunakan method overloading, Method overloading terjadi pada sebuah class yang memiliki nama method yang sama tapi memiliki parameter dan tipe data yang berbeda.
Kata kunci yang perlu kamu ingat:
- “Dalam satu class”
- “Nama method sama”
- “Tipe data dan parameter beda”
Contoh
Contohnya misalkan kita memiliki class Lingkaran.java. Pada class ini terdapat method luas().
Nah, si method luas() ini bisa saja memiliki parameter yang berbeda.
Misalnya kita ingin menghitung luas berdasarkan jari-jari (radius) atau diameter.

Class Lingkaran memiliki dua method yang namanya sama, yakni luas().
Tapi parameter dan tipe datanya berbeda dan juga isi atau rumus di dalamnya berbeda.
Inilah yang disebut polimorfisme satatis.
2. Dynamic Polymorphism (Polimorfisme dinamis).
Plimorfisme dinamis biasanya terjadi saat kita menggunakan pewarisan (inheritance) dan implementasi interface.
Seperti yang sudah kita ketahui: Pada pewarisan, kita bisa mewariskan atribut dan method dari class induk ke class anak. Class anak akan memiliki nama method yang sama dengan class induk dan anak yang lainnya.

Class anak akan memiliki nama method yang sama, tapi nanti isi dan parameternya bisa berbeda dari class induk.
Karena si class anak melakukan method overriding (mendindih method) yang diwariskannya.
Polimofirme dinamis juga bisa terjadi saat menggunakan interface.