INHERITANCE
Pengertian Inheritance (Pewarisan)
adalah salah satu bentuk penggunaan kembali perangkat lunak dimana suatu kelas
baru dibuat dari kelas yang sudah ada dengan memakai variabel data fungsi
(method) dari kelas yang sudah ada tersebut serta menambah atribut/pelaku yang
baru, kelas baru otomatis memiliki variabel atau fungsi yang dimiliki kelas
asal.
Inheritance (penurunan sifat / pewarisan), ini merupakan
ciri khas dari OOP yang tidak terdapat pada pemrograman prosedural gaya lama.
Dalam hal ini, inheritance bertujuan membentuk obyek baru yang memiliki sifat
sama atau mirip dengan obyek yang sudah ada sebelumnya (pewarisan). Obyek
turunan dapat digunakan membetuk obyek turunan lagi dan seterusnya. Setiap
perubahan pada obyek induk, juga akan mengubah obyek turunannya. Susunan obyek
induk dengan obyek turunannya disebut dengan hirarki obyek.
Inheritanceatau pewarisan pada pemrograman
berorientasi objek merupakan suatu hubungan dua buah kelas atau lebih. Dalam
hal ini ada kelas yang memiliki atribut dan metode yang sama dengan kelas
lainnya beserta atribut dan metode tambahan yang merupakan sifat khusus kelas
yang menjadi turunannya.
Kita dapat mendefinisikan suatu
kelas baru dengan mewarisi sifat dari kelas lain yang sudah ada. Penurunan sifat
ini bisa dilakukan secara bertingkat-tingkat, sehingga semakin ke bawah kelas
tersebut menjadi semakin spesifik. Sub kelas memungkinkan kita untuk melakukan
spesifikasi detail dan perilaku khusus dari kelas supernya. Dengan konsep
pewarisan, seorang programmer dapat menggunakan kode yang telah ditulisnya pada
kelas super berulang kali pada kelas-kelas turunannya tanpa harus menulis ulang
semua kode-kode itu.
Penurunan sifat memungkinkan kita
untuk membuat sebuah objek baru yang sama dengan objek sebelumnya yang telah
didefinisikan. Karakteristik dari suatu objek diturunkan ke objek yang lain
sehingga objek yang baru akan memiliki karakteristik yang sama dengan induknya.
Penurunan ini diawali dengan mendefinisikan objek induk, sehingga dengan
menggunakan objek induk tersebut, dapat membuat objek yang bertumpu pada objek
induknya. Sehingga akan terbentuk objek keturunan. Dimana setiap objek
turunannya dapat mengakses semua data dan program yang dimiliki oleh objek
induknya.
·
Istilah-Istilah
Inheritance
1. Objek
Untuk mempermudah pemahaman, maka disini akan dijelaskan
melalui analogi. Pada dasarnya semua benda yang adadi dunia nyata dapat
dianggap sebagai objek. Misalnya rumah, mobil, sepeda, motor, gelas, komputer,
meja, sepatu, dll. Setiap objek memiliki atribut sebagai status (state) dan
tingkah laku sebagai behavior.
Dalam OOP(Object Oriented Programming), state disimpan pada variabel dan
tingkah laku disimpan pada method. Dalam bahasa teoretis OOP, Objek berfungsi
untuk membungkus data dan fungsi bersama menjadi satu unit dalam sebuah program
komputer. Objek merupakan dasar dari modularitas dan struktur dalam sebuah
program komputer berorientasi objek.
2. Class
Definisi class yaitu template untuk membuat objek. Class
merupakan prototipe atau blue prints yang mendefinisikan variabel-variabel dan
method-method secara umum. Objek merupakan hasil instansiasi dari suatu class.
Proses pembentukan objek dari suatu kelas disebut sebagai instantiation. Objek
disebut juga sebagai instances.
Dalam bahasa teoretis OOP(Object Oriented Programming), class merupakan kumpulan atas
definisi data dan fungsi-fungsi dalam suatu unit untuk suatu tujuan tertentu.
Sebagai contoh 'class of dog' adalah suatu unit yang terdiri atas definisi-definisi
data dan fungsi-fungsi yang menunjuk pada berbagai macam perilaku/turunan dari
anjing. Sebuah class adalah dasar dari modularitas dan struktur dalam
pemrograman berorientasi object.
Sebuah class secara tipikal sebaiknya dapat dikenali oleh seorang
non-programmer sekalipun terkait dengan domain permasalahan yang ada, dan kode
yang terdapat dalam sebuah class sebaiknya (relatif) bersifat mandiri dan
independen (sebagaimana kode tersebut digunakan jika tidak menggunakan OOP).
Dengan modularitas, struktur dari sebuah program akan terkait dengan
aspek-aspek dalam masalah yang akan diselesaikan melalui program tersebut. Cara
seperti ini akan menyederhanakan pemetaan dari masalah ke sebuah program
ataupun sebaliknya.
3. Attributes
Atribut adalah data yang membedakan antara objek satu dengan
yang lainnya.
Dalam class, atribut sering disebut sebagai variabel.
Atribut dibedakan menjadi dua jenis yaitu Instance Variable dan Class Variable.
Instance variable adalah atribut untuk tiap objek dari kelas
yang sama. Tiap objek mempunyai dan menyimpan nilai atributnya sendiri. Jadi,
tiap objek dari class yang sama bokeh mempunyai nilai yang sama atau berbeda.
Class Variable adalah atribut untuk semua objek yang dibuat
dari class yang sama. Semua objek mempunyai nilai atribut yang sama. Jadi semua
objek dari class yang sama mempunyai hanya satu nilai yang value nya sama.
4. Behavior
Behavior/tingkah laku adalah hal-hal yang bisa dilakukan
oleh objek dari suatu class. Behavior dapat digunakan untuk mengubah nilai
atribut suatu objek, menerima informasi dari objek lain, dan mengirim informasi
ke objek lain untuk melakukan suatu tugas (task).
Dalam class, behavior disebut juga sebagai methods. Methods
sendiri adalah serangkaian statements dalam suatu class yang menghandle suatu
task tertentu. Cara objek berkomunikasi dengan objek yang lain adalah dengan
menggunakan method.
5. Abstraksi
Abstraksi adalah kemampuan sebuah program untuk melewati
aspek informasi yang diproses olehnya, yaitu kemampuan untuk memfokus pada
inti. Setiap objek dalam sistem melayani sebagai model dari "pelaku"
abstrak yang dapat melakukan kerja, laporan dan perubahan keadaannya, dan
berkomunikasi dengan objek lainnya dalam sistem, tanpa mengungkapkan bagaimana
kelebihan ini diterapkan. Proses, fungsi atau metode dapat juga dibuat abstrak,
dan beberapa teknik digunakan untuk mengembangkan sebuah pengabstrakan.
Inheritance memungkinkan programer meletakkan member yang
sama dalam satu class dan class-class lain dapat mewarisi member tersebut.
Class yang mengandung member yang sama dari beberapa class lain dinamakan
superclass atau parent class. Class yang mewarisi dinamakan subclass atau child
class. Inheritance menghasilkan class hierarchy.
Keuntungan Pewarisan
a)
Subclass
menyediakan state/behaviour yang spesifik yang membedakan dengan superclass,
sehingga memungkinkan programmer untuk menggunakan ulang source code dari
superclass yang telah ada.
b)
Programmer
dapat mendefinisikan superclass khusus yang bersifat generik, yang disebut
abstract class (abstraksi), untuk mendefinisikan class dengan tingkah laku dan
state secara umum.
c)
Saat
anda ingin membuat class baru, dan ternyata pada class lain telah ada code yang
ingin anda gunakan, maka anda tinggal meng-extend class lain tersebut.
d) Subclass menyediakan
state/behaviour yang spesifik yang membedakannya dengan
superclass, hal ini akan memungkinkan programmer
untuk menggunakan ulang source code
dari superclass yang telah ada.
e) Programmer dapat
mendefinisikan superclass khusus yang bersifat
generik, yang disebut abstract class, untuk
mendefinisikan class dengan behaviour dan state secara umum.
f) tidak perlu mengutak atik kode kelas
yang membutuhkan tambahan atribut atau metode saja, karena tinggal membuat
kelas turunannya tanpa harus mengubah kode kelas dasarnya. Kelas dasar akan
mewariskan semua atribut dan kodenya kecuali konstruktor dan destruktor yang
memiliki izin akses publicdan protectedke kelas
turunannya dengan izin akses yang sama dengan pada kelas dasar.
Kekurangan Inheritance(Pewarisan)
1) Menghabiskan banyak memory computer
2) Kecepatan terlalu lambat
dibandingkan menggunakan progam bahasa C dan C++
3) Tidak efektif untuk membuat sebuah
program
Mekanisme pewarisan yang telah diuraikan diatas, menjadi 3
(tiga) kelompok yaitu sebagai berikut:
1) Single Inheritance
Bahasa C adalah contoh multiple inheritance. Suatu class
diperbolehkan untuk mempunyai lebih dari satu superclass. Variabel dan method
yang diwariskan merupakan kombinasi dari superclass-nya. Java adalah contoh
single inheritance. Suatu class hanya boleh mempunyai satu superclass.
2) Multiple Inheritance
Adalah pewarisan dimana satu kelas diturunkan lebih dari
satu kelas yang berbeda dalam pewarisan ini jumlah kelas dasarnya lebih dari
satu kelas dan perlu dicatat bahwa kelas dasarnya bukan merupakan turunan dari
satu kelas.
3) Virtual Multilevel Inheritance
Suatu subclass bisa menjadi superclass bagi class yang lain.
Yang mana kelas dasarnya lebih dari satu dan beberapa di antara kelas dasar
tersebut merupakan kelas turunan dari kelas dasar yang sama. Mekanisme
pewarisan sifat suatu dasar kepada kelas turunan sama dengan pewarisan yang
lain.
Konstruktor
Konstruktor adalah sebuah fungsi yang digunakan
untuk membuat objek dalam suatu kelas. Konstruktor ini juga digunakan untuk
melakukan inisialisasi terhadap variabel-variabel yang dimiliki oleh kelas.
Dalam konsep pewarisan, konstruktor
kelas induk tidak akan diwariskan ke kelas induk, untuk memfasilitasi
pemanggilan fungsi konstruktor kelas induk oleh kelas anak maka Java
menyediakan mekanisme rujukan ke kelas induk dengan menggunakan kata
kunci super. Dengan menggunakan kata kunci ini, maka kita
dapat mengakses semua variabel kelas induk walaupun variabel tersebut tidak
diwariskan.
Alur
Eksekusi Constructor
v Ketika sebuah object Student diinstansiasi, default
constructor dari superclass Student dipanggil secara implisit untuk
melakukan inisialisasi seperlunya.
v Setelah itu, pernyataan di dalam constructor subclass
baru dijalankan.
Contoh
Program
·
Simpan
dengan nama Inheritance1.java
class Inheritance1
{
private String na;
private String nama;
public void setna (String van)
{
na=van;
}
public void setnama (String vnama)
{
nama=vnama;
}
public String getna()
{
return (na);
}
public String getnama()
{
return (nama);
}
public void display()
{
System.out.println(“NPM”+getna());
System.out.println(“Nama”+getnama());
}
}
{
private String na;
private String nama;
public void setna (String van)
{
na=van;
}
public void setnama (String vnama)
{
nama=vnama;
}
public String getna()
{
return (na);
}
public String getnama()
{
return (nama);
}
public void display()
{
System.out.println(“NPM”+getna());
System.out.println(“Nama”+getnama());
}
}
·
Simpan
dengan nama Inheritance2.java
class Inheritance2 extends
Inheritance1
{
private double ip;
public void setip (double vip)
{
ip=vip;
}
public double getip()
{
return(ip);
}
public void display()
{
System.out.println(“IP : “+getip());
System.out.println(“Nama : “+getnama());
System.out.println(“NPM : “+getna());
}
}
{
private double ip;
public void setip (double vip)
{
ip=vip;
}
public double getip()
{
return(ip);
}
public void display()
{
System.out.println(“IP : “+getip());
System.out.println(“Nama : “+getnama());
System.out.println(“NPM : “+getna());
}
}
·
Simpan
dengan nama InheritanceCoba.java
public class InheritanceCoba
{
public static void main(String[] args)
{
Inheritance2 ap1=new Inheritance2();
ap1.setna(“56410268 & 55410416″);
ap1.setnama(“Rudy Eriyanto & Pulung Bagaskoro”);
ap1.setip(3.5);
ap1.display();
}
}
{
public static void main(String[] args)
{
Inheritance2 ap1=new Inheritance2();
ap1.setna(“56410268 & 55410416″);
ap1.setnama(“Rudy Eriyanto & Pulung Bagaskoro”);
ap1.setip(3.5);
ap1.display();
}
}
“Kemudian compile dan run program tersebut, maka akan
menghasilkan output seperti ini :
