• Tidak ada hasil yang ditemukan

LAPORAN PRAKTIKUM PBO MODUL 5 ABSTRACT C

N/A
N/A
Protected

Academic year: 2018

Membagikan "LAPORAN PRAKTIKUM PBO MODUL 5 ABSTRACT C"

Copied!
12
0
0

Teks penuh

(1)

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

(2)

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 :

(3)

-

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

(4)

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(); }

(5)

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;

(6)

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

(7)

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

(8)

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 :

(9)

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 :

(10)

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;

(11)

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

} }

a.

Output

:

Penjelasan :

(12)

yaitu Rp 50.000. Pada class Direktur ini terdapat dua method yaitu gaji yang mengoveride

dari kelas induk dan method tunjangan. Dimana masing

masing method akan

mengembalikan nilai dari variabel gajiDir dan tunjangan. Kemudian pada class Staf juga

dideklarasikan gaji awalnya adalah Rp 50.000 dan bonus sebesar Rp 10.000. pada class Staf

ini terdapat 2 method yaitu method gaji yang mengoverride dari kelas induk dan Bonus.

Dimana masing

masing method akan mengembalikan nilai dari variabel gajiStaf dan bonus.

Pada Class PembayaranGaji memiliki method hitungGaji dan method utama yaitu method

main. Method hitungGaji memiliki parameter Pegawai peg yang berfungsi untuk menghitung

gaji pegawai. Kemudian dalah method ini juga dideklarasikan variabel uang, variabel uang

ini akan memanggil method gaji pada pegawai. Untuk menampilkan hasilnya, pada method

main dibuat objek baru yang bernamaali dan tony. Kemudian hasilnya akan ditampilkan

dengan memanggil method hitungGaji.

DAFTAR PUSTAKA

Kartika,Candra Kirana.2017.Abstract, Interface, Polymorphism.Malang:Universitas Negeri

Malang.

Putuguna.

2016.

Pengertian

Interface

dan

Cara

Penggunaan

di

Java.

https://putuguna.com/2016/08/pengertian-interface-dan-cara-pengunaannya-di-java.html. Diakses pada tanggal 28 Oktober 2017

___.2016.

Memahami

Konsep

Polimorfisme

(Polymorphism)

di

Java.

Referensi

Dokumen terkait

Fungsi adalah suatu bagian dari program yang dirancang untuk melaksanakan tugas tertentu dan letaknya dipisahkan dari program yang menggunkannya.. Manfaat

Tuliskan Program 6.1 berikut ini pada editor Dev-C++ (program ini merupakan program untuk mencari nilai terbesar dari 3 buah bilangan yang diinput).. Program 6.1 di

Class Queue digunakan sebagai main method, didalam class tersebut terdapat beberapa operasi seperti enqueue ini digunakan untuk menambahkan elemen ke dalam Antrian,

Dengan SQL, kita dapat mengakses database, menjalankan query untuk mengambil data dari database, menambahkan data ke database, menghapus data di dalam

Tuliskan Program 6.1 berikut ini pada editor Dev-C++ (program ini merupakan program untuk mencari nilai terbesar dari 3 buah bilangan yang diinput).. Program 6.1 di

Dari percobaan pertama kita dapat buktikan bahwa pemuaian benda gas terlihat pada gelembung-gelembung air dalam baskom / ember dan pada percobaan kedua terbukti dengan

Berdasarkan data yang diperoleh oleh teman saya Muhammad Zaihal Zikri dari kelompok 3, pada perlakuan 3 teridentifikasi merupakan aliran laminar karena memiliki bilangan Reynold sebesar

2.6 Method Overriding Overriding adalah konsep dalam pemrograman berorientasi objek di mana sebuah kelas turunan subclass menyediakan implementasi ulang dari metode yang sudah