MODUL VII POLYMORPHISM LAPORAN PRAKTIKUM PEMROGRAMAN BERBASIS OBJEK
Disusun untuk Memenuhi Matakuliah Praktikum Pemrograman Berbasis Objek yang Dibimbing oleh Kartika Candra Kirana, S.Pd., M.Kom.
Oleh: NAMA : DEVINA AMALIA ARINDI NIM
: 170535629545
PRODI : S1 TEKNIK INFORMATIKA
UNIVERSITAS NEGERI MALANG FAKULTAS TEKNIK JURUSAN TEKNIK ELEKTRO OKTOBER 2018
POLYMORPHISM
A. KOMPETENSI DASAR Mahasiswa mampu menerapkan dan menganalisa konsep polymorphism dalam Java.
B. STUDI KASUS Tugas Praktikum 1 UML class diagram :
Class Orang: package md7; public class Orang { protected String nama; protected int umur; public Orang(String nama){ this.nama = nama; } public Orang(String nama, int umur ){ this.nama = nama; this.umur = umur; } }
Class Dosen: package md7; public class Dosen extends Orang{ private int nip; public Dosen(String nama){ super(nama); } public Dosen(String nama, int nip ){ super(nama); this.nip = nip; } public Dosen(String nama, int nip, int umur){ super(nama,umur); this.nip = nip; } public void info(){ System.out.println("=================================="); System.out.println("Nama : "+super.nama); System.out.println("Nip
: "+this.nip);
System.out.println("Umur : "+super.umur); System.out.println("=================================="); } }
Class main: package md7; public class main { public static void main(String args[]){ System.out.println("Masukkan identitas dosen 1 : Agus"); Dosen d1 = new Dosen("Agus"); System.out.println("Masukkan identitas dosen 2 : Budi, NIP. 1458"); Dosen d2 = new Dosen("Budi", 1458); System.out.println("Masukkan identitas dosen 3 : Iwan, NIP. 1215, " + "umur 47"); Dosen d3 = new Dosen("Iwan", 1215, 47); System.out.println();
d1.info(); System.out.println(); d2.info(); System.out.println(); d3.info(); } }
Output:
Penjelasan: pada program diatas menggunakan polymorphism dengan method overloading, yaitu dimana satu class dapat mempunyai 2 atau lebih method dengan nama yang sama tetapi yang membedakan parameternya (bisa jumlah, susunan, maupun tipe datanya). Pada class orang mempunyai 2 method dimana pada method orang pertama mempunyai 1 parameter, sedangkan pada method orang kedua mempunyai 3 parameter. Pada class Dosen merupakan class anak dari class orang, mempunyai 3 method dengan nama yang sama. Dua method di class Dosen parameter nya sama dengan class orang, dan method terakhir mempunyai parameter yang lengkap dari field class orang dan class dosen. Untuk mengetahui outputannya yaitu membuat class main yaitu dimana isinya harus sesuai pada jumlah, susunan, maupun tipe datanya parameter di method – method Dosen. Seperti
contoh diatas pengisian method pertama yaitu 1 parameter dimana isinya yaitu ‘Agus’ maka yang lainnya akan menghasilkan 0(jika type data int) atau null (jika type data String).
Tugas Praktikum 2 UML class diagram :
Class Pegawai: package md7; public class Pegawai { protected String nama; protected int gaji; public Pegawai(String nama, int gaji){ this.nama=nama; this.gaji=gaji; } public int infoGaji(){ System.out.println("Nama : " + this.nama); System.out.println("Gaji : " + this.gaji); return this.gaji; } }
Class Manajer: package md7; public class Manajer extends Pegawai{
private int tunjangan; public Manajer(String nama, int gaji, int tunjangan){ super(nama,gaji); this.tunjangan = tunjangan; } @Override public int infoGaji(){ super.infoGaji(); return super.gaji; } public int infoTunjangan(){ System.out.println("Tunjangan : " + this.tunjangan ); return this.tunjangan; } }
Class Programmer: package md7; public class Programmer extends Pegawai{ private int bonus; public Programmer(String nama, int gaji, int bonus){ super(nama,gaji); this.bonus = bonus; } @Override public int infoGaji(){ super.infoGaji(); return super.gaji; } public int infoBonus(){ System.out.println("Bonus : " + this.bonus); return this.bonus; } }
Class Bayar: package md7; public class Bayar { public int hitungbayaran (Pegawai peg){ int uang = peg.infoGaji();
if (peg instanceof Manajer){ uang += ((Manajer)peg).infoTunjangan(); } else if (peg instanceof Programmer){ uang += ((Programmer)peg).infoBonus(); } return uang; } public static void main(String args[]){ Pegawai man = new Manajer("Agus", 800, 50); Pegawai prog = new Programmer("Budi", 600, 30); Bayar hr = new Bayar(); System.out.println("Bayaran untuk Manajer : " + hr.hitungbayaran(man)); System.out.println(); System.out.println("Bayaran untuk Programmer : " + hr.hitungbayaran(prog)); } }
Output:
Penjelasan: Pada program diatas menggunakan polymorphism dengan method overriding, yaitu method yang ada pada parent class juga ada pada subclass. Dimana pada subclass parameternya harus sama dengan parentclass. Aturan hak akses pada subclass tidak boleh lebih ketat dari parentclass. Pada class Pegawai mempunyai method dengan nama infogaji, pada method ini menampilkan nama dan gaji. Pada class Manajer dan class Programmer yang merupakan subclass dari class Pegawai juga mempunyai method yang sama, akan
tetapi pada class Manajer mempunyai method yang lain yaitu infotunjangan dan class Programmer mempunyai method yang lain yaitu infobonus. Untuk testnya dengan membuat class baru yaitu class Bayar. Pada class Bayar terdapat fungsi penambahan gaji + tunjangan dan gaji + bonus. Untuk pemanggilannya gaji Manajer yaitu dengan pengesetan Pegawai man = new Manajer sedangakan untuk gaji Programmer yaitu Pegawai prog = new Programmer.
Tugas Rumah UML class diagram : Siswa # ID : int # First : String # Last : String + Siswa (ID : int, First : String, Last : String )
Siswa - YearGraduated : int - Grad : int - UndergradSchool : String + SiswaGrad (ID : int, First : String, Last : String ) + SiswaGrad (ID : int, First : String, Last : String, YearGraduated : int, Grad : int, UndergradSchool : String)
Class Siswa: package md7; public class Siswa { protected int ID; protected String First; protected String Last; public Siswa(int ID, String First, String Last) { this.ID = ID; this.First = First; this.Last = Last;
} }
Class SiswaGrad: package md7; public class SiswaGrad extends Siswa{ private int YearGraduated; private int Grad; private String UndergradSchool; public SiswaGrad(int ID, String First, String Last){ super(ID, First, Last); } public
SiswaGrad(int
ID,
String
First,
String
Last,
int
YearGraduated, int Grad,String UndergradSchool){ super(ID, First, Last); this.YearGraduated=YearGraduated; this.Grad=Grad; this.UndergradSchool=UndergradSchool; } public void Display(){ System.out.println("ID: " + super.ID); System.out.println("Name : "+super.First + " " + super.Last); System.out.println("Graduation Year : "+ this.YearGraduated); System.out.println("Grad : "+this.Grad); System.out.println("Graduated From: "+ this.UndergradSchool); }
Class testS: package md7; import java.util.Scanner; public class testS{ public static void main(String[] args){ Scanner input = new Scanner(System.in); SiswaGrad
myStudent1
SiswaGrad(170535624,"Justin","Bieber");
=
new
SiswaGrad
myStudent2
SiswaGrad(170535625,"Alan","Touring",
2017,
= 1,"Universitas
new Negeri
Malang"); System.out.println("Menu"); System.out.println("1. Mahasiswa1"); System.out.println("2. Mahasiswa2"); System.out.print("Masukkan pilihan = "); int x = input.nextInt(); System.out.println(); switch (x){ case 1: System.out.println("*********
Mahasiswa
1
**********"); myStudent1.Display(); System.out.println("********************************"); break; case 2: System.out.println("==========
Mahasiswa
2
=========="); myStudent2.Display(); System.out.println("================================= "); break; } } }
Output:
Penjelasan: pada program diatas menggunakan polymorphism dengan method overloading, yaitu dimana satu class dapat mempunyai 2 atau lebih method dengan nama yang sama tetapi yang membedakan parameternya (bisa jumlah, susunan, maupun tipe datanya). Pada class Siswa mempunyai 1 method dimana pada method orang pertama mempunyai 3 parameter. Pada class SiswaGrad merupakan class anak dari class Siswa, mempunyai 2 method dengan nama yang sama. Satu method di class SiswaGrad parameter nya sama dengan class Siswa, dan method lainnya mempunyai parameter yang lengkap dari field class Siswa dan class SiswaGrad. Untuk mengetahui outputannya yaitu membuat class testS yaitu dimana isinya harus sesuai pada jumlah, susunan, maupun tipe datanya parameter di method – method SiswaGrad. Seperti contoh diatas pengisian method pertama yaitu 3 parameter dimana isinya yaitu ‘170535624,"Justin","Bieber"’ maka yang lainnya akan menghasilkan 0(jika type data int) atau null (jika type data String). Pada program ini terdapat inputav user yaitu terdapat menu data mahasiswa dari 2 method yang ada, jika memilih 1 menghasilkan isian method pertama, atau memilih 2 menghasilkan isian method kedua .
C. KESIMPULAN Polymorphism merupakan kemampuan suatu method untuk bekerja dengan lebih dari satu tipe argumen. Polymorphism terdapat 2 bentuk method yaitu Overloading dan Overriding. Method Overloading adalah sebuah kemampuan yang membolehkan sebuah class mempunyai 2 atau lebih method dengan nama yang sama, yang membedakan adalah parameternya (bisa jumlah, susunan, maupun tipe datanya). Sedangkan Method overriding merupakan method yang parrent class yang ditulis kembali oleh subclass. Parameter yang terdapat pada method overriding di subclass harus sama dengan parameter yang terdapat pada parent class. Aturan hak akses, hak akses method overriding di subclass tidak boleh lebih ketat di bandingkan dengan hak akses method pada parent class. Contoh Implementasi Polymorphism terdapat pada praktikum Tugas Praktikum dan Tugas Rumah diatas.
D. DAFTAR PUSTAKA Asisten Dosen. 2018. Modul VII Polymorphism