Anda di halaman 1dari 13

MODUL

Pemrograman Berorientasi Objek


Menggunakan Bahasa Pemrograman Java

Penyusun:
Annisa Nurul Puteri
MODUL
•••

POLYMORPHISM 7

Polymorphism merupakan fitur dalam pemrograman berorientasi objek


untuk mengizinkan programmer mengirimkan pesan yang sama terhadap
objek-objek dari class yang berbeda-beda. Polymorphism memungkinkan
untuk menulis kode yang mudah untuk dimodifikasi dan di-extend. Jenis-jenis
polymorphism:

Penulisan method
Overloading yang sama pada
class yang sama.
Polymorphism
Penulisan method
yangs sama pada
Overriding class yang
berbeda.

Gambar 7. 1 Polymorphism

Overloading mengacu pada method yang sama pada class yang


sama, sedangkan overriding mengacu pada class yang sama method yang
berbeda. Overloading biasa terjadi pada constructor dengan ketentuan:
nama method sama, parameter berbeda baik dari sisi tipe data yang
digunakan, jumlah parameter maupun susunan parameternya.
Berikut adalah contoh overloading:
public class Mahasiswa{
private String nama, nim;
public mahasiswa(String nama){
this.nama = nama;
}
public mahasiswa(String nama, String nim){
this.nama = nama;
this.nim = nim;
}
}

1
MODUL
•••

Perhatikan contoh overloading di atas, pada constructor


mahasiswa(String nama) memiliki satu parameter dan constructor yang
kedua mahasiswa(String nama, String nim) memiliki dua variable
instance class.

A. Overriding
Overriding merupakan jenis polymorphism yang bisa diterapkan
pada class turunan, overriding method terkait pada konsep inheritance
dalam pemrograman berorientasi objek, di mana method di class induk
dapat diperluas di class turunannya, dan class turunan dapat mengubah
isi method pada super class.
Karakteristik Overriding:
• Method dari super class yang bisa di-override yaitu semua method
dengan akses modifier default, public, dan protected.
• Method constructor di super class tidak bisa di-override.
• Jenis tipe data dan susunan parameter di method superclass tidak
berubah.

B. Casting dan Instance Of


Casting adalah memasukkan suatu nilai dari salah satu tipe terhadap
suatu variabel dari tipe yang lain. Terdapat dua jenis casting, yaitu
widening dan narrowing. Pada Widening casting bersifat implisit, konversi
tipe secara otomatis, kedua tipe tersebut harus kompatibel dan tipe dari
target harus lebih besar dari pada tipe sumber. Sedangkan pada
Narrowing casting bersifat eksplisit.

Double
N
Float a
W r
i Long r
d o
e Int w
n i
i Short n
n g
g Byte

Gambar 7. 2 Tipe-tipe Casting

2
MODUL
•••

1. Widening
Pada tipe Widening data target harus lebih besar dari tipe data sumber.
Seperti yang sudah dijelaskan, tipe data Short memiliki jangkauan dari
range -32768 sampai dengan 32767, artinya ketika akan meng-assign
nilai dengan jangkauan di atas 100000, maka setidaknya harus
menaikkan tipe data tersebut menjadi int, begitu pula selanjutnya.
Berikut adalah contoh widening casting:

public class PPoly_Casting {


/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
int i = 50;
long l = i;
float f = l;

System.out.println("int value: "+i);


System.out.println("long value: "+l);
System.out.println("float value: "+f);
}
}

2. Narrowing
Kebalikan dari tipe widening, pada narrowing tipe data target harus
lebih kecil dari tipe data sumber. Misalnya dalam tipe data int memiliki
jangkauan diantara 10000 sampai 30000, maka bisa menggunakan
short, begitu pula untuk tipe data lain yang berada di bawahnya.
Berikut adalah contoh widen casting:

public class Widen_casting {


public static void main(String args[]){
double d = 25.17;
long l = (long)d;
int i = (int)l;

System.out.println("double value: "+d);


System.out.println("long value: "+l);
System.out.println("int value: "+i);
}
}

3
MODUL
•••

C. Virtual Method Invocation


Virtual method invocation merupakan bentuk dari Upcasting. Pada saat
objek dibuat pada parent class dengan konsep override, java compiler
akan melakukan invocation atau perintah atau pemanggilan terhadap
method pada suatu subclass yang di-overriding tersebut, hal ini yang
disebut dengan overridden.

D. Upcasting
Pada upcasting, child object di-casted terhadap parent class
menggunakan reference variabel, pada Downcasting, objek di-casted
kembali terhadap child class menggunakan reference variabel.

Ilustrasi upcasting:
Parent p;
P = new Parent ( );

- Number = 10
- toString() = “parent”
- toString( )

ChildA cA;
cA = new ChildA( );

- Number = 20
- toString():“child a”
- toString()
- methodA():”method a”
- methodA()

selanjutnya, jika mengisikan p dengan cA, maka p dan cA tersebut akan


mengacu pada satu method yang sama, perhatikan ilustrasi berikut:
P = cA;
system.out.println(p.toString( ))
system.out.println(p.number);

- Number = 10
- toString( )
- toString():“child a”
- methodA():”method a”
- Number = 20
- toString()
- methodA()

4
MODUL
•••

E. Downcasting
Downcasting merupakan upaya pengembalian suatu objek yang telas di-
upcasted kepada bentuk original objek class tersebut. Downcasting
merupakan explisit casting.

5
MODUL
•••

Praktikum 7a

1. Buatlah sebuah project baru dengan nama P_VMI

2. Pada package P_VMI, buatlah empat class baru dengan nama Parent,
ChildA, ChildB, dan GrandChildA.

3. Tuliskan source code program berikut pada class Parent.java

public class Parent {


public String toString(){
return "Ini adalah class parent";
}
}

4. Tuliskan source code program berikut pada class ChildA.java

public class ChildA extends Parent{


public String toString(){
return "Ini adalah class Child A";
}
}

5. Tuliskan source code program berikut pada class ChildB.java

public class ChildB extends Parent{


public String toString(){
return "Ini adalah class Child B";
}
}

6. Tuliskan source code program berikut pada class GrandChildA.java

public class GrandChildA extend ChildA{


public String tostring(){
retrn "Ini adalah class Grand Child";
}
}

7. Tuliskan source code program berikut pada main class

6
MODUL
•••

public static void main(String[] args) {


// TODO code application logic here
Parent p = new Parent();
ChildA cA = new ChildA();
ChildB cB = new ChildB();
GrandChildA gC = new GrandChildA();

System.out.println(p.toString());

System.out.println(cA.toString());

System.out.println(cB.toString());

System.out.println(gC.toString());
}
}

8. Klik button Run atau tekan F6 pada main class, perhatikan output yang
diperoleh dan lakukan problem solving jika terjadi error!

Tuliskan Hasil Output

9. Jelaskan proses yang terjadi pada source code di setiap class.

7
MODUL
•••

Praktikum 7b

1. Buatlah sebuah project baru dengan nama P_Upcasting.

2. Pada package P_Upcasting, buatlah empat class baru dengan nama Parent,
ChildA, ChildB, dan GrandChildA.

3. Tuliskan source code program berikut pada class Parent.java

public class Parent {


protected int number = 13;
public String toString() {
return "parent " + number;
}
}

4. Tuliskan source code program berikut pada class ChildA.java

public class ChildA extends Parent{


Protected int number = 23;
public String toString(){
return "Child A " + number;
}
public string methodA(){
return "Method Child A ";
}
}

5. Tuliskan source code program berikut pada class ChildB.java

public class ChildB extend Parent{


Protected int number = 33;
public String toString(){
return "Child B " + number;
}
public string methodB(){
retrn "Method Child B ";
}
}

8
MODUL
•••

6. Tuliskan source code program berikut pada class GrandChildA.java

public class GrandChildA extends ChildA{


Protected int number = 43;
public String tostring(){
return "Grand Child " + number;
}
public String metodGrand(){
return "Method Grand Child A ";
}
}

7. Tuliskan source code program berikut pada main class.

public static void main(String[] args) {


// TODO code application logic here
Parent p = new Parent();
ChildA cA = new ChildA();
ChildB cB = new ChildB();
GrandChildA gC = new GrandChildA();
Parent castP;

System.out.println(p.toString());
System.out.println(cA.toString());
System.out.println(cB.toString());
System.out.println(gC.toString());
}
}

8. Klik button Run atau tekan F6 pada main class, perhatikan output yang
diperoleh dan lakukan problem solving jika terjadi error!

Tuliskan Hasil Output

9. Jelaskan proses yang terjadi pada source code di setiap class.

9
MODUL
•••

Praktikum 7c

1. Buatlah sebuah project baru dengan nama P_Downcasting.

2. Pada package P_Downcasting, buatlah empat class baru dengan nama


Parent, ChildA, ChildB, dan GrandChild.

3. Tuliskan source code program berikut pada class Parent.java

public class Parent {


protected int number = 13;
Public String toString(){
return "Parent " + number;
}
}

4. Tuliskan source code program berikut pada class ChildA.java

public class ChildA extends Parent{


protected int number = 23;
public String toString(){
return "Child A " + number;
}
public String methodA(){
return "method Child A";
}
}

5. Tuliskan source code program berikut pada class ChildB.java

public class ChildB extends Parent {


protected int number = 33;
public String toString(){
return "Child B " + number;
}
public String methodB(){
return "method Child B";
}
}

10
MODUL
•••

6. Tuliskan source code program berikut pada class GrandChildA.java

public class GrandChildA extends ChildA {


protected int number = 43;
public String toString(){
return "Grand Child " + number;
}
public String methodGrand(){
return "method Grand Child A";
}
}

7. Tuliskan source code program berikut pada main class.

public static void main(String[] args) {


// TODO code application logic here
Parent castP;

castP = new GrandChildA();


System.out.println(castP.toString());
//System.out.println(castP.methodA()); //ini script error

GrandChildA castG = (GrandChildA) castP;


System.out.println(castG.toString());
System.out.println(castG.methodA());
System.out.println(castG.methodGrand());

ChildA castA = (ChildA) castP;


System.out.println(castA.toString());
System.out.println(castA.methodA());
}
}

8. Klik button Run atau tekan F6 pada main class, perhatikan output yang
diperoleh dan lakukan problem solving jika terjadi error!

Tuliskan Hasil Output

11
MODUL
•••

9. Jelaskan proses yang terjadi pada source code di setiap class.

10. Jelaskan perbedaan antara Praktikum 7a, 7b, dan 7c!

12

Anda mungkin juga menyukai