11S2110 PBO W6 Polymorphism
11S2110 PBO W6 Polymorphism
Berorientasi Objek
Polymorphism
Topik
Definisi Polimorfisme
Bentuk-bentuk polimorfisme
Compile vs Runtime Polymorphism
Operasi pada objek
S1 Informatika ICB/PBO 2
Tujuan
• Dapat menjelaskan dengan benar mengenai istilah
polimorfisme, polymorphic assignment, dan polymorphic
data structure.
• Dapat menggunakan polimorfisme dengan benar pada kode
program.
• Dapat menjelaskan perbedaan operasi pada objek vs tipe
primitif, apa itu copy dan clone.
S1 Informatika ICB/PBO 3
Definisi Polymorphism?
“one interface,
multiple methods”
S1 Informatika ICB/PBO 4
Inheritance
• Overriding adalah
pendefinisian ulang behaviour /
perilaku yang diwariskan oleh:
Kelas bapak kepada kelas
anak.
Interface kepada kelas yang
implement Interface (akan
dibahas pada topik Interface)
S1 Informatika ICB/PBO 5
//Binatang.java Binatang Overriding adalah salah bentuk
… # usia
public void bergerak(){ # jenis implementasi polimorfisme.
S.o.p("Berjalan
dengan "+ jumlahKaki+"
# jumlahKaki //Ular.java
kaki"); # nama …
} + bergerak() public void bergerak(){
public void makan(){ S.o.p("Melata
+ makan()
S.o.p(nama +"sedang dengan perut");
makan."); }
} …
…
ICB/PBO
Overriding
9
Bukan
Overriding
15
10 11.2
10.0
ICB/PBO
Overloading
• Overloading: kemampuan suatu nama untuk diasosiasikan ke
lebih dari satu arti.
– Sejumlah method di dalam satu kelas menggunakan nama yang
sama.
– Jumlah atau tipe atau urutan variabel parameternya berbeda.
S1 Informatika ICB/PBO 11
public class Point {
private int x; private int y;
//overloading constructor
Point(){
x = 0; y = 0;
}
Point(int a, int b){
x = a; y = b;
}
//overloading method
public void addPoint(Point p){
x = p.getAbsis();
y = p.getOrdinat();
}
public Point addPoint(Point p1, Point p2){
return(new Point
(p1.getAbsis+p2.getAbsis(),
p1.getOrdinat() + p2.getOrdinat()));
}
}
S1 Informatika ICB/PBO 12
Polymorphic Assignment
class ShapeDriver{
public static void main(String args[]){ Shape
Shape s;
Rectangle r = new Rectangle();
Circle c = new Circle();
Rectangle Circle
s = r;
System.out.println(s.getArea()); … r
r = s; rro
s = c; E
System.out.println(s.getArea()); ile Point();
Point p =pnew
} s = p;Com
}
r = p;
S1 Informatika ICB/PBO
… 13
Polymorphic Data Structure
• Array of polygon.
14
ICB/PBO
Polymorphic Data Structure
Shape
• Array of polygon.
Rectangle Triangle Circle
15
public class ShapeCollection {
private static int MAX_EL=10;
private Shape[] arrShape = new Shape[MAX_EL];
//…kode program lain
public boolean addShape(Shape anyShape) {
arrShape[0] = new Triangle(); //….
arrShape[2] = new Rectangle(); arrShape[indeks]=anyShape;
}
//…
} ICB/PBO
Polymorphism
S1 Informatika ICB/PBO 16
Compile Time polymorphism (Static Binding )
S1 Informatika ICB/PBO 17
public class Point {
private int x; private int y;
//overloading constructor public class PointDriver{
Point(){ public static void main (String args[]){
x = 0; y = 0;
}
Point p = new Point();
Point(int a, int b){ Point p2 = new Point(2,3);
x = a; y = b;
} p.addPoint(p1);
//overloading method
public void addPoint(Point p){
Point p3 = p.addPoint(p1,p2);
x = p.getAbsis(); }
y = p.getOrdinat(); }
}
public Point addPoint(Point p1, Point p2){
return(new Point
(p1.getAbsis+p2.getAbsis(),
p1.getOrdinat() + p2.getOrdinat()));
}
}
S1 Informatika ICB/PBO 18
Run Time polymorphism (Dynamic Binding )
S1 Informatika ICB/PBO 19
Binatang
# usia public class BinatangDriver(){
# jenis public static void main(String [] args){
# jumlahKaki Binatang b = new Binatang();
# nama Ular u = new Ular();
+ bergerak() b = u;
+ makan() b.bergerak();
}
}
S1 Informatika ICB/PBO 21
Operasi Pada Object
S1 Informatika ICB/PBO 22
Operasi Pada Object
(sumber: IL, Diktat OOP, 2003)
S1 Informatika ICB/PBO 23
Operasi Pada Object (sumber: IL, Diktat OOP, 2003)
S1 Informatika ICB/PBO 24
class Foo{
private char c;
private char d;
private Foo f;
//…kode program lain
public Foo setf( Foo obj){
f = obj;
}
}
S1 Informatika ICB/PBO 25
class Foo{
private int x;
private int y;
private int z;
//…kode program lain
}
a.setf(r);
S1 Informatika ICB/PBO 26
Operasi Pada Object
(sumber: IL, Diktat OOP, 2003)
Foo x, y;
y = new Foo(‘A’);
x =clone (y);
S1 Informatika ICB/PBO 27
Operasi Pada Object
(sumber: IL, Diktat OOP, 2003)
S1 Informatika ICB/PBO 28
class Person{
char nama;
Person cintaKe;
Person guru;
}
S1 Informatika ICB/PBO 29
S1 Informatika ICB/PBO 30
Referensi
• Schildt, Herbert.2018.Java: The Complete Reference, Eleventh
Edition, 11th Edition.McGraw-Hill. Page. 227-232
• Matt Weisfeld. The Object-Oriented Thought Process. 3rd
Edition. 2008. Addison-Wesley Professional. Page 45, 145-162
• IL, Diktat OOP, 2003
S1 Informatika ICB/PBO 31