Polymophism
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 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(in Nama : char)
+Bernafas()
-Nama : char
-Rumpun : char
MakhlukHidup
+Binatang(in Nama : char)
+Bertumbuh()
+Berjalan()
+Kecepatan(in Nilai : int)
Binatang
+Tumbuhan(in Nama : char)
+Bertumbuh()
Tumbuhan
+Karnivora(in Nama : char)
+Memakan(in Binatang : Binatang)
+Kecepatan(in nilai : int)
+Kecepatan(in nilai : double)
Karnivora
+Herbivora(in Nama : char)
+Memakan(in Tumbuhan : Tumbuhan)
+Kecepatan(in nilai : int)
+Kecepatan(in nilai : double)
Herbivora
Overriding
Overriding
Overloading
Overloading
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
 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
+walk()
+sound()
-jmlKaki : int
Animal
+walk()
+sound()
Kucing
+walk()
+sound()
Ayam
Nama kelas dengan
Nama kelas dengan
cetak miring merupakan
cetak miring merupakan
simbol kelas abstrak
simbol kelas abstrak
public abstract class animal {
private int jmlKaki;
public abstract void walk();
public abstract void sound();
}
class kucing extends
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.
• 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.
Interface Kelas Abstrak
Tidak dapat membuat
implementasi method
Dapat membuat
implementasi method
Sebuah kelas dapat
mengimplementasikan
beberapa interface
Sebuah kelas hanya dapat
meng-Extends satu
superclass.
Mengapa menggunakan interface?
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
+on()
+off()
+gantiChannel(in channel : int)
+perbesarVolume()
+perkecilVolume()
-mesin : bool = false
-channel : char
-volume : int = 0
Radio
+On()
+Off()
«interface»
interfaceElektronik
+on()
+off()
+percepatKipas()
+perlambatKipas()
-mesin : bool = false
-kecepatanKipas : int = 0
Kipas
Kelas yang meng-Implements
suatu interface maka kelas
tersebut harus mengOverride
method yang ada pada
interface.
Dari contoh disamping, method
on dan off merupakan
method overriding dari
interface interfaceElektronik
public interface interfaceElektronik
{
public void on();
public void off();
}
public class Radio implements
interfaceElektronik
{
boolean mesin=false;
String[] channel={“Prambos FM","Smart
FM","Buana FM",“Bahana 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
Latihan
+gantiChannel(in c : int)
«interface»
interfaceChannelRadio
+gantiChannel(in c : int)
«interface»
interfaceChannelTV
+on()
+off()
«interface»
InterfaceElektronik
+on()
+off()
+gantichannel(in c : int)
+perbesarVolume()
+perkecilVolume()
-mesin : Boolean
-volume : int
Radio
+Televisi(in merk : String)
+on()
+off()
+gantiChannel(in c : int)
-mesin : Boolean
-merk : String
-listrik : Boolean
Televisi
Ubahlah struktur Kelas
Diagram disamping
ke dalam bahasa
pemrograman
Latihan
Latihan
-mesin : bool = false
Mobil
+NyalakanMesin()
+MatikanMesin()
+TambahkanGerigi()
+TurunkanGerigi()
+TekanGas()
+TekanRem()
«interface»
interfaceMobil
+NyalakanSirine()
+MatikanSirine()
+GantiSuaraSirine(in Jenis : int)
«interface»
interfaceSirine
+TambahPenumpang()
-jmlKursi : int
MobilTransportasi
+NyalakanTape()
+NyalakanTV()
+NyalakanAC()
MobilNegara
+NyalakanTape()
+NyalakanTV()
+NyalakanAC()
+NyalakanMesin()
+MatikanMesin()
+TambahGerigi()
+TurunkanGerigi()
+TekanGas()
+TekanRem()
+NyalakanSirine()
+MatikanSirine()
+GantiSirine(in Jenis : int)
Ambulance
+NyalakanTape()
+NyalakanTV()
+NyalakanAC()
+NyalakanMesin()
+MatikanMesin()
+TambahGerigi()
+TurunkanGerigi()
+TekanGas()
+TekanRem()
MobilPribadi
+NyalakanTape()
+NyalakanTV()
+NyalakanAC()
+NyalakanMesin()
+MatikanMesin()
+TambahGerigi()
+TurunkanGerigi()
+TekanGas()
+TekanRem()
+NyalakanSirine()
+MatikanSirine()
+GantiSirine(in Jenis : int)
+NyalakanRadioHT()
+MatikanRadioHT()
MobilPolisi
+NyalakanTape()
+NyalakanTV()
+NyalakanAC()
+NyalakanMesin()
+MatikanMesin()
+TambahGerigi()
+TurunkanGerigi()
+TekanGas()
+TekanRem()
+TambahPenumpang()
Bus
Untuk latihan, ubahlah
struktur kelas diagram
disamping ke dalam
bahasa pemrograman
Latihan
Latihan
1. Buatlah program pendataan seperti tampilan dibawah
Menu Utama.
-------------------------------
Nis : _
Nama : _
Alamat : _
Jenis Kel [L/P] : _
Tgl Lahir : _
-------------------------------
Laporan Pendaftaran
==========================================================
Nis Nama Alamat Jenis Kel Tgl lahir
--------------------------------------------------------------------------------------------------
0001 Dimas Andika Jl. Pringgading Laki-Laki 3/4/1995
0002 Singgih P. Jl. Sampangan Laki-Laki 4/4/1995
0003 Lina Wati - Perempuan
5/9/1995

Pemrograman Berorientasi Objek AbstractClass_dan_Interface.ppt

  • 2.
    Polymophism Polymophism Polimorfisme (Polimorphism) berasaldari 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 ).
  • 3.
    Overriding dan Overloading Overridingdan 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 )
  • 4.
    +MakhlukHidup(in Nama :char) +Bernafas() -Nama : char -Rumpun : char MakhlukHidup +Binatang(in Nama : char) +Bertumbuh() +Berjalan() +Kecepatan(in Nilai : int) Binatang +Tumbuhan(in Nama : char) +Bertumbuh() Tumbuhan +Karnivora(in Nama : char) +Memakan(in Binatang : Binatang) +Kecepatan(in nilai : int) +Kecepatan(in nilai : double) Karnivora +Herbivora(in Nama : char) +Memakan(in Tumbuhan : Tumbuhan) +Kecepatan(in nilai : int) +Kecepatan(in nilai : double) Herbivora Overriding Overriding Overloading Overloading
  • 5.
    Sebuah kelas dapatdideklarasikan 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
  • 6.
    Untuk membuat sebuahkelas atau method menjadi abstrak maka menggunakan keyword abstract setelah modifier pada deklarasi kelas atau method. Contoh kelas abstrak public abstract class Unggas { }
  • 7.
    Method Abstrak 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
  • 8.
    +walk() +sound() -jmlKaki : int Animal +walk() +sound() Kucing +walk() +sound() Ayam Namakelas dengan Nama kelas dengan cetak miring merupakan cetak miring merupakan simbol kelas abstrak simbol kelas abstrak
  • 9.
    public abstract classanimal { private int jmlKaki; public abstract void walk(); public abstract void sound(); }
  • 10.
    class kucing extends extendsanimal { public void walk() { System.out.println("Berjalan dengan 4 kaki"); } public void sound() { System.out.println("Meeooo...ong"); } }
  • 11.
    class ayam extendsanimal { public void walk() { System.out.println("Berjalan dengan 2 kaki"); } public void sound() { System.out.println("Kuku Ruyuuuukk"); } }
  • 12.
     Menggunakan abstractclass 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.
  • 13.
  • 14.
    • Interface mendefinisikanaturan 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.
  • 15.
    • Secara subtansiInterface 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.
  • 16.
    Interface Kelas Abstrak Tidakdapat membuat implementasi method Dapat membuat implementasi method Sebuah kelas dapat mengimplementasikan beberapa interface Sebuah kelas hanya dapat meng-Extends satu superclass.
  • 17.
    Mengapa menggunakan interface? Mengapamenggunakan 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
  • 18.
    +on() +off() +gantiChannel(in channel :int) +perbesarVolume() +perkecilVolume() -mesin : bool = false -channel : char -volume : int = 0 Radio +On() +Off() «interface» interfaceElektronik +on() +off() +percepatKipas() +perlambatKipas() -mesin : bool = false -kecepatanKipas : int = 0 Kipas Kelas yang meng-Implements suatu interface maka kelas tersebut harus mengOverride method yang ada pada interface. Dari contoh disamping, method on dan off merupakan method overriding dari interface interfaceElektronik
  • 19.
    public interface interfaceElektronik { publicvoid on(); public void off(); }
  • 20.
    public class Radioimplements interfaceElektronik { boolean mesin=false; String[] channel={“Prambos FM","Smart FM","Buana FM",“Bahana FM"}; int volume=0; public void on() { mesin=true; } public void off() { mesin=false; } … Continue
  • 21.
    public class Kipasimplements interfaceElektronik { boolean mesin=false; int kecepatanKipas=0; public void on() { mesin=true; } public void off() { mesin=false; } … Continue
  • 22.
    Latihan Latihan +gantiChannel(in c :int) «interface» interfaceChannelRadio +gantiChannel(in c : int) «interface» interfaceChannelTV +on() +off() «interface» InterfaceElektronik +on() +off() +gantichannel(in c : int) +perbesarVolume() +perkecilVolume() -mesin : Boolean -volume : int Radio +Televisi(in merk : String) +on() +off() +gantiChannel(in c : int) -mesin : Boolean -merk : String -listrik : Boolean Televisi Ubahlah struktur Kelas Diagram disamping ke dalam bahasa pemrograman
  • 23.
    Latihan Latihan -mesin : bool= false Mobil +NyalakanMesin() +MatikanMesin() +TambahkanGerigi() +TurunkanGerigi() +TekanGas() +TekanRem() «interface» interfaceMobil +NyalakanSirine() +MatikanSirine() +GantiSuaraSirine(in Jenis : int) «interface» interfaceSirine +TambahPenumpang() -jmlKursi : int MobilTransportasi +NyalakanTape() +NyalakanTV() +NyalakanAC() MobilNegara +NyalakanTape() +NyalakanTV() +NyalakanAC() +NyalakanMesin() +MatikanMesin() +TambahGerigi() +TurunkanGerigi() +TekanGas() +TekanRem() +NyalakanSirine() +MatikanSirine() +GantiSirine(in Jenis : int) Ambulance +NyalakanTape() +NyalakanTV() +NyalakanAC() +NyalakanMesin() +MatikanMesin() +TambahGerigi() +TurunkanGerigi() +TekanGas() +TekanRem() MobilPribadi +NyalakanTape() +NyalakanTV() +NyalakanAC() +NyalakanMesin() +MatikanMesin() +TambahGerigi() +TurunkanGerigi() +TekanGas() +TekanRem() +NyalakanSirine() +MatikanSirine() +GantiSirine(in Jenis : int) +NyalakanRadioHT() +MatikanRadioHT() MobilPolisi +NyalakanTape() +NyalakanTV() +NyalakanAC() +NyalakanMesin() +MatikanMesin() +TambahGerigi() +TurunkanGerigi() +TekanGas() +TekanRem() +TambahPenumpang() Bus Untuk latihan, ubahlah struktur kelas diagram disamping ke dalam bahasa pemrograman
  • 24.
    Latihan Latihan 1. Buatlah programpendataan seperti tampilan dibawah Menu Utama. ------------------------------- Nis : _ Nama : _ Alamat : _ Jenis Kel [L/P] : _ Tgl Lahir : _ ------------------------------- Laporan Pendaftaran ========================================================== Nis Nama Alamat Jenis Kel Tgl lahir -------------------------------------------------------------------------------------------------- 0001 Dimas Andika Jl. Pringgading Laki-Laki 3/4/1995 0002 Singgih P. Jl. Sampangan Laki-Laki 4/4/1995 0003 Lina Wati - Perempuan 5/9/1995