INHERITANCE,
ENCAPSULATION, POLYMORPHISM DAN INFORMATION HIDING
Dalam bahasa pemrograman yang
berorientasi obyek dikenal beberapa konsep-konsep dasar saling berinteraksi
satu sama lain yang mendasari pemrograman berorientasi obyek tersebut yaitu, INHERITANCE
(pewarisan), ENCAPSULATION (pengkapsulan), POLYMORPHISM dan INFORMATION HIDING.
Berikut adalah penjelasan dari tiap-tiap konsep dasar tersebut :
- INHERITANCE (pewarisan) Pada dasarnya, kita melakukan inheritance(pewarisan) untuk membuat suatu class baru (class turunan/subclass) yang masih memiliki sifat atau spesifikasi dari superclass.
Di dalam Java untuk mendeklarasikan suatu class sebagai
subclass dilakukan dengan cara menambahkan kata kunci extends setelah
deklarasi nama class, kemudian diikuti dengan nama parent class-nya. Kata kunci
extends tersebut memberitahu kompiler Java bahwa kita ingin melakukan perluasan
class.
public
class Mamalia {
void KelasMamalia () {
.....
}}
class Paus extends Mamalia { (class Paus merupakan keturunan dari class Mamalia)
void KelasMamalia () {
.....
}}
class Paus extends Mamalia { (class Paus merupakan keturunan dari class Mamalia)
void
TampilkanPaus () {
.....
}}
Pada saat class Paus menurunkan atau memperluas (extend) class Mamalia, maka ia
mewarisi data member yang dipunyai oleh class Mamalia. Dengan demikian, class
Paus mempunyai data member yang diwarisi oleh Mamalia (behaviournya), ditambah
dengan data member yang ia punyai (tempat hidup,dsb).
Keuntungan dari inheritance adalah :
- Subclass menyediakan state/ behaviour yang spesifik yang mem-bedakannya dengan superclass, hal ini akan memungkinkan programmer Java untuk menggunakan ulang source code dari superclass yang telah ada.
- Programmer Java dapat mendefinisikan superclass khusus yang bersifat generik, yang disebut abstract class, untuk mendefinisi-kan class dengan state dan behaviour secara umum.
Beberapa
aturan tentang pewarisan (inheritance) yang perlu diperhatikan :
1. Java hanya memperkenankan adanya single inheritance. Konsep single inheritance hanya memperbolehkan suatu sublass mempunyai satu parent class. Dengan konsep single inheritance ini, masalah pewarisan akan dapat diamati dengan mudah.
2. Subclass juga merupakan class biasa, maka kita tetap dapat melakukan pewarisan pada subclass ini. Misal : class B merupakan subclass dari class A, kita dapat membuat class baru yang diturunkan dari class B sehingga class baru tersebut akan memiliki apa yang dimiliki oleh class A dan class B.
3. Suatu parent class dapat tidak mewariskan sebagian member-nya kepada subclass-nya. Sejauh mana suatu member dapat diwariskan ke class lain, ataupun suatu member dapat diakses dari class lain, sangat berhubungan dengan access control (kontrol pengaksesan).
1. Java hanya memperkenankan adanya single inheritance. Konsep single inheritance hanya memperbolehkan suatu sublass mempunyai satu parent class. Dengan konsep single inheritance ini, masalah pewarisan akan dapat diamati dengan mudah.
2. Subclass juga merupakan class biasa, maka kita tetap dapat melakukan pewarisan pada subclass ini. Misal : class B merupakan subclass dari class A, kita dapat membuat class baru yang diturunkan dari class B sehingga class baru tersebut akan memiliki apa yang dimiliki oleh class A dan class B.
3. Suatu parent class dapat tidak mewariskan sebagian member-nya kepada subclass-nya. Sejauh mana suatu member dapat diwariskan ke class lain, ataupun suatu member dapat diakses dari class lain, sangat berhubungan dengan access control (kontrol pengaksesan).
Di dalam java, kontrol pengaksesan dapat digambarkan dalam
tabel berikut ini:
- ENCAPSULATION (pengkapsulan) Enkapsulasi adalah pembungkus, pembungkus disini dimaksudkan untuk menjaga suatu proses program agar tidak dapat diakses secara sembarangan atau di intervensi oleh program lain. Konsep enkapsulasi sangat penting dilakukan untuk menjaga kebutuhan program agar dapat diakses sewaktu-waktu, sekaligus menjaga program tersebut.
Dalam kehidupan sehari hari enkapsulasi
dapat dimisalkan sebagai arus listrik pada generator, dan sistem perputaran
generator untuk menghasilkan arus listrik. Kerja arus listrik tidak
mempengaruhi kerja dari sistem perputaran generator, begitu pula sebaliknya.
Karena didalam arus listrik tersebut, kita tidak perlu mengetahui bagaimana
kinerja sistem perputaran generator, apakah generator berputar kebelakang atau
ke depan atau bahkan serong. Begitu pula dalam sistem perputaran generator,
kita tidak perlu tahu bagaimana arus listrik, apakah menyala atau tidak.
Begitulah konsep kerja dari
enkapsulasi, dia akan melindungi sebuah program dari akses ataupun intervensi
dari program lain yang mempengaruhinya. Hal ini sangat menjaga keutuhan program
yang telah dibuat dengan konsep dan rencana yang sudah ditentukan dari awal.
Manfaat dari proses
enkapsulasi adalah :
- Modularitas
Kode sumber dari sebuah objek dapat dikelola secara
independen dari kode sumber objek yang lain.
- Information Hiding
Dapat menentukan hak akses sebuah variabel/ methode dari
suatu objek, dengan demikian dapat menyembunyikan informasi yang tidak perlu
diketahui oleh objek lain.
Contoh
dalam program :
Belajar.Java
class
belajar{
public
String x =”Pintar”;
private
String y = “Java”;
}
Pintar.Java
public
class Pintar{
public
static void main(String[]args){
Coba
panggil = new Belajar();
System.out.println(“Panggil
X : “+panggil.x);
System.out.println(“Panggil
Y : “+panggil.y);
}}
Tipe public dan private
mempunyai fungsi yang berbeda. Fungsi public yang terdapat dalam class
Coba pada variable x, memungkinkan nilai dari variable x dapat diakses oleh class
Belajar. Sedangkan variable y yang menggunakan fungsi private tidak
dapat dipanggil didalam class Belajar.
3. POLYMORPHISM
Polymorphism adalah suatu aksi yang memungkinkan pemrogram
menyampaikan pesan tertentu keluar dari hirarki obyeknya, dimana obyek yang
berbeda memberikan tanggapan/respon terhadap pesan yang sama sesuai dengan
sifat masing-masing obyek.
Atau Polymorphic dapat berarti banyak bentuk, maksudnya yaitu
kita dapat menimpa (override), suatu method, yang berasal dari parent class
(super class) dimana object tersebut diturunkan, sehingga memiliki kelakuan
yang berbeda.
Kondisi yang
harus dipe-nuhi supaya polimorfisme dapat diimplementasikan
adalah :
- Methode yang dipanggil harus melalui variabel dari basis class atau superclass.
- Methode yang dipanggil juga harus menjadi methode dari basis class.
- Signature methode harus sama baik pada superclass maupun pada subclass.
- Methode access attribute pada subclass tidak boleh lebih terbatas dari basis class.
Contoh
program :
Simpan
dengan nama BeautyfullMahasiswa.java
public
class BeautyfullMahasiswa extends Mahasiswa{
public
void printNama(){
System.out.println(“Hallo,
saya Mahasiswa yg cantik n baik”);
Super.printNama();
}
}
Simpan
dengan nama Main.java
public
class Main{
public
static void main(String[] args]) {
BeautyfullMahasiswa
mhs = new BeautyfullMahasiswa();
mhs.setNim(“09530524”);
mhs.setNama(“Afrida
Asna”);
mhs.printNim();
mhs.printNama();
}
}
Kemudian
compile dan run.
C:\>javac
BeautyfullMahasiswa.java
C:\>javac
Main.java
C:\>java
Main
Kontruksi
objek mahasiswa
Nim:09530524
Hallo,
saya Mahasiswa yg cantik n baik
Nama:
Afrida Asna
C:\>
Terlihat bahwa disini kita mengoverride
method printNama(), dengan menambahkan beberapa teks tambahan, sehingga method
printNama(), pada class BeautyfullMahasiswa, memiliki perilaku yang berbeda
dengan class Mahasiswa.
4. INFORMATION HIDING
Menyembunyikan
informasi adalah fitur kunci dari java. Ketika mendeklarasikan variabel atau
metode ini bisa menjadi salah satu dari empat hal: swasta, dilindungi, atau
umum atau default. Cara Anda menentukan jenis ini menggunakan salah satu dari
tiga kata kunci atau tidak sama sekali.
Sebagai contoh :
// Default
Int i = 0;
// public
Public i = 0;
- Public: Bila Anda mendeklarasikan variabel public itu berarti bahwa hal itu dapat diakses di mana saja dalam program. Jika Anda mewarisi dari kelas yang Anda akan memiliki akses ke semua variabel publik.
- Private: Ketika variabel bersifat pribadi itu tidak dapat dilihat di mana saja kecuali untuk kelas adalah instantiated masuk Jika Anda menggunakan kelas Anda tidak akan dapat melihat data pribadi.
- Protected: Jika variabel dilindungi Anda hanya memiliki akses paket (berguna ketika mengembangkan libs). Itu berarti bahwa Anda hanya akan melihat variabel dalam paket itu adalah instantiated di dan semua subclass.
- Default: akses default paket dicapai ketika tidak ada specifier (swasta, publik, atau dilindungi). Jalur akses default paket berarti bahwa variabel tersebut tersedia dalam paket yang dibuat di tetapi tidak dalam subclass paket. Pada dasarnya Anda dapat menganggapnya sebagai sebuah paket pribadi.
Ketika membuat variabel dalam metode Anda hanya dapat menentukan satu kata kunci (final). Anda tidak dapat membuat publik, swasta, atau dilindungi, atau bahkan variabel default. Ketika Anda membuat sebuah Object dalam metode ini hanya tersedia dalam metode itu dibuat masuk.
Tidak ada komentar:
Posting Komentar