You are on page 1of 5

MODUL 3

POLYMORPHISM

I. TUJUAN
Mahasiswa mampu :
1. Memahami konsep polymorphism
2. Mengimplementasikan polymorphism dalam JAVA
3. Memahami konsep overloading dan overriding method
4. Mengimplementasikan overloading dan overriding method

II. ALAT YANG DIGUNAKAN


• Netbeans IDE

III. TUGAS PENDAHULUAN


1. Apakah yang dimaksud dengan polymorphism?
2. Jelaskan fungsi penggunaan polymorphism?
3. Apakah perbedaan antara overloading dan overriding method?

IV. DASAR TEORI


• Polymorphism
Polymorphism adalah kemampuan objek mengungkap banyak hal yang
berbeda melalui satu cara yang sama. Apabila terdapat objek yang bertipe
superclass, variable objek ini bisa diisi dengan objek superclass ataupun objek
subclass tanpa perlu melakukan perubahan tipe.
Polymorphism berarti sebuah object dapat memiliki banyak bentuk, yaitu
dengan memiliki nama yang sama, tetapi perilaku/behavior yang berbeda.
Sebuah object dapat memiliki berbagai bentuk baik dari class itu sendiri
ataupun dari superclass-nya.  

Contoh Polymorphism :

Ada dua tipe polymorphism, yaitu : Dynamic Polymorphism dan Static


Polymorphism.
• Overriding method
Overriding method merupakan pendeklarasian sebuah method dengan nama
dan parameter yang sama dari superclass-nya, kemudian dimodifikasi ulang
(menumpuk/mendefinisi ulang sebuah method). Syarat overriding method
yaitu nama method, return type, dan parameter harus sama. Jika tidak, maka
dianggap sebagai method baru pada subclass (bukan overriding). Pada
override method, diharuskan menggunakan inheritance, agar dapat digunakan
pada tiap class (harus dalam hirarki yang berbeda).
Catatan :
9 Dengan overriding, kita dapat memiliki pengenal method yang sama
dengan pengenal method pada superclass.
9 Constructor tidak dapat dioverriding, sebab constructor tidak
diturunkan ke subclass.
9 Kita dapat memanggil method yang dioverride di superclass dengan
keyword super.
9 Bila suatu method tidak dapat diturunkan, maka method tersebut tidak
dapat dioverriding. Misalkan terdapat method yang memiliki access
modifier private.

Contoh :
public class Pet {

private String name;

public String getName(){


return name;
}

public void setName(String petName){


name=petName;
}

public String speak(){


return ("I'm your cute pet");
}
}

class Cat extends Pet{


public String speak(){
return ("I speak only when I want to");
}
}

class Dog extends Pet{


public String speak( ) {
return "Yes, master. Fetch I will.";
}
}

public class Latihan {


public static void main(String[] args) {
Pet p;
p = new Dog( );
System.out.println(p.speak( ));
p = new Cat( );
System.out.println(p.speak( ));
}
}

• Overloading method
Overloading adalah pendeklarasian satu nama untuk beberapa method yang
berbeda dalam suatu class. Nama method yang sama dibedakan dari jumlah
parameter dan tipe data parameternya. Overloading mempunyai ciri-ciri
sebagai berikut:
9 Nama method harus sama
9 Daftar parameter harus berbeda
9 Return type boleh sama, juga boleh berbeda.

Contoh :
class luas {
public void luasPersegi (){
int panjang = 3;
int lebar = 4;
System.out.println("Luas Persegi 1 = "
+panjang*lebar);
}

public void luasPersegi (int p, int l){


System.out.println("Luas Persegi 2 = " +p*l);
}
}
public class Latihan {
public static void main(String[] args) {
System.out.println("=====overloading=====");
luas bidang = new luas();
bidang.luasPersegi();
bidang.luasPersegi(5, 10);
}

V. PROSEDUR PELAKSANAAN
Prosedur pelaksanaan praktikum adalah sebagai berikut :
1. Mahasiswa mencoba latihan yang ada pada modul praktikum
2. Mahasiswa menganalisis hasil dari program pada latihan yang telah dijalankan
3. Mahasiswa mengerjakan tugas yang diberikan
4. Mahasiswa membuat laporan dari tugas yang telah dikerjakan (dilengkapi
dengan Hasil praktikum dan kesimpulan).
5. Mahasiswa mendemonstrasikan tugas program yang telah dikerjakan

VI. LATIHAN

1. LATIHAN

class Manusia {
private String nama;
public void setNama(String nama) {
this.nama=nama;
}

public String getNama() {


return "Nama manusia: " + nama;
}
}

class Pelajar extends Manusia{


private String nama;

public void setNama(String nama) {


this.nama = nama;
}

public String getNama() {


return "Nama Pelajar: " + nama;
}
}

class Karyawan extends Manusia{ private String namaKar;


public void setNama(String nama) {
this.namaKar = nama;
}
public String getNama() {
return "Nama Karyawan : " + namaKar;
}
}

public class NewMain {


public static void main(String[] args) {
Pelajar pelajar1 = new Pelajar();
Karyawan karyawan1 = new Karyawan();
Manusia mns;
mns = pelajar1;
mns.setNama("Aisyah azzahra");
System.out.println(mns.getNama());
mns = karyawan1;
mns.setNama("maryam asyifa");
System.out.println(mns.getNama());
}
}

VII. TUGAS
PT. Biting Bersatu memiliki 50 orang pegawai. Pegawai-pegawai tersebut terbagi
menjadi 2 status kepegawaian, yaitu sebagian pegawai tetap dan sebagian yang lain
adalah pegawai kontrak. Secara umum perbedaan antara keduanya adalah pegawai
tetap selain mendapatkan gaji juga mendapatkan tunjangan yang besarnya 500 ribu,
sedangkan pegawai kontrak hanya mendapatkan gaji saja. Dari kasus diatas, dapat
digambarkan class-class pegawai sebagai berikut:

Class PegawaiKontrak, dengan atribut:


NIK : no pegawai kontrak (diinputkan)
Nama : nama pegawai (diinputkan)
MasaKontrak : lama kontrak pegawai (diinputkan)
Kehadiran : jumlah hari masuk dalam 1 bulan (diinputkan)
UangMakan : besarnya 8 ribu dikali jumlah kehadiran (tidak diinputkan)
Gaji : besarnya gaji pokok yang diterima tiap bulan (diinputkan)

Class PegawaiTetap, dengan atribut:


NIK : no pegawai tetap (diinputkan)
Nama : nama pegawai (diinputkan)
Kehadiran : jumlah hari masuk dalam 1 bulan (diinputkan)
Tunjangan : besarnya 500 ribu (tidak diinputkan)
UangMakan : besarnya 8 ribu dikali jumlah kehadiran (tidak diinputkan)
Gaji : besarnya gaji pokok yang diterima tiap bulan (diinputkan)

Method-method yang harus ada:


hitungGaji() : method untuk menghitung gaji bersih pegawai
• Gaji pegawai kontrak = Uang Makan + Gaji,
• Gaji pegawai tetap = Tunjangan + Uang Makan + Gaji
lihatData(): method untuk menampilkan data-data pegawai secara lengkap beserta
total gaji yang diterima (gaji bersih)

Kalian dapat menggunakan teknik polymorphism dalam menyelesaikan permasalahan


ini.

PT. BITING BERSATU


=====================
MENU UTAMA
=====================
1. Input Data Pegawai
2. Lihat Data Pegawai
3. Keluar

VIII. REFERENSI
• Lewis, John. Loftus, William. 2007. Java Software Solutions Fondations of
Program Design - Fifth Edition. Pearson Addison Wesley/ Pearson
International Edition.
• Wu, C Thomas. 2009. An Intruduction to Object-Oriented Programming with
Java – Fifth Edition. Mc Graw Hill

You might also like