SlideShare a Scribd company logo
1 of 9
Download to read offline
Modul PBO – Teknokrat
52
POLIMORFISME (POLYMORPISHM)
Tujuan
Praktikan dapat memahami dan menjelaskan konsep polimorfisme dalam
perograman serta dapat mengimplementasikan ke dalam pemrograman Java.
POLIMORFISME
Polimorfisme (polymorpishm) bearti banyak bentuk (bahasa Yunani). Dalam pemrograman
berorientasi obyek, digunakan untuk memerintah obyek agar melakukan aksi atau tindakan yang
mungkin secara prinsip sama namun secara proses berbeda.
Dalam konsep yang lebih umum sering kali polymorphism disebut dalam istilah satu interface
banyak aksi. Contoh yang konkrit dalam dunia nyata yaitu mobil. Mobil yang ada dipasaran terdiri
atas berbagai tipe dan berbagai merk, namun semuanya memiliki interface kemudi yang sama,
seperti: stir, tongkat transmisi, pedal gas dan rem. Jika seseorang dapat mengemudikan satu jenis
mobil saja dari satu merk tertentu, maka orang itu akan dapat mengemudikan hamper semua jenis
mobil yang ada, karena semua mobil tersebut menggunakan interface yang sama.
Harus diperhatikan disini bahwa interface yang sama tidak berarti cara kerjanya juga sama. Misal
pedal gas, jika ditekan maka kecepatan mobil akan meningkat, tapi bagaiman proses peningkatan
kecepatan ini dapat berbeda-beda untuk setiap jenis mobil.Dengan menggunakan OOP maka dalam
melakukan pemecahan suatu masalah kita tidak melihat bagaimana cara menyelesaikan suatu
masalah tersebut (terstruktur) tetapi obyekobyek apa yang dapat melakukan pemecahan masalah
tersebut.
VIRTUAL METHOD INVOCATION (VMI)
Virtual method invocation (VMI) merupakan suatu hal yang sangat penting dalam konsep
polimorfisme. Syarat terjadinya VMI adalah sebelumnya sudah terjadi polymorphism. Pada saat
obyek yang sudah dibuat tersebut memanggil overridden method pada parent class, kompiler Java
akan melakukan invocation (pemanggilan) terhadap overriding method pada subclass, dimana yang
seharusnya dipanggil adalah overridden. Berikut adalah contoh terjadinya VMI:
Program 6-1
// Test.java
class Parent {
int x = 5;
public void info() {
System.out.println("Ini kelas Parent");
}
}
BAB
6
Modul PBO – Teknokrat
53
class Child extends Parent {
int x = 10;
public void info() {
System.out.println("Ini kelas Child");
}
}
public class Tes {
public static void main(String [] args) {
Parent tes = new Child();
System.out.println("Nilai x = " + tes.x);
tes.info();
}
}
Hasil Output
Nilai x = 5
Ini kelas Child
Berdasarkan program di atas, yang terjadi adalah:
· Obyek tes mempunyai behavior yang sesuai dengan runtime type bukan compile type
· Ketika compile time tes adalah Parent
· Ketika runtime tes adalah Child
· Jadi:
o tes hanya bisa mengakses variabel milik Parent
o tes hanya bisa mengakses method milik Child
Pada pembentukan
Parent tes = new Child();
Pertama kali akan menjalankan konstruktor Child, ketika bertemu super() maka akan menjalankan
konstruktor Parent (super class), setelah semua statement dieksekusi baru kemudian menjalankan
konstruktor Child (subclass).
POLYMORPHIC ARGUMENTS
Polymorphic arguments adalah tipe data suatu argumen pada suatu method yang bisa menerima
suatu nilai bertipe subclass-nya. Polymorphic arguments diperlukan, bertujuan untuk
mengefisiensikan pembuatan program. Misalnya suatu kelas memiliki banyak subclass, maka perlu
didefinisikan semua method yang menangani behaviour dari masing-masing subclass. Dengan
adanya polymorphic arguments cukup mendefinisikan satu method saja yang bisa digunakan untuk
menangani behaiour semua kelas. Berikut adalah contoh dari polymorphic arguments:
Program 6-
2
// food.java
public class food {
void eat() { System.out.println("this food is great"); }
}
Modul PBO – Teknokrat
54
// tuna.java
public class tuna extends food {
void eat() { System.out.println("this tuna is great"); }
}
// potpie.java
public class potpie extends food {
void eat() { System.out.println("this potpie is great"); }
}
// apples.java
public class apples {
public static void main(String [] args) {
patty bucky = new patty();
food fo = new food();
food po = new potpie();
// penerapan polymorphic argument
bucky.digest(fo);
bucky.digest(po);
}
}
Hasil Output
this food is great
this potpie is great
OPERATOR INSTANCEOF
Pernyataan instanceof sangat berguna untuk mengetahui tipe asal dari suatu polymorphic
arguments. Untuk lebih jelas, berikut kita modifikasi contoh program sebelumnya:
Program 6-
3
// food.java
public class food {
void eat() {
System.out.println("this food is great");
}
}
// tuna.java
public class tuna extends food {
void eat() {
System.out.println("this tuna is great");
}
}
// potpie.java
public class potpie extends food {
void eat() {
System.out.println("this potpie is great");
}
}
Modul PBO – Teknokrat
55
// patty.java
public class patty {
public void digest(food x) {
if(x instanceof tuna) {
tuna t = (tuna) x;
t.eat();
} else if(x instanceof potpie) {
potpie p = (potpie) x;
p.eat();
} else {
x.eat();
}
}
}
// apples.java
public class apples {
public static void main(String [] args) {
patty bucky = new patty();
tuna fo = new tuna();
potpie po = new potpie();
bucky.digest(fo);
bucky.digest(po);
}
}
Hasil Output
this potpie is great
this tuna is great
Pemakaian instanceof seringkali diikuti dengan casting obyek dari tipe parameter ke tipe asal.
Contohnya pada program di atas, pada saat kita melakukan instanceof dari tipe tuna, kita dapat
melakukan casting object ke tipe asalnya, yaitu tuna. Berikut adalah cara untuk melakukan casting:
Program 6-4
// patty.java
public class patty {
public void digest(food x) {
// ...
if(x instanceof tuna) {
tuna t = (tuna) x;
// ...
}
// ...
}
}
Tanpa melakukan casting obyek, maka nilai yang akan kita pakai setelah proses instanceof masih
bertipe parent class-nya, sehingga jika tipe tersebut perlu dipakai maka harus dicasting terlebih
dahulu ke tipe subclass-nya.
Modul PBO – Teknokrat
56
OVERRIDING
Overriding adalah suatu keadaan dimana subclass memodifikasi tingkah laku yang diwarisi dari super
class. Tujuannya untuk menspesifikan tingkah laku dari subclass tersebut. Overriding dilakukan
dengan cara mendeklarasikan kembali method milik super class di dalam sub class. Deklarasi method
pada subclass harus sama dengan yang terdapat pada di super class, yaitu kesamaan pada nama,
return type, dan daftar parameter (jumlah, tipe, dan urutan). Method pada parent class disebut
overriden method dan pada subclass disebut overriding method. Berikut ini contoh terjadinya
overriding:
Program 6-5
// Employee.java
public class Employee {
protected String name;
protected double salary;
protected Date birthDate;
public String getDetails() {
return "Name: " + name + "n" +
"Salary: " + salary;
}
}
// Manager.java
public class Manager extends Employee {
protected String departement;
public String getDetail() {
return "Name: " + name + "n" +
"Salary: " + salary + "n" +
"Manager of: " + departement;
}
}
Program 6-6
// Animal.java
public class Animal {
public void setVoice() {
System.out.println("Blesesppblesep");
}
}
// Dog.java
public class Dog extends Animal {
public void setVoice() {
System.out.println("Hug..hug..");
}
}
Berdasarkan contoh program di atas, terjadinya overriding pada method getDetails, dimana method
tersebut di-override oleh kelas Manager. Method yang terkena override (overriden method)
diharuskan tidak boleh mempunyai modifier yang lebih luas aksesnya dari method yang meng-
override (overriding method).
Modul PBO – Teknokrat
57
OVERLOADING
Overloading adalah suatu keadaan dimana beberapa method memiliki nama yang sama namun
mempunyai fungsionalitas yang berbeda. Tujuannya untuk memudahkan penggunaan/pemanggilan
method dengan fungsional yang mirip. Dalam pendeklarasian overloading aturan yang digunakan
yaitu nama method harus sama, daftar parameter harus berbeda, dan return type boleh sama, juga
boleh berbeda. Berikut adalah contoh implementasi overloading:
Program 6-7
// MethodOverload.java
public class MethodOverload {
public void test() {
System.out.println("Kuadrat dari integer 7 = " + kuadrat(7));
System.out.println("Kuadrat dari double 7.5 = " + kuadrat(7.5));
}
// method kuadrat untuk integer
public int kuadrat(int bil) {
return bil * bil;
}
// method kuadrat untuk double
public double kuadrat(double bil) {
return bil * bil;
}
}
// MethodOverloadRun.java
public class MethodOverloadRun {
public static void main(String [] args) {
MethodOverload x = new MethodOverload();
x.test();
}
}
Berdasarkan kode program di atas, method yang di-overloading adalah kuadrat. Berikut adalah
perbedaan pada kedua method tersebut:
Tabel 6. 1 Contoh method overloading
Tipe return Nama method Daftar Parameter
int Kuadrat (int bil)
double Kuadrat (double bil)
↓ ↓ ↓
Berbeda Sama Berbeda
Berikut adalah contoh potongan kode program yang menerapkan method overloading:
Modul PBO – Teknokrat
58
public class Bentuk {
// ...
public void Gambar(int t1) {
// ...
}
public void Gambar(int t1, int t2) {
// ...
}
public void Gambar(int t1, int t2, int t3) {
// ...
}
public void Gambar(int t1, int t2, int t3, int t4) {
// ...
}
}
Overloading juga bisa terjadi antara parent class dengan subclass-nya jika memenuhi ketiga syarat
overload yang sudah disebutkan sebelumnya. Misalnya dari kelas Bentuk pada kode program
sebelumnya diturunkan menjadi kelas baru yang bernama WarnaiBentuk, seperti berikut:
public class Bentuk {
public void Gambar(String warna, int t1) {
// ...
}
public void Gambar(String warna, int t1, int t2) {
// ...
}
// ...
}
CONSTUCTOR OVERLOADING
Suatu kelas bisa memiliki lebih dari satu konstruktor dengan syarat daftar paramenternya tidak
boleh ada yang sama, bentuk inilah yang dinamakan dengan konstruktor overloading. Berikut adalah
contoh bentuk konstruktor overloading:
Program 6-8
// Mahasiswa.java
public class Mahasiswa {
private String npm;
private String nama;
private int umur;
public Mahasiswa() {
// Default konstruktor
npm = "";
nama = "";
umur = 18;
}
Modul PBO – Teknokrat
59
public Mahasiswa(String npm, String nama, int umur) {
// Parameter konstruktor
this.npm = npm;
this.nama = nama;
this.umur = umur;
}
// Getter & Setter Method
public String getNpm() {
return npm;
}
public void setNpm(String npm) {
this.npm = npm;
}
public String getNama() {
return nama;
}
public void setNama(String nama) {
this.nama = nama;
}
public int getUmur() {
return umur;
}
public void setUmur(int umur) {
this.umur = umur;
}
}
// MahasiswaOverloadingTest.java
public class MahasiswaOverloadingTest {
public static void main(String [] args) {
Mahasiswa obj = new Mahasiswa();
System.out.println("NPM : " + obj.getNpm());
System.out.println("Nama : " + obj.getNama());
System.out.println("Umur : " + obj.getUmur());
Mahasiswa obj2 = new Mahasiswa("12312343", "Anditya", 19);
System.out.println("NPM : " + obj2.getNpm());
System.out.println("Nama : " + obj2.getNama());
System.out.println("Umur : " + obj2.getUmur());
}
}
Modul PBO – Teknokrat
60
Lembar Kerja Praktikum: Modul 6
NPM: Asisten:
Nama: Nilai:
Kelas: Tanggal:
Soal
Perhatikan kelas diagram berikut:
1. Jelaskan pengertian dari Polimorfisme, Overloading, dan Overriding.
2. Jelaskan perbedaan antara Polimorfisme dengan Inheritance.
3. Jelaskan perbedaan antara Overloading dengan Overriding.

More Related Content

What's hot

Laporan Praktikum OS
Laporan Praktikum OS Laporan Praktikum OS
Laporan Praktikum OS Ibrahim Naki
 
Modul praktikum java pemrograman berorientasi objek
Modul praktikum java pemrograman berorientasi objekModul praktikum java pemrograman berorientasi objek
Modul praktikum java pemrograman berorientasi objekimam arifin
 
ERD Sistem Informasi Pemesanan Tiket Bioskop Online
ERD Sistem Informasi Pemesanan Tiket Bioskop OnlineERD Sistem Informasi Pemesanan Tiket Bioskop Online
ERD Sistem Informasi Pemesanan Tiket Bioskop OnlineLucha Kamala Putri
 
Modul PBO Bab-07 - Enkapsulasi (Encapsulation)
Modul PBO Bab-07 - Enkapsulasi (Encapsulation)Modul PBO Bab-07 - Enkapsulasi (Encapsulation)
Modul PBO Bab-07 - Enkapsulasi (Encapsulation)Rakhmat Dedi Gunawan
 
[PBO] Pertemuan 11 - GUI Java Desktop
[PBO] Pertemuan 11 - GUI Java Desktop[PBO] Pertemuan 11 - GUI Java Desktop
[PBO] Pertemuan 11 - GUI Java Desktoprizki adam kurniawan
 
Laporan praktikum modul 3 (erd notasi peterchen) -
Laporan praktikum modul 3 (erd notasi peterchen) -Laporan praktikum modul 3 (erd notasi peterchen) -
Laporan praktikum modul 3 (erd notasi peterchen) -Devi Apriansyah
 
Kolaborasi jQuery, AJAX, PHP, dan MySQL
Kolaborasi jQuery, AJAX, PHP, dan MySQLKolaborasi jQuery, AJAX, PHP, dan MySQL
Kolaborasi jQuery, AJAX, PHP, dan MySQLI Putu Arya Dharmaadi
 
12. keuntungan pemograman dengan menggunakan polymorphism
12. keuntungan pemograman dengan menggunakan polymorphism12. keuntungan pemograman dengan menggunakan polymorphism
12. keuntungan pemograman dengan menggunakan polymorphismSaprudin Eskom
 
1. 3.10.1. Dampak Sosial Informatika (Etika dalam TIK).pptx
1. 3.10.1. Dampak Sosial Informatika (Etika dalam TIK).pptx1. 3.10.1. Dampak Sosial Informatika (Etika dalam TIK).pptx
1. 3.10.1. Dampak Sosial Informatika (Etika dalam TIK).pptxDediPratmoSihite
 
Proposal sistem pakar tentang anak autis
Proposal sistem pakar tentang anak autisProposal sistem pakar tentang anak autis
Proposal sistem pakar tentang anak autisWidya Kusumawati
 

What's hot (20)

Laporan Praktikum OS
Laporan Praktikum OS Laporan Praktikum OS
Laporan Praktikum OS
 
Modul praktikum-pemrograman java dgn netbeans
Modul praktikum-pemrograman java dgn netbeansModul praktikum-pemrograman java dgn netbeans
Modul praktikum-pemrograman java dgn netbeans
 
Class Diagram
Class DiagramClass Diagram
Class Diagram
 
Modul praktikum java pemrograman berorientasi objek
Modul praktikum java pemrograman berorientasi objekModul praktikum java pemrograman berorientasi objek
Modul praktikum java pemrograman berorientasi objek
 
ERD Sistem Informasi Pemesanan Tiket Bioskop Online
ERD Sistem Informasi Pemesanan Tiket Bioskop OnlineERD Sistem Informasi Pemesanan Tiket Bioskop Online
ERD Sistem Informasi Pemesanan Tiket Bioskop Online
 
Modul PBO Bab-07 - Enkapsulasi (Encapsulation)
Modul PBO Bab-07 - Enkapsulasi (Encapsulation)Modul PBO Bab-07 - Enkapsulasi (Encapsulation)
Modul PBO Bab-07 - Enkapsulasi (Encapsulation)
 
PDO (php data object)
PDO (php data object)PDO (php data object)
PDO (php data object)
 
[PBO] Pertemuan 11 - GUI Java Desktop
[PBO] Pertemuan 11 - GUI Java Desktop[PBO] Pertemuan 11 - GUI Java Desktop
[PBO] Pertemuan 11 - GUI Java Desktop
 
Laporan Praktikum Basis Data
Laporan Praktikum Basis DataLaporan Praktikum Basis Data
Laporan Praktikum Basis Data
 
Array dan fungsi
Array dan fungsiArray dan fungsi
Array dan fungsi
 
[PBO] Pertemuan 6 - Interface
[PBO] Pertemuan 6 - Interface[PBO] Pertemuan 6 - Interface
[PBO] Pertemuan 6 - Interface
 
[PBO] Pertemuan 4 - Getter Setter
[PBO] Pertemuan 4 - Getter Setter[PBO] Pertemuan 4 - Getter Setter
[PBO] Pertemuan 4 - Getter Setter
 
Laporan praktikum modul 3 (erd notasi peterchen) -
Laporan praktikum modul 3 (erd notasi peterchen) -Laporan praktikum modul 3 (erd notasi peterchen) -
Laporan praktikum modul 3 (erd notasi peterchen) -
 
Kolaborasi jQuery, AJAX, PHP, dan MySQL
Kolaborasi jQuery, AJAX, PHP, dan MySQLKolaborasi jQuery, AJAX, PHP, dan MySQL
Kolaborasi jQuery, AJAX, PHP, dan MySQL
 
Activity Diagram
Activity DiagramActivity Diagram
Activity Diagram
 
12. keuntungan pemograman dengan menggunakan polymorphism
12. keuntungan pemograman dengan menggunakan polymorphism12. keuntungan pemograman dengan menggunakan polymorphism
12. keuntungan pemograman dengan menggunakan polymorphism
 
Materi 8 aljabar relasional
Materi 8 aljabar relasionalMateri 8 aljabar relasional
Materi 8 aljabar relasional
 
1. 3.10.1. Dampak Sosial Informatika (Etika dalam TIK).pptx
1. 3.10.1. Dampak Sosial Informatika (Etika dalam TIK).pptx1. 3.10.1. Dampak Sosial Informatika (Etika dalam TIK).pptx
1. 3.10.1. Dampak Sosial Informatika (Etika dalam TIK).pptx
 
Proposal sistem pakar tentang anak autis
Proposal sistem pakar tentang anak autisProposal sistem pakar tentang anak autis
Proposal sistem pakar tentang anak autis
 
inheritance
inheritanceinheritance
inheritance
 

Similar to POLIMORFISME

pertemuan_06_-_Konsep_PBO(InheratanceMultiple_Inheratance_Polimorpisme.pptx
pertemuan_06_-_Konsep_PBO(InheratanceMultiple_Inheratance_Polimorpisme.pptxpertemuan_06_-_Konsep_PBO(InheratanceMultiple_Inheratance_Polimorpisme.pptx
pertemuan_06_-_Konsep_PBO(InheratanceMultiple_Inheratance_Polimorpisme.pptxssuserc54f06
 
Java (Netbeans) Polymorphism - Object Oriented Programming (OOP)
Java (Netbeans) Polymorphism - Object Oriented Programming (OOP)Java (Netbeans) Polymorphism - Object Oriented Programming (OOP)
Java (Netbeans) Polymorphism - Object Oriented Programming (OOP)Melina Krisnawati
 
Pbo inheritance, polymorphism, dan inte
Pbo inheritance, polymorphism, dan intePbo inheritance, polymorphism, dan inte
Pbo inheritance, polymorphism, dan inteSmkn-2 Pekanbaru
 
Laporan PBO pratikum 2
Laporan PBO pratikum 2Laporan PBO pratikum 2
Laporan PBO pratikum 2rahmi wahyuni
 
Konsep Inheritance
Konsep InheritanceKonsep Inheritance
Konsep InheritanceRiski_kiki
 
Materi object yg kosong
Materi object yg kosongMateri object yg kosong
Materi object yg kosongkgsrizky
 
Laporan PBO Pratikum 3
Laporan PBO Pratikum 3Laporan PBO Pratikum 3
Laporan PBO Pratikum 3rahmi wahyuni
 
Pemrograman Berorientasi Objek "Pengenalan Dasar Pemrograman JAVA"
Pemrograman Berorientasi Objek "Pengenalan Dasar Pemrograman JAVA"Pemrograman Berorientasi Objek "Pengenalan Dasar Pemrograman JAVA"
Pemrograman Berorientasi Objek "Pengenalan Dasar Pemrograman JAVA"Asnita Meydelia C K
 
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)Debby Ummul
 
Laporan pratikum iv web
Laporan pratikum iv webLaporan pratikum iv web
Laporan pratikum iv webrahmi wahyuni
 
Modul pratikum pbo - ENCAPSULATION
Modul pratikum pbo - ENCAPSULATIONModul pratikum pbo - ENCAPSULATION
Modul pratikum pbo - ENCAPSULATIONrahmantoyuri
 
Basic Java Application - Sesi 5
Basic Java Application - Sesi 5Basic Java Application - Sesi 5
Basic Java Application - Sesi 5Rudi Hartono
 
Unit 6 polymorphism
Unit 6   polymorphismUnit 6   polymorphism
Unit 6 polymorphismNafta If
 

Similar to POLIMORFISME (20)

pertemuan_06_-_Konsep_PBO(InheratanceMultiple_Inheratance_Polimorpisme.pptx
pertemuan_06_-_Konsep_PBO(InheratanceMultiple_Inheratance_Polimorpisme.pptxpertemuan_06_-_Konsep_PBO(InheratanceMultiple_Inheratance_Polimorpisme.pptx
pertemuan_06_-_Konsep_PBO(InheratanceMultiple_Inheratance_Polimorpisme.pptx
 
Java (Netbeans) Polymorphism - Object Oriented Programming (OOP)
Java (Netbeans) Polymorphism - Object Oriented Programming (OOP)Java (Netbeans) Polymorphism - Object Oriented Programming (OOP)
Java (Netbeans) Polymorphism - Object Oriented Programming (OOP)
 
Pbo inheritance, polymorphism, dan inte
Pbo inheritance, polymorphism, dan intePbo inheritance, polymorphism, dan inte
Pbo inheritance, polymorphism, dan inte
 
Laporan PBO pratikum 2
Laporan PBO pratikum 2Laporan PBO pratikum 2
Laporan PBO pratikum 2
 
Konsep Inheritance
Konsep InheritanceKonsep Inheritance
Konsep Inheritance
 
Materi object yg kosong
Materi object yg kosongMateri object yg kosong
Materi object yg kosong
 
Jobsheet 4 LOOPING( PENGULANGAN)
Jobsheet 4 LOOPING( PENGULANGAN)Jobsheet 4 LOOPING( PENGULANGAN)
Jobsheet 4 LOOPING( PENGULANGAN)
 
Tugas Praktikum ke dua
Tugas Praktikum ke duaTugas Praktikum ke dua
Tugas Praktikum ke dua
 
Overridung polymorphism
Overridung polymorphismOverridung polymorphism
Overridung polymorphism
 
Modul Object Oriented Programming
Modul Object Oriented ProgrammingModul Object Oriented Programming
Modul Object Oriented Programming
 
Laporan PBO Pratikum 3
Laporan PBO Pratikum 3Laporan PBO Pratikum 3
Laporan PBO Pratikum 3
 
Pemrograman Berorientasi Objek "Pengenalan Dasar Pemrograman JAVA"
Pemrograman Berorientasi Objek "Pengenalan Dasar Pemrograman JAVA"Pemrograman Berorientasi Objek "Pengenalan Dasar Pemrograman JAVA"
Pemrograman Berorientasi Objek "Pengenalan Dasar Pemrograman JAVA"
 
04 inheritance
04 inheritance04 inheritance
04 inheritance
 
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.1-6)
 
Materi pelatihan java fundamental
Materi pelatihan java fundamentalMateri pelatihan java fundamental
Materi pelatihan java fundamental
 
Laporan pratikum iv web
Laporan pratikum iv webLaporan pratikum iv web
Laporan pratikum iv web
 
Modul pratikum pbo - ENCAPSULATION
Modul pratikum pbo - ENCAPSULATIONModul pratikum pbo - ENCAPSULATION
Modul pratikum pbo - ENCAPSULATION
 
P5 depandi enda
P5 depandi endaP5 depandi enda
P5 depandi enda
 
Basic Java Application - Sesi 5
Basic Java Application - Sesi 5Basic Java Application - Sesi 5
Basic Java Application - Sesi 5
 
Unit 6 polymorphism
Unit 6   polymorphismUnit 6   polymorphism
Unit 6 polymorphism
 

More from Rakhmat Dedi Gunawan

Modul PBO Bab-12 - Setup & Deployment
Modul PBO Bab-12 - Setup & DeploymentModul PBO Bab-12 - Setup & Deployment
Modul PBO Bab-12 - Setup & DeploymentRakhmat Dedi Gunawan
 
Modul PBO Bab-10 - Event & Exception Handling
Modul PBO Bab-10 - Event & Exception HandlingModul PBO Bab-10 - Event & Exception Handling
Modul PBO Bab-10 - Event & Exception HandlingRakhmat Dedi Gunawan
 
Modul PBO Bab-05 - Pewarisan (Inheritance)
Modul PBO Bab-05 - Pewarisan (Inheritance)Modul PBO Bab-05 - Pewarisan (Inheritance)
Modul PBO Bab-05 - Pewarisan (Inheritance)Rakhmat Dedi Gunawan
 
Modul PBO Bab-04 - Hubungan antar Kelas
Modul PBO Bab-04 - Hubungan antar KelasModul PBO Bab-04 - Hubungan antar Kelas
Modul PBO Bab-04 - Hubungan antar KelasRakhmat Dedi Gunawan
 
Modul PBO Bab-02 - Struktur Kontrol
Modul PBO Bab-02 - Struktur KontrolModul PBO Bab-02 - Struktur Kontrol
Modul PBO Bab-02 - Struktur KontrolRakhmat Dedi Gunawan
 
Modul PBO Bab-01 - Pengenalan Java
Modul PBO Bab-01 - Pengenalan JavaModul PBO Bab-01 - Pengenalan Java
Modul PBO Bab-01 - Pengenalan JavaRakhmat Dedi Gunawan
 
Chapter 02 - Pembuatan Projek Baru
Chapter 02 - Pembuatan Projek BaruChapter 02 - Pembuatan Projek Baru
Chapter 02 - Pembuatan Projek BaruRakhmat Dedi Gunawan
 
Chapter 10 - Pembatan Report Kwitansi
Chapter 10 - Pembatan Report KwitansiChapter 10 - Pembatan Report Kwitansi
Chapter 10 - Pembatan Report KwitansiRakhmat Dedi Gunawan
 

More from Rakhmat Dedi Gunawan (19)

Modul PBO Bab-00 - Daftar Isi
Modul PBO Bab-00 - Daftar IsiModul PBO Bab-00 - Daftar Isi
Modul PBO Bab-00 - Daftar Isi
 
Modul PBO Bab-12 - Setup & Deployment
Modul PBO Bab-12 - Setup & DeploymentModul PBO Bab-12 - Setup & Deployment
Modul PBO Bab-12 - Setup & Deployment
 
Modul PBO Bab-11 - JDBC
Modul PBO Bab-11 - JDBCModul PBO Bab-11 - JDBC
Modul PBO Bab-11 - JDBC
 
Modul PBO Bab-10 - Event & Exception Handling
Modul PBO Bab-10 - Event & Exception HandlingModul PBO Bab-10 - Event & Exception Handling
Modul PBO Bab-10 - Event & Exception Handling
 
Modul PBO Bab-08 - Java GUI
Modul PBO Bab-08 - Java GUIModul PBO Bab-08 - Java GUI
Modul PBO Bab-08 - Java GUI
 
Modul PBO Bab-09 - Swing
Modul PBO Bab-09 - SwingModul PBO Bab-09 - Swing
Modul PBO Bab-09 - Swing
 
Modul PBO Bab-05 - Pewarisan (Inheritance)
Modul PBO Bab-05 - Pewarisan (Inheritance)Modul PBO Bab-05 - Pewarisan (Inheritance)
Modul PBO Bab-05 - Pewarisan (Inheritance)
 
Modul PBO Bab-04 - Hubungan antar Kelas
Modul PBO Bab-04 - Hubungan antar KelasModul PBO Bab-04 - Hubungan antar Kelas
Modul PBO Bab-04 - Hubungan antar Kelas
 
Modul PBO Bab-03 - Kelas & Objek
Modul PBO Bab-03 - Kelas & ObjekModul PBO Bab-03 - Kelas & Objek
Modul PBO Bab-03 - Kelas & Objek
 
Modul PBO Bab-02 - Struktur Kontrol
Modul PBO Bab-02 - Struktur KontrolModul PBO Bab-02 - Struktur Kontrol
Modul PBO Bab-02 - Struktur Kontrol
 
Modul PBO Bab-01 - Pengenalan Java
Modul PBO Bab-01 - Pengenalan JavaModul PBO Bab-01 - Pengenalan Java
Modul PBO Bab-01 - Pengenalan Java
 
Chapter 01 - Pembuatan Database
Chapter 01 - Pembuatan DatabaseChapter 01 - Pembuatan Database
Chapter 01 - Pembuatan Database
 
Chapter 03 - Form Master
Chapter 03 - Form MasterChapter 03 - Form Master
Chapter 03 - Form Master
 
Chapter 02 - Pembuatan Projek Baru
Chapter 02 - Pembuatan Projek BaruChapter 02 - Pembuatan Projek Baru
Chapter 02 - Pembuatan Projek Baru
 
Chapter 10 - Pembatan Report Kwitansi
Chapter 10 - Pembatan Report KwitansiChapter 10 - Pembatan Report Kwitansi
Chapter 10 - Pembatan Report Kwitansi
 
T04-Stored Procedure
T04-Stored ProcedureT04-Stored Procedure
T04-Stored Procedure
 
T05-Trigger
T05-TriggerT05-Trigger
T05-Trigger
 
T02-Join & View
T02-Join & ViewT02-Join & View
T02-Join & View
 
Teori pbd - erd_studi_kasus (1)
Teori pbd - erd_studi_kasus (1)Teori pbd - erd_studi_kasus (1)
Teori pbd - erd_studi_kasus (1)
 

POLIMORFISME

  • 1. Modul PBO – Teknokrat 52 POLIMORFISME (POLYMORPISHM) Tujuan Praktikan dapat memahami dan menjelaskan konsep polimorfisme dalam perograman serta dapat mengimplementasikan ke dalam pemrograman Java. POLIMORFISME Polimorfisme (polymorpishm) bearti banyak bentuk (bahasa Yunani). Dalam pemrograman berorientasi obyek, digunakan untuk memerintah obyek agar melakukan aksi atau tindakan yang mungkin secara prinsip sama namun secara proses berbeda. Dalam konsep yang lebih umum sering kali polymorphism disebut dalam istilah satu interface banyak aksi. Contoh yang konkrit dalam dunia nyata yaitu mobil. Mobil yang ada dipasaran terdiri atas berbagai tipe dan berbagai merk, namun semuanya memiliki interface kemudi yang sama, seperti: stir, tongkat transmisi, pedal gas dan rem. Jika seseorang dapat mengemudikan satu jenis mobil saja dari satu merk tertentu, maka orang itu akan dapat mengemudikan hamper semua jenis mobil yang ada, karena semua mobil tersebut menggunakan interface yang sama. Harus diperhatikan disini bahwa interface yang sama tidak berarti cara kerjanya juga sama. Misal pedal gas, jika ditekan maka kecepatan mobil akan meningkat, tapi bagaiman proses peningkatan kecepatan ini dapat berbeda-beda untuk setiap jenis mobil.Dengan menggunakan OOP maka dalam melakukan pemecahan suatu masalah kita tidak melihat bagaimana cara menyelesaikan suatu masalah tersebut (terstruktur) tetapi obyekobyek apa yang dapat melakukan pemecahan masalah tersebut. VIRTUAL METHOD INVOCATION (VMI) Virtual method invocation (VMI) merupakan suatu hal yang sangat penting dalam konsep polimorfisme. Syarat terjadinya VMI adalah sebelumnya sudah terjadi polymorphism. Pada saat obyek yang sudah dibuat tersebut memanggil overridden method pada parent class, kompiler Java akan melakukan invocation (pemanggilan) terhadap overriding method pada subclass, dimana yang seharusnya dipanggil adalah overridden. Berikut adalah contoh terjadinya VMI: Program 6-1 // Test.java class Parent { int x = 5; public void info() { System.out.println("Ini kelas Parent"); } } BAB 6
  • 2. Modul PBO – Teknokrat 53 class Child extends Parent { int x = 10; public void info() { System.out.println("Ini kelas Child"); } } public class Tes { public static void main(String [] args) { Parent tes = new Child(); System.out.println("Nilai x = " + tes.x); tes.info(); } } Hasil Output Nilai x = 5 Ini kelas Child Berdasarkan program di atas, yang terjadi adalah: · Obyek tes mempunyai behavior yang sesuai dengan runtime type bukan compile type · Ketika compile time tes adalah Parent · Ketika runtime tes adalah Child · Jadi: o tes hanya bisa mengakses variabel milik Parent o tes hanya bisa mengakses method milik Child Pada pembentukan Parent tes = new Child(); Pertama kali akan menjalankan konstruktor Child, ketika bertemu super() maka akan menjalankan konstruktor Parent (super class), setelah semua statement dieksekusi baru kemudian menjalankan konstruktor Child (subclass). POLYMORPHIC ARGUMENTS Polymorphic arguments adalah tipe data suatu argumen pada suatu method yang bisa menerima suatu nilai bertipe subclass-nya. Polymorphic arguments diperlukan, bertujuan untuk mengefisiensikan pembuatan program. Misalnya suatu kelas memiliki banyak subclass, maka perlu didefinisikan semua method yang menangani behaviour dari masing-masing subclass. Dengan adanya polymorphic arguments cukup mendefinisikan satu method saja yang bisa digunakan untuk menangani behaiour semua kelas. Berikut adalah contoh dari polymorphic arguments: Program 6- 2 // food.java public class food { void eat() { System.out.println("this food is great"); } }
  • 3. Modul PBO – Teknokrat 54 // tuna.java public class tuna extends food { void eat() { System.out.println("this tuna is great"); } } // potpie.java public class potpie extends food { void eat() { System.out.println("this potpie is great"); } } // apples.java public class apples { public static void main(String [] args) { patty bucky = new patty(); food fo = new food(); food po = new potpie(); // penerapan polymorphic argument bucky.digest(fo); bucky.digest(po); } } Hasil Output this food is great this potpie is great OPERATOR INSTANCEOF Pernyataan instanceof sangat berguna untuk mengetahui tipe asal dari suatu polymorphic arguments. Untuk lebih jelas, berikut kita modifikasi contoh program sebelumnya: Program 6- 3 // food.java public class food { void eat() { System.out.println("this food is great"); } } // tuna.java public class tuna extends food { void eat() { System.out.println("this tuna is great"); } } // potpie.java public class potpie extends food { void eat() { System.out.println("this potpie is great"); } }
  • 4. Modul PBO – Teknokrat 55 // patty.java public class patty { public void digest(food x) { if(x instanceof tuna) { tuna t = (tuna) x; t.eat(); } else if(x instanceof potpie) { potpie p = (potpie) x; p.eat(); } else { x.eat(); } } } // apples.java public class apples { public static void main(String [] args) { patty bucky = new patty(); tuna fo = new tuna(); potpie po = new potpie(); bucky.digest(fo); bucky.digest(po); } } Hasil Output this potpie is great this tuna is great Pemakaian instanceof seringkali diikuti dengan casting obyek dari tipe parameter ke tipe asal. Contohnya pada program di atas, pada saat kita melakukan instanceof dari tipe tuna, kita dapat melakukan casting object ke tipe asalnya, yaitu tuna. Berikut adalah cara untuk melakukan casting: Program 6-4 // patty.java public class patty { public void digest(food x) { // ... if(x instanceof tuna) { tuna t = (tuna) x; // ... } // ... } } Tanpa melakukan casting obyek, maka nilai yang akan kita pakai setelah proses instanceof masih bertipe parent class-nya, sehingga jika tipe tersebut perlu dipakai maka harus dicasting terlebih dahulu ke tipe subclass-nya.
  • 5. Modul PBO – Teknokrat 56 OVERRIDING Overriding adalah suatu keadaan dimana subclass memodifikasi tingkah laku yang diwarisi dari super class. Tujuannya untuk menspesifikan tingkah laku dari subclass tersebut. Overriding dilakukan dengan cara mendeklarasikan kembali method milik super class di dalam sub class. Deklarasi method pada subclass harus sama dengan yang terdapat pada di super class, yaitu kesamaan pada nama, return type, dan daftar parameter (jumlah, tipe, dan urutan). Method pada parent class disebut overriden method dan pada subclass disebut overriding method. Berikut ini contoh terjadinya overriding: Program 6-5 // Employee.java public class Employee { protected String name; protected double salary; protected Date birthDate; public String getDetails() { return "Name: " + name + "n" + "Salary: " + salary; } } // Manager.java public class Manager extends Employee { protected String departement; public String getDetail() { return "Name: " + name + "n" + "Salary: " + salary + "n" + "Manager of: " + departement; } } Program 6-6 // Animal.java public class Animal { public void setVoice() { System.out.println("Blesesppblesep"); } } // Dog.java public class Dog extends Animal { public void setVoice() { System.out.println("Hug..hug.."); } } Berdasarkan contoh program di atas, terjadinya overriding pada method getDetails, dimana method tersebut di-override oleh kelas Manager. Method yang terkena override (overriden method) diharuskan tidak boleh mempunyai modifier yang lebih luas aksesnya dari method yang meng- override (overriding method).
  • 6. Modul PBO – Teknokrat 57 OVERLOADING Overloading adalah suatu keadaan dimana beberapa method memiliki nama yang sama namun mempunyai fungsionalitas yang berbeda. Tujuannya untuk memudahkan penggunaan/pemanggilan method dengan fungsional yang mirip. Dalam pendeklarasian overloading aturan yang digunakan yaitu nama method harus sama, daftar parameter harus berbeda, dan return type boleh sama, juga boleh berbeda. Berikut adalah contoh implementasi overloading: Program 6-7 // MethodOverload.java public class MethodOverload { public void test() { System.out.println("Kuadrat dari integer 7 = " + kuadrat(7)); System.out.println("Kuadrat dari double 7.5 = " + kuadrat(7.5)); } // method kuadrat untuk integer public int kuadrat(int bil) { return bil * bil; } // method kuadrat untuk double public double kuadrat(double bil) { return bil * bil; } } // MethodOverloadRun.java public class MethodOverloadRun { public static void main(String [] args) { MethodOverload x = new MethodOverload(); x.test(); } } Berdasarkan kode program di atas, method yang di-overloading adalah kuadrat. Berikut adalah perbedaan pada kedua method tersebut: Tabel 6. 1 Contoh method overloading Tipe return Nama method Daftar Parameter int Kuadrat (int bil) double Kuadrat (double bil) ↓ ↓ ↓ Berbeda Sama Berbeda Berikut adalah contoh potongan kode program yang menerapkan method overloading:
  • 7. Modul PBO – Teknokrat 58 public class Bentuk { // ... public void Gambar(int t1) { // ... } public void Gambar(int t1, int t2) { // ... } public void Gambar(int t1, int t2, int t3) { // ... } public void Gambar(int t1, int t2, int t3, int t4) { // ... } } Overloading juga bisa terjadi antara parent class dengan subclass-nya jika memenuhi ketiga syarat overload yang sudah disebutkan sebelumnya. Misalnya dari kelas Bentuk pada kode program sebelumnya diturunkan menjadi kelas baru yang bernama WarnaiBentuk, seperti berikut: public class Bentuk { public void Gambar(String warna, int t1) { // ... } public void Gambar(String warna, int t1, int t2) { // ... } // ... } CONSTUCTOR OVERLOADING Suatu kelas bisa memiliki lebih dari satu konstruktor dengan syarat daftar paramenternya tidak boleh ada yang sama, bentuk inilah yang dinamakan dengan konstruktor overloading. Berikut adalah contoh bentuk konstruktor overloading: Program 6-8 // Mahasiswa.java public class Mahasiswa { private String npm; private String nama; private int umur; public Mahasiswa() { // Default konstruktor npm = ""; nama = ""; umur = 18; }
  • 8. Modul PBO – Teknokrat 59 public Mahasiswa(String npm, String nama, int umur) { // Parameter konstruktor this.npm = npm; this.nama = nama; this.umur = umur; } // Getter & Setter Method public String getNpm() { return npm; } public void setNpm(String npm) { this.npm = npm; } public String getNama() { return nama; } public void setNama(String nama) { this.nama = nama; } public int getUmur() { return umur; } public void setUmur(int umur) { this.umur = umur; } } // MahasiswaOverloadingTest.java public class MahasiswaOverloadingTest { public static void main(String [] args) { Mahasiswa obj = new Mahasiswa(); System.out.println("NPM : " + obj.getNpm()); System.out.println("Nama : " + obj.getNama()); System.out.println("Umur : " + obj.getUmur()); Mahasiswa obj2 = new Mahasiswa("12312343", "Anditya", 19); System.out.println("NPM : " + obj2.getNpm()); System.out.println("Nama : " + obj2.getNama()); System.out.println("Umur : " + obj2.getUmur()); } }
  • 9. Modul PBO – Teknokrat 60 Lembar Kerja Praktikum: Modul 6 NPM: Asisten: Nama: Nilai: Kelas: Tanggal: Soal Perhatikan kelas diagram berikut: 1. Jelaskan pengertian dari Polimorfisme, Overloading, dan Overriding. 2. Jelaskan perbedaan antara Polimorfisme dengan Inheritance. 3. Jelaskan perbedaan antara Overloading dengan Overriding.