Anda di halaman 1dari 23

POLYMORPHISM,

ABSTRACT CLASS DAN


INTERFACE
Polymophism

Polimorfisme (Polimorphism) berasal dari bahasa yunani yang berarti


banyak bentuk.

yaitu merupakan suatu konsep bahwa objek dapat memiliki berbagai bentuk,
sebagai objek dari kelasnya maupun objek dari superkelasnya ( Deitel,
2004 ).
Overriding dan Overloading
• Overriding : terjadi ketika deklarasi method subclass sama ( termasuk
parameter ) dengan method pada superclass.
• Overloading : yaitu penggunaan satu nama untuk beberapa method
yang berbeda ( berbeda parameter )
MakhlukHidup
-Nama : char
-Rumpun : char
+MakhlukHidup(in Nama : char)
+Bernafas()

Binatang
Tumbuhan
+Binatang(in Nama : char)
+Bertumbuh() +Tumbuhan(in Nama : char)
+Berjalan() +Bertumbuh()
+Kecepatan(in Nilai : int)

Karnivora
Herbivora
+Karnivora(in Nama : char)
+Memakan(in Binatang : Binatang) +Herbivora(in Nama : char)
+Kecepatan(in nilai : int) +Memakan(in Tumbuhan : Tumbuhan)
+Kecepatan(in nilai : double) +Kecepatan(in nilai : int)
+Kecepatan(in nilai : double)

Overriding
Overloading
Kelas Abstrak

Sebuah kelas dapat dideklarasikan sebagai kelas


abstrak. Tujuanya :

1.Agar suatu kelas tidak dapat di instansiasikan


sebagai sebuah objek dan hanya dapat
diturunkan.
2.Agar satu kelas lain dapat memperluasnya
dengan jalan menjadi subclass darinya
Untuk membuat sebuah kelas atau method menjadi abstrak maka
menggunakan keyword abstract setelah modifier pada deklarasi
kelas atau method. Contoh kelas abstrak

public abstract class Unggas


{

}
Method Abstrak

• Method abstrak
• Method abstrak adalah method yang memiliki definisi namun tidak memiliki
implementasi
• Method di dalam abstract class boleh berupa method abstrak ataupun bukan.
• Untuk membuat abstract method, hanya menuliskan deklarasi method tanpa body
dan gunakan keyword abstract
Nama kelas dengan
cetak miring merupakan Animal
-jmlKaki : int
simbol kelas abstrak +walk()
+sound()

Kucing

+walk()
+sound()
Ayam

+walk()
+sound()
public abstract class animal {
private int jmlKaki;
public abstract void walk();
public abstract void sound();
}
class kucing extends animal
{
public void walk()
{
System.out.println("Berjalan dengan 4 kaki");
}
public void sound()
{
System.out.println("Meeooo...ong");
}
}
class ayam extends animal
{
public void walk()
{
System.out.println("Berjalan dengan 2 kaki");
}
public void sound()
{
System.out.println("Kuku Ruyuuuukk");
}
}
• Menggunakan abstract class untuk mendefinisi jenis-jenis yang luas dari
behavior yang ada di puncak hirarki class object-oriented programming,
dan menggunakan subclassnya untuk menyediakan detail implementasi
dari abstract class.
Interface
Interface

• Interface mendefinisikan aturan perilaku


yang dapat di implementasikan oleh kelas
manapun. Interface mendefinisikan satu set
method tanpa menyediakan implementasinya.
• Setiap kelas yang mengimplementasikan
interface akan terikat oleh interface tersebut
untuk mengimplementasikan semua method
yang ada di dalam interface.
Interface (Lanjutan)

• Secara subtansi Interface merupakan


kumpulan dari method abstrak dan konstanta.
• Interface memiliki kemiripan dengan kelas
abstrak karena keduanya memuat method
abstrak.
• Untuk menjadikan sebuah kelas
mengimplementasikan interface maka
ditambahkan keyword implements kemudian
dilanjutkan nama interface.
Perbedaan Interface dan Kelas
Abstrak

Interface Kelas Abstrak


Tidak dapat membuat Dapat membuat
implementasi method implementasi method
Sebuah kelas dapat Sebuah kelas hanya dapat
mengimplementasikan meng-Extends satu
beberapa interface superclass.
Mengapa menggunakan interface?

• Mendeklarasikan method yang akan diimplementasikan


oleh satu atau beberapa kelas
• Menangkap kesamaan di antara beberapa kelas tanpa
perlu memasukkannya dalam hirarki kelas.
• Mensimulasikan konsep pewarisan banyak kelas
dengan mendeklarasikan kelas yang
mengimplementasikan beberapa interface sekaligus
«interface»
interfaceElektronik
+On()
+Off()

Kelas yang meng-Implements


suatu interface maka kelas
tersebut harus mengOverride
Radio method yang ada pada
-mesin : bool = false interface.
-channel : char
-volume : int = 0
+on() Dari contoh disamping, method
+off() on dan off merupakan
+gantiChannel(in channel : int) Kipas
+perbesarVolume() -mesin : bool = false method overriding dari
+perkecilVolume() -kecepatanKipas : int = 0 interface interfaceElektronik
+on()
+off()
+percepatKipas()
+perlambatKipas()
public interface interfaceElektronik
{
public void on();
public void off();
}
public class Radio implements
interfaceElektronik
{
boolean mesin=false;
String[] channel={"Gajah Mada FM","Smart
FM","Buana FM","DINUS FM"};
int volume=0;

public void on()


{
mesin=true;
}
public void off()
{
mesin=false;
}

… Continue
public class Kipas implements
interfaceElektronik {
boolean mesin=false;
int kecepatanKipas=0;

public void on()


{
mesin=true;
}
public void off()
{
mesin=false;
}

… Continue
Latihan «interface»
interfaceChannelRadio
+gantiChannel(in c : int)
«interface»
interfaceChannelTV
+gantiChannel(in c : int)

«interface»
Ubahlah InterfaceElektronik
+on()
struktur +off()
Kelas
Diagram
disamping ke
Radio
dalam bahasa
-mesin : Boolean
pemrograman -volume : int
+on()
+off()
+gantichannel(in c : int)
Televisi
+perbesarVolume()
+perkecilVolume() -mesin : Boolean
-merk : String
-listrik : Boolean
+Televisi(in merk : String)
+on()
+off()
+gantiChannel(in c : int)
«interface»
interfaceMobil
+NyalakanMesin()
+MatikanMesin()
+TambahkanGerigi()
+TurunkanGerigi()
+TekanGas()
«interface»
interfaceSirine
Latihan
+TekanRem() +NyalakanSirine()
+MatikanSirine()
+GantiSuaraSirine(in Jenis : int)

Mobil
-mesin : bool = false

Untuk
MobilPribadi
MobilTransportasi
-jmlKursi : int
+NyalakanTape() MobilNegara
latihan,
+TambahPenumpang()
+NyalakanTV()
+NyalakanAC() +NyalakanTape()
ubahlah
+NyalakanMesin()
+MatikanMesin()
+NyalakanTV()
+NyalakanAC() struktur
+TambahGerigi()
+TurunkanGerigi() kelas
+TekanGas()
Bus +TekanRem() diagram
+NyalakanTape()
+NyalakanTV() Ambulance
disampi
+NyalakanAC()
+NyalakanMesin() +NyalakanTape() ng ke
+MatikanMesin()
+TambahGerigi()
+NyalakanTV()
+NyalakanAC()
MobilPolisi
dalam
+TurunkanGerigi() +NyalakanMesin() +NyalakanTape()
+TekanGas()
+TekanRem()
+MatikanMesin()
+TambahGerigi()
+NyalakanTV()
+NyalakanAC()
bahasa
+TambahPenumpang() +TurunkanGerigi()
+TekanGas()
+NyalakanMesin()
+MatikanMesin()
pemrogr
+TekanRem()
+NyalakanSirine()
+TambahGerigi()
+TurunkanGerigi()
aman
+MatikanSirine() +TekanGas()
+GantiSirine(in Jenis : int) +TekanRem()
+NyalakanSirine()
+MatikanSirine()
+GantiSirine(in Jenis : int)
+NyalakanRadioHT()
+MatikanRadioHT()

Anda mungkin juga menyukai