Bahasa Pemrograman 2 - 8lecturer.ukdw.ac.id/anton/download/bp28.pdf · Polimorfisme dan Binding...
Transcript of Bahasa Pemrograman 2 - 8lecturer.ukdw.ac.id/anton/download/bp28.pdf · Polimorfisme dan Binding...
Bahasa Pemrograman 2
Polimorfisme dan BindingPolimorfisme dan [email protected]
PolymorphismPolymorphism
P l hi P l M h• Polymorphism = Poly + Morphos
• Poly = banyak, Morphos = bentuk
• Kemampuan obyek‐obyek yang berbeda untukmemberi respons terhadap permintaan yang
i d i i b ksama, sesuai dengan cara masing‐masing obyek• Polymorfisme dapat diterapkan secara:
O idi M h d– Overriding Method– Overloading Method
PolymorphismPolymorphism
Review: OverridingReview: Overriding
• Subclass yang berusahamemodifikasi tingkahlaku yang diwarisi dari superclass.y g p
• Tujuan: subclass memiliki tingkah laku yang lebih spesifik.
• Dilakukan dengan caramendeklarasikan• Dilakukan dengan caramendeklarasikankembalimethod milik parent class di subclass.
Review: OverridingReview: Overriding
D kl i th d d b l h• Deklarasi method pada subclass harus samadengan yang terdapat di super class. Kesamaan pada:Kesamaan pada:– NamaR t t– Return type
– Daftar parameter (jumlah, tipe, dan urutan)M h d d l di b id• Method pada parent class disebut overridenmethod
h d d b l d b idi• Method pada subclass disebut overridingmethod.
Review: OverridingReview: Overriding
• Class Anjing melakukan overriding terhadapmethod bersuara() yang diturunkan dari class () y gBinatang
• Dengan overriding, suatu method yang didapatkan oleh subclass bisa melakukan halyang berbeda dengan method asli padayang berbeda dengan method asli padasuperclassnya
Review: OverridingReview: Overriding
M d k idi th d h• Mode akses overriding method harus samaatau lebih luas dari pada overriden method.
• Subclass hanya boleh meng‐override method l k li j d k b l h d l b hsuperclass satu kali saja, tidak boleh ada lebih
dari satu method pada kelas yang sama yang sama persissama persis.– Jika lebih dari satu berarti ada 2 method yang sama persis dalam satu kelassama persis dalam satu kelas
Review: OverridingReview: Overriding
• Contoh:
class Binatang {class Binatang {public String bersuara() {
return "Suara binatang";g}
}
class Anjing extends Binatang {public String bersuara() {public String bersuara() {
return "Guk guk";}}
}
Review: OverridingReview: Overriding
l d idi ki d• Dalam metode overriding, kita dapat memanggil metode overriden.
• Menggunakan keyword: super.namaMethod()p ()
• supermenandakan konstruktor sekaligus• super menandakan konstruktor sekaligus superclass– Konstruktor disesuaikan dgn parameternya– Superclass bisa memanggil methodnya
Review: OverridingReview: Overriding
• Contoh:class Mahasiswa {
public void perkenalan() {System.out.print("Objek mahasiswa");
}}}
class MhsSI extends Mahasiswa {public void perkenalan() {
super.perkenalan();System.out.println(“SI");
}}}
Review: OverridingReview: Overriding
• Contoh:class CobaMhs {
public static void main(String[] args) {{
Mahasiswa baru = new MhsSI();baru.perkenalan();p ();
}}
Review: Overloading MethodReview: Overloading Method
• Menuliskan kembalimethod dengan namayang sama pada suatu class.y g p
T j d hk• Tujuan : memudahkanpenggunaan/pemanggilan method denganfungsionalitas yang mirip.
OverloadingOverloading
Aturan overloading:
• Nama method harus sama
• Daftar parameter harus berbedaDaftar parameter harus berbeda
• Return type boleh sama, juga boleh berbeda
Overloading MethodOverloading Method
• Contoh:
public void println (char c);public void println (String s);public void println (int i);public void println (int i);public void println (String s, double d);
ContohContoh
PolimorfismePolimorfisme
• Berhubungan dengan abstract class• Kelas abstract “memaksa” kelas anakKelas abstract memaksa kelas anak mengoverride method yg abstract dikelas induk sehingga kelas anak dapat “bertingkahinduk sehingga kelas anak dapat bertingkah laku” seperti yang diinginkannya!– Berbeda dengan induknya– Namun masih “sejenis dengan induknya”j g y
PolimorfismePolimorfisme
• Sifat “sejenis” dengan induknya itulah yang dapat digunakan untuk membuat kelas p g“umum” yang dapat menggunakan kelas yang bertipe induk namun bertingkah laku sesuaibertipe induk namun bertingkah laku sesuai dengan kelas anaknya
h• Contoh
bli b t t l B t k {public abstract class Bentuk {private String jenis;public abstract void hitungLuas();public abstract void hitungLuas();public void setJenis(String j){
this jenis = j;this.jenis = j;}public String getJenis(){public String getJenis(){
return this.jenis;}}
}
l Segitiga t d Bent k{class Segitiga extends Bentuk{private int alas;private int tinggi;
public void hitungLuas(){System out println ("Luas : "+(0 5*alas*tinggi));System.out.println ( Luas : +(0.5*alas*tinggi));
}public Segitiga(String j,int a,int t){
super.setJenis(j);this.alas = a;this tinggi = t;this.tinggi = t;
}}
l P i t d B t k{class Persegi extends Bentuk{private int sisi;public void hitungLuas(){public void hitungLuas(){
System.out.println ("Luas : "+(sisi*sisi));}}public Persegi(String j,int s){
super setJenis(j);super.setJenis(j);this.sisi = s;
}}}
class Pemakai{class Pemakai{public void Laporkan(Bentuk b){
System.out.println ("Jenis : "+b.getJenis());b hitungLuas();b.hitungLuas();
}
public static voidmain(String args[]) {public static void main(String args[]) {Pemakai p = new Pemakai();Segitiga s = new Segitiga("segitiga",5,4);Persegi pp = new Persegi("bujur sangkar",9);g pp g ( j g , );p.Laporkan(s);p.Laporkan(pp);
}
}
Proses binding obyek oleh compilerProses binding obyek oleh compiler
• Binding = pengikatan obyek oleh compiler• Static bindingStatic binding• Dyanamic binding
Static BindingStatic Binding
• Binding dilakukan saat compile‐time• Overloading berarti ada beberapa methodOverloading berarti ada beberapa method dengan nama yang sama.
M th d dij l k t t d i– Method yang dijalankan tergantung dari parameter yang diberikan
• Pemilihan method yang dijalankan ditentukan saat compile time (static binding)p ( g)
Static BindingStatic BindingC t hContoh:
public void println (char c);public void println (String s);public void println (String s);public void println (int i);public void println (String s, double d); p p ( g , );
println(“PBO”);println(2000);println(“a”);i tl (‘b’)println(‘b’);
println(“Data”, 2.0);
Dynamic BindingDynamic BindingBi di dil k k t ti (d i )• Binding dilakukan saat run‐time (dynamic)
• Penentuan method mana yang dijalankan dilakukan saatrun‐time
Contoh:
void kill (Mortal m) {m.killed();
}}
Misalnya orang dan tanaman masuk dalam class Mortal makaMisalnya orang dan tanaman masuk dalam class Mortal, maka method killed() yang dipanggil tergantung dari siapa pemanggilnya.
ContohContoh
Dynamic BindingDynamic Binding
• Dynamic binding dapat dilakukan dengan 2 cara:– Overriding Inheritance MethodOverriding Interface Method– Overriding Interface Method
Overriding Inheritance MethodOverriding Inheritance Method
“Guk Guk” Meong… “Mbeeekkkk”
PolymorphismPolymorphisml Bi t {class Binatang {private String name;public Binatang(String n) {
name = n;}public String getName() {public String getName() {
return name;}
public void bersuara() {System out println(“Binatang bersuara”);System.out.println( Binatang bersuara );
}}
PolymorphismPolymorphism
l A ji t d Bi t {class Anjing extends Binatang {Anjing(String n) {
( )super(n);}
public void bersuara() {System.out.println(“Guk guk guk”);
}}}
PolymorphismPolymorphism
l K i t d Bi t {class Kucing extends Binatang {Kucing(String n) {
( )super(n);}
public void bersuara() {System.out.println(“meong meong”);
}}}
Penentuan PolimorfismePenentuan Polimorfisme
• Penentuan “siapa” obyek sesungguhnya yang diacu oleh kompiler dapat diakses p pmenggunakan casting sesuai dengan tipe data class anak yang sebenarnya!class anak yang sebenarnya!
Contoh Casting PolymorfismeContoh Casting Polymorfismeclass A extends Object{class A extends Object{
public void m(){ System.out.println("m in class A");
} }}
class B extends A{ public void m(){
System.out.println("m in class B"); }
}
public class CobaPoly{ public static void main(String[] args){
Object var = new B(); ((B) var) m();((B) var).m();
}}
Aturan interfaceAturan interface
• Suatu interface dapat mengekstends interface lain
• Tujuannya: memperluas kemampuan interfaceI f h bi d i f j• Interface hanya bisa extends interface saja– Tidak bisa extends class & abstract class
Overriding Interface MethodOverriding Interface Method
hContoh:interface I1{ {
public void p(); }}
interface I2 extends I1{ public void q();public void q();
}
Overriding Interface MethodOverriding Interface Method
l d bj {class A extends Object{public String toString(){p g g(){
return "toString in A"; }}public String x(){
return "x in A"; }}
}
Overriding Interface MethodOverriding Interface Method
class B extends A implements I2{public void p(){ System.out.println ("p() in B"); }p p(){ y p ( p() ); }public void q(){ System.out.println ("q() in B"); }
}}class C extends Object implements I2{public void p(){ System.out.println ("p() in C"); }public void q(){ System out println ("p() in C"); }public void q(){ System.out.println ( p() in C ); }
}
public class demoInterface {public class demoInterface {
public static void main(String[] args) {
A a = new A();System.out.println (a.x());
C c = new C();c.p();c.q();
B b = new B();b.p();b.q();
}}}
NEXTNEXT
• Package & Class‐class penting