LAPORAN MODUL V
ABSTRACT CLASS, INTERFACE DAN POLYMORPHISM
Disusun untuk Memenuhi Matakuliah Praktikum Pemrograman Berorientasi Objek
Dibimbing oleh Ibu Kartika Candra Kirana, S.Pd.,M.Kom
Oleh:
Eva Yulia Safitri
(160533611462)
Fachryzal Candra Trisnawan
(160533611466)
Karina Aulia Faradila
(160533611413)
S1 PTI’1
6 OFF B
UNIVERSITAS NEGERI MALANG
FAKULTAS TEKNIK
JURUSAN TEKNIK ELEKTRO
A.
LATIHAN
Latihan 1
Nama Program
: Abstract Class
Script Program
:
Class Vehicle
public abstract class Vehicle { public void function(){
System.out.println("Transportation Tools"); }
public void fuel(){
System.out.println("Fuels"); }
public abstract void walk (); }
Class AeroPlan
public class AeroPlan extends Vehicle{ public void walk(){
System.out.println("Aeroplan is Flying"); }
public static void main(String[]args){ AeroPlan garuda = new AeroPlan(); garuda.function();
garuda.fuel(); garuda.walk(); }
}
a.
Output
:
Penjelasan :
-
Class Vehicle
public abstract class Vehicle {
pada script ini ditunjukkan bahwa kelas Vehicle merupakan kelas abstrak dengan
modifier public.
public void function(){
program ini memiliki method function dengan modifier public, yaitu method
dapat diakses di kelas lain.
System.out.println("Transportation Tools");
Merupakan merintah untuk menampilkan kalimat “Transportation Tools”.
public void fuel(){
membuat method fuel dengan modifier public
System.out.println("Fuels");
Merupakan perintah menampilkan kalimat “Fuels”.
public abstract void walk ();
script di atas mendeklarasikan bahwa kelas ini adalah kelas abstrak melalui
method walk. Di dalam kelas ini setiap methodnya tidak menjelaskna
implementasi dari setiap keluaran yang diperintahkan. Jadi implementasinya akan
dituliskan pada kelas Aeroplan
-
Class Aeroplan
public class AeroPlan extends Vehicle{ public void walk(){
membuat method walk dengan modifier public
System.out.println("Aeroplan is Flying");
Merupakan perintah menampilkan kalimat “Aeroplan is Flying”
public static void main(String[]args){
merupakan main method untuk menjalankan program pada kelas Aeroplan yang
diextends dari kelas Vehicle.
AeroPlan garuda = new AeroPlan();
Script ini digunakan untuk membuat objek baru dari kelas Aeroplan. Objek
tersebut bernama garuda dengan kata kunci new.
garuda.function(); garuda.fuel(); garuda.walk();
b.
Ubahlah method fuel pada class Vehicle menjadi abstract. Kemudian lakukan
kompilasi ulang pada kedua kelas class. Output setelah kompilasi adalah
public abstract class Vehicle {public void function(){
System.out.println("Transportation Tools"); }
public abstract void fuel(){ System.out.println("Fuels"); }
public abstract void walk (); }
Output
Penjelasan :
Ketika method fuel diubah menjadi abstract kemudian dikompilasi maka akan
menghasilkan output error dengan keterangan “
Abstract methods cannot have a body
”
ini berarti pada method anak nya (override) tidak ada method yang digunakan untuk
menjalankan method abstract tersebut sehingga hasilnya error.
c.
Lakukan override method fuel pada class AeroPlan
public class AeroPlan extends Vehicle{public void walk(){
System.out.println("Aeroplan is Flying"); }
public void fuel(){
System.out.println("Fuels"); }
public static void main(String[]args){ AeroPlan garuda = new AeroPlan(); garuda.function();
garuda.fuel(); garuda.walk(); }
Output
Penjelasan :
Program akan berjalan ketika pada kelas Aeroplan terdapat override dari abstract fuel.
Karena method fuel merupakan abstract.
d.
Jelaskan mengapa langkah b dan c berbeda !
Jawab :
Karena di dalam program poin b tidak terdapat override pada method fuel(). Sehingga
output program menjadi error. Sedangkan program pada poin c melakukan override
pada method fuel() sehingga ketika di jalankan tidak terjadi error.
Latihan 2
Nama Program
: Interface
Script Program
:
Class Relation
public interface Relation {
public boolean isGreater(Object a,Object b); public boolean isLess(Object a, Object b); public boolean isEqual(Object a, Object b); }
Class Line
class Line implements Relation { private double x1;
private double x2; private double y1; private double y2;
public Line (double x1, double x2, double y1, double y2){ this.x1=x1;
public double getLength(){
double length=Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)); return length;
}
public boolean isGreater(Object a, Object b){ double aLen = ((Line)a).getLength(); double bLen=((Line)b).getLength(); return (aLen>bLen);
}
public boolean isLess(Object a, Object b){ double aLen = ((Line)a).getLength(); double bLen=((Line)b).getLength(); return (aLen<bLen);
}
public boolean isEqual(Object a, Object b){ double aLen = ((Line)a).getLength(); double bLen=((Line)b).getLength(); return (aLen==bLen);
} }
a.
Tambahkan sebuah class untuk menguji program di atas!
public class UjiRelationLine {public static void main(String[]args){ Line garis1 = new Line (1,2,3,4); Line garis2 = new Line (1,2,3,4); garis1.getLength();
garis2.getLength();
System.out.println("garis1>garis2 = "+garis1.isGreater(garis1,garis2)); System.out.println("garis1 < garis2 ="+garis1.isLess(garis1,garis2)); System.out.println("garis1==garis2 ="+garis1.isEqual(garis1,garis2)); }
}
b.
Output program adalah
Pada program di atas terdapat tiga kelas yaitu class Relation, Class Line, dan class
UjiRelationLine.
-
Class Relation
public interface Relation {
public boolean isGreater(Object a,Object b);
digunakan untuk mendeklarasikan method idGreater dengan menggunakan
parameter (Object a,Object b)
public boolean isLess(Object a, Object b);
digunakan untuk mendeklarasikan method isLess dengan menggunakan
parameter (Object a,Object b)
public boolean isEqual(Object a, Object b);
digunakan untuk mendeklarasikan method isEqual dengan menggunakan
parameter (Object a, Object b)
pada interface semua modifier harus menggunakan public kemudia jumlah
parameter
method
yang
ada
di
interface
dengan
class
yang
mengimplementasikannya harus sama.
-
Class Line
Pada Class Line terdapat pendefinisian dari method
–
method yang berada pada
class Relation. Jadi setiap method yang terdapat dalam class Relation akan
mempunyai implementasi masing-masing sesuai dengan output yang diinginkan,
implementasi itu terdapat dalam class Line.
-
UjiRelationLine
public class UjiRelationLine {
public static void main(String[]args){ Line garis1 = new Line (1,2,3,4); Line garis2 = new Line (1,2,3,4); garis1.getLength();
garis2.getLength();
pada script di atas terdapat main method yang berisi 2 buah objek baru yaitu
garis 1 dan garis 2,serts digunakan untuk menguji dua kelas di atas.
System.out.println("garis1>garis2 "+garis1.isGreater(garis1,garis2)); System.out.println("garis1 < garis2 ="+garis1.isLess(garis1,garis2)); System.out.println("garis1==garis2 ="+garis1.isEqual(garis1,garis2));
c.
Kosongkan isi method isEqual. Kemudian jalankan program.
class Line implements Relation {private double x1; private double x2; private double y1; private double y2;
public Line (double x1, double x2, double y1, double y2){ this.x1=x1;
this.x2=x2; this.y1=y1; this.y2=y2; }
public double getLength(){
double length=Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)); return length;
}
public boolean isGreater(Object a, Object b){ double aLen = ((Line)a).getLength(); double bLen=((Line)b).getLength(); return (aLen>bLen);
}
public boolean isLess(Object a, Object b){ double aLen = ((Line)a).getLength(); double bLen=((Line)b).getLength(); return (aLen<bLen);
}
public boolean isEqual(){
} }
Output :
d.
Hapus method isEqual. Kemudian jalankan program!
class Line implements Relation {private double x1; private double x2; private double y1; private double y2;
public Line (double x1, double x2, double y1, double y2){ this.x1=x1;
this.x2=x2; this.y1=y1; this.y2=y2; }
public double getLength(){
double length=Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)); return length;
}
public boolean isGreater(Object a, Object b){ double aLen = ((Line)a).getLength(); double bLen=((Line)b).getLength(); return (aLen>bLen);
}
public boolean isLess(Object a, Object b){ double aLen = ((Line)a).getLength(); double bLen=((Line)b).getLength(); return (aLen<bLen);
} }
Output
Penjelasan c dan d :
isEqual didefinisikan “=”. Jika ‘=” tidak dicantumkan maka bagaimana kita
mengkompilasikan sebuah operand jika yang diketahui hanya operand dan hasil.
Latihan 3
Nama Program
:Polymorphism
Script Program
:
Class Pegawai
public class Pegawai { String nama;
class Direktur extends Pegawai {
private static final int gajiDir = 100000;
class Staf extends Pegawai{
private static final int gajiStaf=50000; private static final int bonusStaf=10000;
public int Bonus(){ return bonusStaf; }
}
Class PembayaranGaji
class PembayaranGaji {public int hitunganGaji(Pegawai peg){ int uang = peg.gaji();
if(peg instanceof Direktur)
uang+=((Direktur)peg).tunjangan(); if(peg instanceof Staf)
uang+=((Staf)peg).Bonus(); return uang;
}
public static void main(String[]args){
PembayaranGaji pg = new PembayaranGaji(); Staf all = new Staf();
Direktur tony = new Direktur();
System.out.println("Gaji yang dibayarkan untuk Staf ="+pg.hitunganGaji(all));
System.out.println("Gaji uang dibayarkan kepada Direktur ="+pg.hitunganGaji(tony));
} }