Anda di halaman 1dari 31

11S2110– Pemrograman

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?

• The term “Polymorphism” comes from the Greek


words for “many shapes”.

“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."); }
} …

Anjing Ayam Kucing Ular


- berbisa
+ bersuara() + bersuara() + bersuara() + bersuara()
+bergerak()
S1 Informatika ICB/PBO 6
Syarat Overriding

• Method overriding: signature dan return type suatu method


pada kelas anak sama dengan yang ada pada method di kelas
bapak
– Method signature:
• method name
• parameters/argument type
• parameters/argument orders
• Overriding bisa dilakukan pada instance method dan pada
static method.
S1 Informatika ICB/PBO 7
8

ICB/PBO
Overriding
9

Bukan
Overriding

Bukan Overriding dan


menyebabkan compile
error.
ICB/PBO
Outputnya:
8

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

Dua jenis polymorphism:


a. Compile Time Polymorphism (Static Binding)
b. Run Time Polymorphism (Dynamic Binding)

S1 Informatika ICB/PBO 16
Compile Time polymorphism (Static Binding )

• Compile Time polymorphism (Static Binding )


– Saat compile time, suatu objek sudah dapat diasosiasikan dengan
method mana yang akan dipanggil berdasarkan method signature.
– Overloading

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 )

• Run Time polymorphism (Dynamic Binding ):


– Asosiasi objek pada fungsinya baru dapat dilakukan saat eksekusi/run
time.
– Dynamic binding adalah aturan yang menjamin bahwa operasi yang
akan dilakukan terhadap objek pada saat run time selalu berdasarkan
type objek pada saat run time tersebut.
– Overriding

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

Anjing Ayam Kucing Ular


- berbisa
+ bersuara() + bersuara() + bersuara() + bersuara()
+bergerak()
S1 Informatika ICB/PBO 20
if chosen_icon is rectangle_icon then
s = new Rectangle();
else if chosen_icon is triangle_icon then
s = new Circle();
end if
x = s.getArea();

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

Foo a = new Foo (‘x’,’’,new Foo(‘x’));


Foo r = new Foo(‘z’);

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)

Faa P1 = new Faa (‘X’,’Y’,’Z’);


Faa P2 = new Faa(‘A’,’B’,’C’);
P2=copy(P1);

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

Anda mungkin juga menyukai