SlideShare a Scribd company logo
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

Pbo
PboPbo
[PBO] Pertemuan 13 - Membuat Aplikasi Desktop dengan JDBC DAO MVC
[PBO] Pertemuan 13 - Membuat Aplikasi Desktop dengan JDBC DAO MVC[PBO] Pertemuan 13 - Membuat Aplikasi Desktop dengan JDBC DAO MVC
[PBO] Pertemuan 13 - Membuat Aplikasi Desktop dengan JDBC DAO MVC
rizki adam kurniawan
 
Tugas Praktikum Pemrograman Berorientasi Objek
Tugas Praktikum Pemrograman Berorientasi ObjekTugas Praktikum Pemrograman Berorientasi Objek
Tugas Praktikum Pemrograman Berorientasi Objek
Pungkas Soebarkah
 
Materi 3 Finite State Automata
Materi 3   Finite State AutomataMateri 3   Finite State Automata
Materi 3 Finite State Automata
ahmad haidaroh
 
Modul Praktikum Pemrograman Berorientasi Objek (Chap.7)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.7)Modul Praktikum Pemrograman Berorientasi Objek (Chap.7)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.7)
Debby Ummul
 
Modul belajar java I/O (Input/Ouptut)
Modul belajar java I/O (Input/Ouptut)Modul belajar java I/O (Input/Ouptut)
Modul belajar java I/O (Input/Ouptut)
stephan EL'wiin Shaarawy
 
Jawaban Struktur data soal-latihan
Jawaban Struktur data soal-latihanJawaban Struktur data soal-latihan
Jawaban Struktur data soal-latihan
Bina Sarana Informatika
 
Minggu 1 - Using Alice 3
Minggu 1 - Using Alice 3Minggu 1 - Using Alice 3
Minggu 1 - Using Alice 3
SMK Nurul Jadid
 
[PBO] Pertemuan 3 - Pengenalan Pemrograman Berbasis Objek
[PBO] Pertemuan 3 - Pengenalan Pemrograman Berbasis Objek[PBO] Pertemuan 3 - Pengenalan Pemrograman Berbasis Objek
[PBO] Pertemuan 3 - Pengenalan Pemrograman Berbasis Objek
rizki adam kurniawan
 
LAPORAN TUGAS AKHIR PERANCANGAN APLIKASI KNOWLEDGE BASE SYSTEM UNTUK INSTRUKS...
LAPORAN TUGAS AKHIR PERANCANGAN APLIKASI KNOWLEDGE BASE SYSTEM UNTUK INSTRUKS...LAPORAN TUGAS AKHIR PERANCANGAN APLIKASI KNOWLEDGE BASE SYSTEM UNTUK INSTRUKS...
LAPORAN TUGAS AKHIR PERANCANGAN APLIKASI KNOWLEDGE BASE SYSTEM UNTUK INSTRUKS...
Uofa_Unsada
 
itft-Inheritance in java
itft-Inheritance in javaitft-Inheritance in java
itft-Inheritance in java
Atul Sehdev
 
Pertemuan 1 konsep dasar pemrograman berorientasi objek
Pertemuan 1 konsep dasar pemrograman berorientasi objekPertemuan 1 konsep dasar pemrograman berorientasi objek
Pertemuan 1 konsep dasar pemrograman berorientasi objek
I Putu Arya Dharmaadi
 
Algoritma Pencarian String matching
Algoritma Pencarian String matching Algoritma Pencarian String matching
Algoritma Pencarian String matching
Kukuh Setiawan
 
Laporan Project Pemrograman Berbasis Web
Laporan Project Pemrograman Berbasis WebLaporan Project Pemrograman Berbasis Web
Laporan Project Pemrograman Berbasis Web
smatrigger
 
[PBO] Pertemuan 5 - Polymorphism
[PBO] Pertemuan 5 - Polymorphism[PBO] Pertemuan 5 - Polymorphism
[PBO] Pertemuan 5 - Polymorphism
rizki adam kurniawan
 
[PBO] Pertemuan 5 - Inheritance
[PBO] Pertemuan 5 - Inheritance[PBO] Pertemuan 5 - Inheritance
[PBO] Pertemuan 5 - Inheritance
rizki adam kurniawan
 
P9 enkapsulasi
P9 enkapsulasiP9 enkapsulasi
P9 enkapsulasi
PreddyMarpaung
 
Soal + jawaban PAT PBO Kelas XI RPL 2021.docx
Soal + jawaban PAT PBO Kelas XI RPL 2021.docxSoal + jawaban PAT PBO Kelas XI RPL 2021.docx
Soal + jawaban PAT PBO Kelas XI RPL 2021.docx
Saprudin Eskom
 
Laporan Praktikum Basis Data Modul IV-Membuat Database Pada PHPMYADMIN
Laporan Praktikum Basis Data Modul IV-Membuat Database Pada PHPMYADMINLaporan Praktikum Basis Data Modul IV-Membuat Database Pada PHPMYADMIN
Laporan Praktikum Basis Data Modul IV-Membuat Database Pada PHPMYADMIN
Shofura Kamal
 
Dasar dasar netbeans
Dasar dasar netbeansDasar dasar netbeans
Dasar dasar netbeans
Qhindy Yanuar
 

What's hot (20)

Pbo
PboPbo
Pbo
 
[PBO] Pertemuan 13 - Membuat Aplikasi Desktop dengan JDBC DAO MVC
[PBO] Pertemuan 13 - Membuat Aplikasi Desktop dengan JDBC DAO MVC[PBO] Pertemuan 13 - Membuat Aplikasi Desktop dengan JDBC DAO MVC
[PBO] Pertemuan 13 - Membuat Aplikasi Desktop dengan JDBC DAO MVC
 
Tugas Praktikum Pemrograman Berorientasi Objek
Tugas Praktikum Pemrograman Berorientasi ObjekTugas Praktikum Pemrograman Berorientasi Objek
Tugas Praktikum Pemrograman Berorientasi Objek
 
Materi 3 Finite State Automata
Materi 3   Finite State AutomataMateri 3   Finite State Automata
Materi 3 Finite State Automata
 
Modul Praktikum Pemrograman Berorientasi Objek (Chap.7)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.7)Modul Praktikum Pemrograman Berorientasi Objek (Chap.7)
Modul Praktikum Pemrograman Berorientasi Objek (Chap.7)
 
Modul belajar java I/O (Input/Ouptut)
Modul belajar java I/O (Input/Ouptut)Modul belajar java I/O (Input/Ouptut)
Modul belajar java I/O (Input/Ouptut)
 
Jawaban Struktur data soal-latihan
Jawaban Struktur data soal-latihanJawaban Struktur data soal-latihan
Jawaban Struktur data soal-latihan
 
Minggu 1 - Using Alice 3
Minggu 1 - Using Alice 3Minggu 1 - Using Alice 3
Minggu 1 - Using Alice 3
 
[PBO] Pertemuan 3 - Pengenalan Pemrograman Berbasis Objek
[PBO] Pertemuan 3 - Pengenalan Pemrograman Berbasis Objek[PBO] Pertemuan 3 - Pengenalan Pemrograman Berbasis Objek
[PBO] Pertemuan 3 - Pengenalan Pemrograman Berbasis Objek
 
LAPORAN TUGAS AKHIR PERANCANGAN APLIKASI KNOWLEDGE BASE SYSTEM UNTUK INSTRUKS...
LAPORAN TUGAS AKHIR PERANCANGAN APLIKASI KNOWLEDGE BASE SYSTEM UNTUK INSTRUKS...LAPORAN TUGAS AKHIR PERANCANGAN APLIKASI KNOWLEDGE BASE SYSTEM UNTUK INSTRUKS...
LAPORAN TUGAS AKHIR PERANCANGAN APLIKASI KNOWLEDGE BASE SYSTEM UNTUK INSTRUKS...
 
itft-Inheritance in java
itft-Inheritance in javaitft-Inheritance in java
itft-Inheritance in java
 
Pertemuan 1 konsep dasar pemrograman berorientasi objek
Pertemuan 1 konsep dasar pemrograman berorientasi objekPertemuan 1 konsep dasar pemrograman berorientasi objek
Pertemuan 1 konsep dasar pemrograman berorientasi objek
 
Algoritma Pencarian String matching
Algoritma Pencarian String matching Algoritma Pencarian String matching
Algoritma Pencarian String matching
 
Laporan Project Pemrograman Berbasis Web
Laporan Project Pemrograman Berbasis WebLaporan Project Pemrograman Berbasis Web
Laporan Project Pemrograman Berbasis Web
 
[PBO] Pertemuan 5 - Polymorphism
[PBO] Pertemuan 5 - Polymorphism[PBO] Pertemuan 5 - Polymorphism
[PBO] Pertemuan 5 - Polymorphism
 
[PBO] Pertemuan 5 - Inheritance
[PBO] Pertemuan 5 - Inheritance[PBO] Pertemuan 5 - Inheritance
[PBO] Pertemuan 5 - Inheritance
 
P9 enkapsulasi
P9 enkapsulasiP9 enkapsulasi
P9 enkapsulasi
 
Soal + jawaban PAT PBO Kelas XI RPL 2021.docx
Soal + jawaban PAT PBO Kelas XI RPL 2021.docxSoal + jawaban PAT PBO Kelas XI RPL 2021.docx
Soal + jawaban PAT PBO Kelas XI RPL 2021.docx
 
Laporan Praktikum Basis Data Modul IV-Membuat Database Pada PHPMYADMIN
Laporan Praktikum Basis Data Modul IV-Membuat Database Pada PHPMYADMINLaporan Praktikum Basis Data Modul IV-Membuat Database Pada PHPMYADMIN
Laporan Praktikum Basis Data Modul IV-Membuat Database Pada PHPMYADMIN
 
Dasar dasar netbeans
Dasar dasar netbeansDasar dasar netbeans
Dasar dasar netbeans
 

Similar to Modul PBO Bab-06 - Polimorfisme (Polymorphism)

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
ssuserc54f06
 
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 inte
Smkn-2 Pekanbaru
 
Laporan PBO pratikum 2
Laporan PBO pratikum 2Laporan PBO pratikum 2
Laporan PBO pratikum 2rahmi wahyuni
 
Konsep Inheritance
Konsep InheritanceKonsep Inheritance
Konsep Inheritance
Riski_kiki
 
Materi object yg kosong
Materi object yg kosongMateri object yg kosong
Materi object yg kosong
kgsrizky
 
Jobsheet 4 LOOPING( PENGULANGAN)
Jobsheet 4 LOOPING( PENGULANGAN)Jobsheet 4 LOOPING( PENGULANGAN)
Jobsheet 4 LOOPING( PENGULANGAN)
Polytechnic State Semarang
 
Tugas Praktikum ke dua
Tugas Praktikum ke duaTugas Praktikum ke dua
Tugas Praktikum ke dua
Pungkas Soebarkah
 
Modul Object Oriented Programming
Modul Object Oriented ProgrammingModul Object Oriented Programming
Modul Object Oriented Programming
Teknik Komputer & Informatika
 
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
 
Materi pelatihan java fundamental
Materi pelatihan java fundamentalMateri pelatihan java fundamental
Materi pelatihan java fundamental
stephan EL'wiin Shaarawy
 
Laporan pratikum iv web
Laporan pratikum iv webLaporan pratikum iv web
Laporan pratikum iv web
rahmi wahyuni
 
Basic Java Application - Sesi 5
Basic Java Application - Sesi 5Basic Java Application - Sesi 5
Basic Java Application - Sesi 5
Rudi Hartono
 
Unit 6 polymorphism
Unit 6   polymorphismUnit 6   polymorphism
Unit 6 polymorphism
Nafta If
 
Konsep Overloading (1).pptx
Konsep Overloading (1).pptxKonsep Overloading (1).pptx
Konsep Overloading (1).pptx
AsepKhabrilRifao
 
Modul pbo baru
Modul pbo baruModul pbo baru
Modul pbo baru
Hastri Diahfamily
 

Similar to Modul PBO Bab-06 - Polimorfisme (Polymorphism) (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
 
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
 
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
 
Konsep Overloading (1).pptx
Konsep Overloading (1).pptxKonsep Overloading (1).pptx
Konsep Overloading (1).pptx
 
Modul pbo baru
Modul pbo baruModul pbo baru
Modul pbo baru
 

More from Rakhmat Dedi Gunawan

Modul PBO Bab-00 - Daftar Isi
Modul PBO Bab-00 - Daftar IsiModul PBO Bab-00 - Daftar Isi
Modul PBO Bab-00 - Daftar Isi
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 & Deployment
Rakhmat Dedi Gunawan
 
Modul PBO Bab-11 - JDBC
Modul PBO Bab-11 - JDBCModul PBO Bab-11 - JDBC
Modul PBO Bab-11 - JDBC
Rakhmat 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 Handling
Rakhmat Dedi Gunawan
 
Modul PBO Bab-08 - Java GUI
Modul PBO Bab-08 - Java GUIModul PBO Bab-08 - Java GUI
Modul PBO Bab-08 - Java GUI
Rakhmat Dedi Gunawan
 
Modul PBO Bab-09 - Swing
Modul PBO Bab-09 - SwingModul PBO Bab-09 - Swing
Modul PBO Bab-09 - Swing
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 Kelas
Rakhmat Dedi Gunawan
 
Modul PBO Bab-03 - Kelas & Objek
Modul PBO Bab-03 - Kelas & ObjekModul PBO Bab-03 - Kelas & Objek
Modul PBO Bab-03 - Kelas & Objek
Rakhmat Dedi Gunawan
 
Modul PBO Bab-02 - Struktur Kontrol
Modul PBO Bab-02 - Struktur KontrolModul PBO Bab-02 - Struktur Kontrol
Modul PBO Bab-02 - Struktur Kontrol
Rakhmat Dedi Gunawan
 
Modul PBO Bab-01 - Pengenalan Java
Modul PBO Bab-01 - Pengenalan JavaModul PBO Bab-01 - Pengenalan Java
Modul PBO Bab-01 - Pengenalan Java
Rakhmat Dedi Gunawan
 
Chapter 01 - Pembuatan Database
Chapter 01 - Pembuatan DatabaseChapter 01 - Pembuatan Database
Chapter 01 - Pembuatan Database
Rakhmat Dedi Gunawan
 
Chapter 03 - Form Master
Chapter 03 - Form MasterChapter 03 - Form Master
Chapter 03 - Form Master
Rakhmat Dedi Gunawan
 
Chapter 02 - Pembuatan Projek Baru
Chapter 02 - Pembuatan Projek BaruChapter 02 - Pembuatan Projek Baru
Chapter 02 - Pembuatan Projek Baru
Rakhmat Dedi Gunawan
 
Chapter 10 - Pembatan Report Kwitansi
Chapter 10 - Pembatan Report KwitansiChapter 10 - Pembatan Report Kwitansi
Chapter 10 - Pembatan Report Kwitansi
Rakhmat Dedi Gunawan
 
T04-Stored Procedure
T04-Stored ProcedureT04-Stored Procedure
T04-Stored Procedure
Rakhmat Dedi Gunawan
 
T05-Trigger
T05-TriggerT05-Trigger
T02-Join & View
T02-Join & ViewT02-Join & View
T02-Join & View
Rakhmat Dedi Gunawan
 
Teori pbd - erd_studi_kasus (1)
Teori pbd - erd_studi_kasus (1)Teori pbd - erd_studi_kasus (1)
Teori pbd - erd_studi_kasus (1)
Rakhmat Dedi Gunawan
 

More from Rakhmat Dedi Gunawan (18)

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

Modul PBO Bab-06 - Polimorfisme (Polymorphism)

  • 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.