Bahasa Pemrograman 2 - 8lecturer.ukdw.ac.id/anton/download/bp28.pdf · Polimorfisme dan Binding...

39
Bahasa Pemrograman 2 Polimorfisme dan Binding Polimorfisme dan Binding [email protected]

Transcript of Bahasa Pemrograman 2 - 8lecturer.ukdw.ac.id/anton/download/bp28.pdf · Polimorfisme dan Binding...

Page 1: Bahasa Pemrograman 2 - 8lecturer.ukdw.ac.id/anton/download/bp28.pdf · Polimorfisme dan Binding anton@ukdw.ac.id. Polymorphism • Pl hiPolymorphism = PlPoly + MhMorphos • Poly

Bahasa Pemrograman 2

Polimorfisme dan BindingPolimorfisme dan [email protected]

Page 2: Bahasa Pemrograman 2 - 8lecturer.ukdw.ac.id/anton/download/bp28.pdf · Polimorfisme dan Binding anton@ukdw.ac.id. Polymorphism • Pl hiPolymorphism = PlPoly + MhMorphos • Poly

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

Page 3: Bahasa Pemrograman 2 - 8lecturer.ukdw.ac.id/anton/download/bp28.pdf · Polimorfisme dan Binding anton@ukdw.ac.id. Polymorphism • Pl hiPolymorphism = PlPoly + MhMorphos • Poly

PolymorphismPolymorphism

Page 4: Bahasa Pemrograman 2 - 8lecturer.ukdw.ac.id/anton/download/bp28.pdf · Polimorfisme dan Binding anton@ukdw.ac.id. Polymorphism • Pl hiPolymorphism = PlPoly + MhMorphos • Poly

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.

Page 5: Bahasa Pemrograman 2 - 8lecturer.ukdw.ac.id/anton/download/bp28.pdf · Polimorfisme dan Binding anton@ukdw.ac.id. Polymorphism • Pl hiPolymorphism = PlPoly + MhMorphos • Poly

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.

Page 6: Bahasa Pemrograman 2 - 8lecturer.ukdw.ac.id/anton/download/bp28.pdf · Polimorfisme dan Binding anton@ukdw.ac.id. Polymorphism • Pl hiPolymorphism = PlPoly + MhMorphos • Poly

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

Page 7: Bahasa Pemrograman 2 - 8lecturer.ukdw.ac.id/anton/download/bp28.pdf · Polimorfisme dan Binding anton@ukdw.ac.id. Polymorphism • Pl hiPolymorphism = PlPoly + MhMorphos • Poly

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

Page 8: Bahasa Pemrograman 2 - 8lecturer.ukdw.ac.id/anton/download/bp28.pdf · Polimorfisme dan Binding anton@ukdw.ac.id. Polymorphism • Pl hiPolymorphism = PlPoly + MhMorphos • Poly

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";}}

}

Page 9: Bahasa Pemrograman 2 - 8lecturer.ukdw.ac.id/anton/download/bp28.pdf · Polimorfisme dan Binding anton@ukdw.ac.id. Polymorphism • Pl hiPolymorphism = PlPoly + MhMorphos • Poly

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

Page 10: Bahasa Pemrograman 2 - 8lecturer.ukdw.ac.id/anton/download/bp28.pdf · Polimorfisme dan Binding anton@ukdw.ac.id. Polymorphism • Pl hiPolymorphism = PlPoly + MhMorphos • Poly

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");

}}}

Page 11: Bahasa Pemrograman 2 - 8lecturer.ukdw.ac.id/anton/download/bp28.pdf · Polimorfisme dan Binding anton@ukdw.ac.id. Polymorphism • Pl hiPolymorphism = PlPoly + MhMorphos • Poly

Review: OverridingReview: Overriding

• Contoh:class CobaMhs {

public static void main(String[] args) {{

Mahasiswa baru = new MhsSI();baru.perkenalan();p ();

}}

Page 12: Bahasa Pemrograman 2 - 8lecturer.ukdw.ac.id/anton/download/bp28.pdf · Polimorfisme dan Binding anton@ukdw.ac.id. Polymorphism • Pl hiPolymorphism = PlPoly + MhMorphos • Poly

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.

Page 13: Bahasa Pemrograman 2 - 8lecturer.ukdw.ac.id/anton/download/bp28.pdf · Polimorfisme dan Binding anton@ukdw.ac.id. Polymorphism • Pl hiPolymorphism = PlPoly + MhMorphos • Poly

OverloadingOverloading

Aturan overloading:

• Nama method harus sama

• Daftar parameter harus berbedaDaftar parameter harus berbeda

• Return type boleh sama, juga boleh berbeda

Page 14: Bahasa Pemrograman 2 - 8lecturer.ukdw.ac.id/anton/download/bp28.pdf · Polimorfisme dan Binding anton@ukdw.ac.id. Polymorphism • Pl hiPolymorphism = PlPoly + MhMorphos • Poly

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); 

Page 15: Bahasa Pemrograman 2 - 8lecturer.ukdw.ac.id/anton/download/bp28.pdf · Polimorfisme dan Binding anton@ukdw.ac.id. Polymorphism • Pl hiPolymorphism = PlPoly + MhMorphos • Poly

ContohContoh

Page 16: Bahasa Pemrograman 2 - 8lecturer.ukdw.ac.id/anton/download/bp28.pdf · Polimorfisme dan Binding anton@ukdw.ac.id. Polymorphism • Pl hiPolymorphism = PlPoly + MhMorphos • Poly

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

Page 17: Bahasa Pemrograman 2 - 8lecturer.ukdw.ac.id/anton/download/bp28.pdf · Polimorfisme dan Binding anton@ukdw.ac.id. Polymorphism • Pl hiPolymorphism = PlPoly + MhMorphos • Poly

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

Page 18: Bahasa Pemrograman 2 - 8lecturer.ukdw.ac.id/anton/download/bp28.pdf · Polimorfisme dan Binding anton@ukdw.ac.id. Polymorphism • Pl hiPolymorphism = PlPoly + MhMorphos • Poly

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;}}

}

Page 19: Bahasa Pemrograman 2 - 8lecturer.ukdw.ac.id/anton/download/bp28.pdf · Polimorfisme dan Binding anton@ukdw.ac.id. Polymorphism • Pl hiPolymorphism = PlPoly + MhMorphos • Poly

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;

}}

Page 20: Bahasa Pemrograman 2 - 8lecturer.ukdw.ac.id/anton/download/bp28.pdf · Polimorfisme dan Binding anton@ukdw.ac.id. Polymorphism • Pl hiPolymorphism = PlPoly + MhMorphos • Poly

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;

}}}

Page 21: Bahasa Pemrograman 2 - 8lecturer.ukdw.ac.id/anton/download/bp28.pdf · Polimorfisme dan Binding anton@ukdw.ac.id. Polymorphism • Pl hiPolymorphism = PlPoly + MhMorphos • Poly

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);

}

}

Page 22: Bahasa Pemrograman 2 - 8lecturer.ukdw.ac.id/anton/download/bp28.pdf · Polimorfisme dan Binding anton@ukdw.ac.id. Polymorphism • Pl hiPolymorphism = PlPoly + MhMorphos • Poly

Proses binding obyek oleh compilerProses binding obyek oleh compiler

• Binding = pengikatan obyek oleh compiler• Static bindingStatic binding• Dyanamic binding

Page 23: Bahasa Pemrograman 2 - 8lecturer.ukdw.ac.id/anton/download/bp28.pdf · Polimorfisme dan Binding anton@ukdw.ac.id. Polymorphism • Pl hiPolymorphism = PlPoly + MhMorphos • Poly

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)

Page 24: Bahasa Pemrograman 2 - 8lecturer.ukdw.ac.id/anton/download/bp28.pdf · Polimorfisme dan Binding anton@ukdw.ac.id. Polymorphism • Pl hiPolymorphism = PlPoly + MhMorphos • Poly

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);

Page 25: Bahasa Pemrograman 2 - 8lecturer.ukdw.ac.id/anton/download/bp28.pdf · Polimorfisme dan Binding anton@ukdw.ac.id. Polymorphism • Pl hiPolymorphism = PlPoly + MhMorphos • Poly

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.

Page 26: Bahasa Pemrograman 2 - 8lecturer.ukdw.ac.id/anton/download/bp28.pdf · Polimorfisme dan Binding anton@ukdw.ac.id. Polymorphism • Pl hiPolymorphism = PlPoly + MhMorphos • Poly

ContohContoh

Page 27: Bahasa Pemrograman 2 - 8lecturer.ukdw.ac.id/anton/download/bp28.pdf · Polimorfisme dan Binding anton@ukdw.ac.id. Polymorphism • Pl hiPolymorphism = PlPoly + MhMorphos • Poly

Dynamic BindingDynamic Binding

• Dynamic binding dapat dilakukan dengan 2 cara:– Overriding Inheritance MethodOverriding Interface Method– Overriding Interface Method

Page 28: Bahasa Pemrograman 2 - 8lecturer.ukdw.ac.id/anton/download/bp28.pdf · Polimorfisme dan Binding anton@ukdw.ac.id. Polymorphism • Pl hiPolymorphism = PlPoly + MhMorphos • Poly

Overriding Inheritance MethodOverriding Inheritance Method

“Guk Guk” Meong… “Mbeeekkkk”

Page 29: Bahasa Pemrograman 2 - 8lecturer.ukdw.ac.id/anton/download/bp28.pdf · Polimorfisme dan Binding anton@ukdw.ac.id. Polymorphism • Pl hiPolymorphism = PlPoly + MhMorphos • Poly

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 );

}} 

Page 30: Bahasa Pemrograman 2 - 8lecturer.ukdw.ac.id/anton/download/bp28.pdf · Polimorfisme dan Binding anton@ukdw.ac.id. Polymorphism • Pl hiPolymorphism = PlPoly + MhMorphos • Poly

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”);

}}}

Page 31: Bahasa Pemrograman 2 - 8lecturer.ukdw.ac.id/anton/download/bp28.pdf · Polimorfisme dan Binding anton@ukdw.ac.id. Polymorphism • Pl hiPolymorphism = PlPoly + MhMorphos • Poly

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”);

}}}

Page 32: Bahasa Pemrograman 2 - 8lecturer.ukdw.ac.id/anton/download/bp28.pdf · Polimorfisme dan Binding anton@ukdw.ac.id. Polymorphism • Pl hiPolymorphism = PlPoly + MhMorphos • Poly

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!

Page 33: Bahasa Pemrograman 2 - 8lecturer.ukdw.ac.id/anton/download/bp28.pdf · Polimorfisme dan Binding anton@ukdw.ac.id. Polymorphism • Pl hiPolymorphism = PlPoly + MhMorphos • Poly

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();

}}

Page 34: Bahasa Pemrograman 2 - 8lecturer.ukdw.ac.id/anton/download/bp28.pdf · Polimorfisme dan Binding anton@ukdw.ac.id. Polymorphism • Pl hiPolymorphism = PlPoly + MhMorphos • Poly

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

Page 35: Bahasa Pemrograman 2 - 8lecturer.ukdw.ac.id/anton/download/bp28.pdf · Polimorfisme dan Binding anton@ukdw.ac.id. Polymorphism • Pl hiPolymorphism = PlPoly + MhMorphos • Poly

Overriding Interface MethodOverriding Interface Method

hContoh:interface I1{ {

public void p(); }} 

interface I2 extends I1{ public void q();public void q(); 

Page 36: Bahasa Pemrograman 2 - 8lecturer.ukdw.ac.id/anton/download/bp28.pdf · Polimorfisme dan Binding anton@ukdw.ac.id. Polymorphism • Pl hiPolymorphism = PlPoly + MhMorphos • Poly

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"; }}

}

Page 37: Bahasa Pemrograman 2 - 8lecturer.ukdw.ac.id/anton/download/bp28.pdf · Polimorfisme dan Binding anton@ukdw.ac.id. Polymorphism • Pl hiPolymorphism = PlPoly + MhMorphos • Poly

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 ); }

}

Page 38: Bahasa Pemrograman 2 - 8lecturer.ukdw.ac.id/anton/download/bp28.pdf · Polimorfisme dan Binding anton@ukdw.ac.id. Polymorphism • Pl hiPolymorphism = PlPoly + MhMorphos • Poly

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();

}}}

Page 39: Bahasa Pemrograman 2 - 8lecturer.ukdw.ac.id/anton/download/bp28.pdf · Polimorfisme dan Binding anton@ukdw.ac.id. Polymorphism • Pl hiPolymorphism = PlPoly + MhMorphos • Poly

NEXTNEXT

• Package & Class‐class penting