Anda di halaman 1dari 13

MODUL PRAKTIKUM IV

ABSTRACT CLASS, INTERFACE DAN POLYMORPHISM

A. Tujuan
1. Siswa mampu memahami class abstract
2. Siswa mampu memahami interface
3. Siswa mampu memahami polymorphism
4. Siswa mampu menciptakan method invocation
5. Siswa mampu memahami polymorphic arguments

B. Dasar Teori 1. Kelas Abstrak (Abstract Class)

Kelas abstrak adalah kelas yang terletak di posisi tertinggi dalam hierarki
class. Kelas ini tidak dapat diinstansiasi karena masih bersifat abstrak. Kelas
ini hanya berisi variabel-variabel umum dan deklarasi method tanpa detail
implementasi. Selanjutnya kelas-kelas yang menjadi turunan dari kelas
abstraklah yang akan mengimplementasikan method-method tanpa
implementasi tersebut.

2. Interface

Interface memungkinkan pemrogram untuk berbagi konstanta atau


menentukan bentuk metode yang dapat digunakan oleh sejumlah kelas. Beda
interface dengan kelas abstrak :

1. Kelas abstrak dapat mengandung method abstract maupun method tidak


abstract, sedangkan interface hanya boleh mengandung method abstract

2. Kelas abstrak dapat mendeklarasikan variabel instans, sedangkan interface


hanya dapat mendeklarasikan konstanta

3. Kelas abstrak digunakan oleh kelas lain melalui metode pewarisan dengan
kata kunci extends, sedangkan sebuah interface diimplementasikan ke
dalam suatu class dengan menggunakan kata kunci implements, dan
sebuah kelas dapat mengimplementasikan lebih dari satu interface.

3. Polymorphism

Polymorphism berarti banyak bentuk. Polymorphism merupakan konsep


sederhana dalam bahasa pemrograman berorientasi obyek yang berarti

1 Modul Praktikum PBO SMK Telkom Malang


kemampuan sebuah obyek untuk menghasilkan aksi yang berbeda, bila
method yang sama dipanggil, dimana aksi method yang dikerjakan tergantung
dari tipe obyeknya.

Polymorphism sering dikaitkan dengan penggunaan lebih dari satu


metoda dengan nama sama. Penggunaan metoda dengan nama sama dapat
diterapkan dengan method overloading dan method overriding. Pada saat
obyek yang sudah dibuat tersebut memanggil overridden method pada parent
class, compiler Java akan melakukan invocation (pemanggilan) terhadap
overriding method pada subclass dimana yang seharusnya dipanggil adalah
overridden method.

4. Virtual Method Invocation (VMI)


Virtual Method Invocation (VMI) terjadi karena objek yang sudah di buat
tersebut memanggil overriden method pada parent class dan akan melakukan
panggilan pada overriding method yang seharusnya adalah overriden.
Virtual Method Invocation (VMI) bisa terjadi jika adanya polimorfisme dan
overriding dalam sebuah program. Pada saat obyek yang sudah di buat tersebut
memanggil overridden method pada parent class, compiler Java akan melakukan
invocation (pemanggilan) terhadap overriding method pada subclass, dimana yang
seharusnya di panggil adalah overridden method. Berikut contoh terjadinya VMI:
Listing Program

Class Parent{ intx=5;


public void Info(){
System.out.println(“Ini class Parent”);
}
}
Class Child extends Parent{ intx=10;
public void Info(){
System.out.println(“Ini class Child”);
}
}
Public class Tes{
Public static void main(String args[]){
Parent tes = new Child();
System.out.println(“Nilai x =“+tes.x); tes.Info();
}
}

Hasil dari running program diatas adalah sebagai berikut:

2 Modul Praktikum PBO SMK Telkom Malang


Nilaix=5
Ini class Child

Listing Program

class Vehicle {
public void move () {
System.out.println ("Vehicles are used for
moving from one place to another ");
}
} class Car extends
Vehicle { public void
move () {
super. move (); // invokes the super class method
System.out.println ("Car is a good medium of transport
");
}
}
public class TestCar {
public static void main (String args []){
Vehicle b = new Car (); // Vehicle reference but
Car object
b.move (); //Calls the method in Car class
}
}

Output Program

Vehicles are used for moving from one place to another


Car is a good medium of transport

5. Polymorphic arguments
Polymorphic arguments adalah tipe suatu parameter yang menerima suatu nilai
yang bertipe subclass-nya. Pernyataan instance of sangat berguna untuk mengetahui
tipe asal dari suatu polymorphic arguments } Seringkali pemakaian instance of diikuti
dengan casting object dari tipe parameter ke tipe asal.
Polymorphic arguments adalah tipe suatu parameter yang menerima suatu nilai
yang bertipe subclass-nya. Berikut contoh dari polymorphics arguments:
Listing
Program
Class Pegawai{
}

3 Modul Praktikum PBO SMK Telkom Malang


Class Manajer extends Pegawai{

}
Public class Tes{
Public static void Proses(Pegawai peg){

}
Public static void main(String args[]){
Manajer man = new Manajer(); Proses(man);
}
}

Pernyataan instance of sangat berguna untuk mengetahui tipe asal dari suatu
Polymorphic arguments. Untuk lebih jelasnya, misalnya dari contoh program
sebelumnya, kita sedikit membuat modifikasi pada class Tes dan ditambah
sebuah class baru Kurir, seperti yang tampak dibawah ini:

Listing
Program
Class Kurir extends Pegawai
}
Public class Tes{
Public static void Proses(Pegawai peg){
if(peginstanceofManajer){ …lakukan
tugas-tugas manajer…
}elseif(peginstanceofKurir){
…lakukan tugas-tugas kurir…
}else{
…lakukan tugas-tugas lainnya…
}
}

Public static void main(String args[]){


Manajer man = new Manajer();
Kurir kur = new Kurir();
Proses(man);
Proses(kur);
}
}

Seringkali pemakaian instance of diikuti dengan casting object dari tipe parameter
ke tipe asal. Pada saat sudah melakukan instance of dari tipe manajer, kita dapat
melakukan casting object ke tipe asalnya, yaitu manajer. Caranya adalah seperti
berikut:
Listing
Program
if(peginstanceofManajer)
{
Manajer man =(Manajer)peg;
…lakukan tugas – tugas manajer…

4 Modul Praktikum PBO SMK Telkom Malang


C. Latihan
Latihan 1 : Abstract Class
1. Buatlah sebuah project baru dengan susunan class sebagai berikut :

2. Ketikkan program berikut ini pada Vehicle.java

public abstract class Vehicle {


public void function(){
System.out.println("Tools transportation");
}
public void fuel(){
System.out.println("fuels");
} public abstract void walk(); // penulisan method
abstract
}

3. Ketikkan program berikut ini pada AeroPlan.java


public class AeroPlan extends Vehicle {

@Override
public void walk(){
System.out.println("Aeroplan Flying");
}
public static void main(String[] args)
{ // TODO code application logic
here AeroPlan garuda = new
AeroPlan(); garuda.function();
garuda.fuel(); garuda.walk();

4. Screenshoot hasil Compiling program :

5 Modul Praktikum PBO SMK Telkom Malang


5. Ubahlah method fuel pada class Vehicle menjadi abstract. Kemudian lakukan
kompilasi ulang pada kedua class. Screenshoot hasil kompilasi dan teks editor
pada aplikasi netbeans.

6. Lakukan override method fuel pada class AeroPlan. Kemudian lakukan


kompilasi ulang pada kedua class. . Screenshoot hasil kompilasi :

7. Jelaskan mengapa pada Langkah 5 dan 6 berbeda ?

6 Modul Praktikum PBO SMK Telkom Malang


Karena pada langkah 5 adalah mengubah method fuel menjadi abstract
sedangkan pada langkah 6 adalah meng override kan method fuel pada class
AeroPlan.

Latihan 2 : Interface
1. Buatlah project baru dengan susunan class sebagai berikut :

2. Ketikkan program berikut ini pada Class Relation.java


public interface Relation {
public boolean isGreater(Object a, Object b);
public boolean isLess (Object a, Object b);
public boolean isEqual (Object a, Object b);

3. Ketikkan program berikut ini pada Class Line.java


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((x1-x2)*(x2-x1)+(y2-y1)*(y2-y1));
return length;
}
@Override

public boolean isGreater(Object a, Object b){

7 Modul Praktikum PBO SMK Telkom Malang


double aLen=((Line)a).getLength();
double bLen=((Line)b).getLength();
return (aLen>bLen);
}
@Override public boolean
isLess(Object a, Object b){ double
aLen=((Line)a).getLength(); double
bLen=((Line)b).getLength(); return
(aLen<bLen);
}
@Override public boolean
isEqual(Object a, Object b){ double
aLen=((Line)a).getLength(); double
bLen=((Line)b).getLength(); return
(aLen==bLen);
}
}

4. Ketikkan program berikut ini pada Class cobalahh.java dan tambahkan


pemanggilan method isEqual dan isLess yang sudah dibuat pada class Line
public class cobalahh {

public static void main(String[] args) {


Line coba = new Line(2.5,3,4,5);
Line pertama = new Line(3,4,5,6);
coba.getLength();
coba.isGreater(coba, pertama);
System.out.println(coba.isGreater(coba, pertama));
}
}

5. Screenshoot hasil praktikum:

8 Modul Praktikum PBO SMK Telkom Malang


6. Kosongkan isi method isEqual. Kemudian jalankan program. Output program
adalah

7. Hapus method isEqual. Kemudian jalankan program! Output program adalah

9 Modul Praktikum PBO SMK Telkom Malang


Latihan 3 Menerapkan Polymorphism
1. Buatlah sebuah project baru dengan susunan seperti berikut:

2. Ketikkan program berikut ini pada Pegawai.java


public class Pegawai {
String nama;
int gaji;
Pegawai(){

}
Pegawai (String nm){
this.nama=nm;
System.out.println("pegawai");
} public int
gaji(){
return 0;
}
}

3. Ketikkan program berikut ini pada Direktur.java


public class Direktur extends Pegawai {
private static final int gajiDir=100000;
private static final int tunjangan=50000;

@Override
public int gaji(){
return gajiDir;
}
public int tunjangan(){
return tunjangan;
}
}

4. Ketikkan program berikut ini pada Staf.java


public class Staf extends Pegawai {
private static final int gajiStaf=50000;
private static final int bonusStaf=10000;

1 Modul Praktikum PBO SMK Telkom Malang


0
@Override
public int gaji(){
return gajiStaf;
}
public int Bonus(){
return bonusStaf;
}
}

5. Ketikkan program berikut ini pada PembayaranGaji.java


class PembayaranGaji {
public int hitungGaji(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 ali = new Staf();
Direktur Tony = new Direktur();
System.out.println("gaji staf = "+pg.hitungGaji(ali));
System.out.println("gaji direktur = "+pg.hitungGaji(Tony));
}
}

6. Screenshoot Output Program:

Tugas Praktikum

1 Modul Praktikum PBO SMK Telkom Malang


1
Persegi panjang dibentuk oleh empat titik sudut. Membutuhkan constructor dan
method seperti program di bawah ini. Buat subclass dengan menggunakan class
Rect dan menghasilkan tampilan minimal seperti berikut.

1 Modul Praktikum PBO SMK Telkom Malang


2
Tetaplah MANIS di tempat yang begitu Pahit..
Tetaplah merasa KECIL meskipun dipandang menjadi Besar..
dan, tetaplah TENANG di tengah Badai yang paling Hebat..
Karena semua akan indah pada waktu yang direncanakan.

--Siswa Telkom Kreatif


--

1 Modul Praktikum PBO SMK Telkom Malang


3

Anda mungkin juga menyukai