Inheritence / Pewarisan
Suatu kelas dapat diciptakan berdasarkan kelas lain. Kelas baru ini mempunyai sifat-sifat yang sama dengan kelas pembentuknya, ditambah sifat-sifat khusus lainnya. Dengan pewarisan kita dapat menciptakan kelas baru yang mempunyai sifat sama dengan kelas lain tanpa harus menulis ulang bagian-bagian yang sama. Pewarisan merupakan unsur penting dalam pemrograman berorientasiobjek dan merupakan blok bangunan dasar pertama penggunaan kode ulang (code reuse).
Jika tidak ada fasilitas pewarisan ini, maka pemrograman pemrograman berorientasi obyek akan tidak banyak berbeda dengan pemrograman prosedural, hanya perbedaan dalam pengkapsulan saja yang menggunakan kelas sebagai pengganti struktur. Yang perlu menjadi catatan di sini adalah bahwa data dan fungsi yang dapat diwariskan hanya yang bersifat public dan protected.
Untuk data dan fungsi private tetap tidak dapat diwariskan. Hal ini disebabkan sifat protected yang hanya dapat diakses dari dalam kelas saja.
Sifat pewarisan ini menyebabkan kelas-kelas dalam pemrograman berorientasi objek membentuk hirarki kelas mulai dari kelas dasar, kelas turunan pertama, kelas turunan kedua dan seterusnya. Kelas yang menjadi induk biasa disebut sebagai superclass dan kelas turunannya biasa disebut sebagai subclass.
Keuntungan Menggunakan Inheritence / Pewarisan
· Subclass menyediakan karakteristik yang berbeda dengan superclass / kelas induknya.
· Pemrogram dapat membuat sebuah kelas generic, yaitu sebuah abstract class. Kelas abstract ini merupakan sebuah kelas yang memiliki sifat dan karakteristik umum dan seluruh implementasinya berada pada subclassnya.
Beberapa Bentuk Dari Inheritence / Pewarisan.
Inheritence / pewarisan memiliki 3 bentuk, yaitu :
· Single Inheritence
Single inheritance adalah bentuk dimana sebuah kelas dapat memiliki sebuah kelas induk / super class.
· Multiple Inheritence
Multiple inheritance adalah bentuk dimana sebuah kelas dapat memiliki lebih dari satu kelas induk / super class. Bentuk ini tidak didukung oleh beberapa bahasa pemrograman, salah satunya adalah Java. Permasalahan yang sering timbul dari bentuk ini adalah ambiguitas pada karakteristik kelas turunan ketika memiliki induk lebih dari satu.
· Multi Level Inheritence
Multilevel inheritance adalah bentuk dimana sebuah kelas dapat menjadi kelas induk / superclass bagi kelas lain.
Untuk memperjelas penjelasan diatas, maka akan diberikan Listing Program dari class unggas yaitu sebagai berikut:
Sebagai kelas dasar adalah Unggas. Salah satu sifat Unggas adalah bertelur dan bersayap. Kelas turunan pertama adalah Ayam, Burung dan Bebek. Tiga kelas turunan ini mewarisi sifat kelas dasar Unggas yaitu bertelur dan bersayap. Selain mewarisi sifat kelas dasar, masing-masing kelas turunan mempunyai sifat khusus, Ayam berkokok, Burung terbang dan Bebek berenang. Kelas Ayam punya kelas turunan yaitu Ayam Kampung dan Ayam Hutan. Dua kelas ini mewarisi sifat kelas Ayam yang berkokok. Tetapi dua kelas ini juga punya sifat yang berbeda, yaitu: Ayam Kampung berkokok panjang halus sedangkan Ayam hutan berkokok pendek dan kasar.
//Program Kelas Unggas
#include<stdio.h>
#include<iostream.h>
#include<conio.h>
class Unggas{ // class induk.
public:
void Bertelur() {cout<<"Bertelur"<<endl; }
};
class Ayam : public Unggas{ // class turunan.
public:
void Berkokok() {cout<<"Berkokok"<<endl; }
};
class Burung : public Unggas{ // class turunan juga
public:
void Terbang() {cout<<"Terbang"<<endl; }
};
class Bebek : public Unggas{ // class turunan juga
public:
void Berenang() {cout<<"Berenang"<<endl; }
};
class AyamKampung : public Ayam{ // class turunan juga
public:
void Berkokok_Panjang_Halus() {cout<<"Berkokok Panjang Halus"<<endl; }
};
class AyamHutan : public Ayam{ // class turunan juga
public:
void Berkokok_Pendek_Kasar() {cout<<"Berkokok Pendek Kasar"<<endl; }
};
// pendeklarasian main program.
void main(){
cout <<"Sifat bebek adalah:"<<endl;
Bebek bk; // bikin obyek bebek, turunan dari unggas.
bk.Bertelur();
bk.Berenang();
cout<<endl;
cout<<"Sifat ayam adalah:"<<endl;
Ayam ay; // bikin obyek ayam, turunan dari unggas.
ay.Bertelur();
ay.Berkokok();
cout<<endl;
cout<<"Sifat ayam kampung adalah:"<<endl;
AyamKampung ayk; // bikin obyek ayam kampong, turunan dari ayam.
ayk.Bertelur();
ayk.Berkokok();
ayk.Berkokok_Panjang_Halus();
getch();
}
Dapat dilihat, bahwa kelas Ayam dan kelas Bebek dapat menjalankan fungsi
Bertelur() yang ada dalam kelas Unggas meskipun fungsi ini bukan merupakan
anggota kelas Ayam dan kelas Bebek. Kelas AyamKampung dapat menjalankan fungsi Berkokok() yang ada dalam kelas Ayam walaupun dua fungsi tersebut bukan merupakan anggota kelas AyamKampung. Sifat-sifat di atas yang disebut dengan pewarisan (inheritance).
Tidak ada komentar:
Posting Komentar