Anda di halaman 1dari 4

Saatnya kita percaya dengan kemampuan kita sendiri

#revolusi_mental

1. Jawaban no 1, revisi dari program (source code terlampir di .rar)

class TesEksepsi{
public static void main(String[] args) {
try{
float c = 2 / 0;
System.out.println("Setelah Pembagian");
String str = null;
if(str.equals("ifundip")){
System.out.println("benar");
}
}
catch(NullPointerException e){
System.out.println("eksepsi null");
}
catch(ArithmeticException e){
System.out.println("eksepsi aritmetik");
}
catch(Exception e){
System.out.println("Eksepsi");
}
finally{
System.out.println("Finally");
}
}
}

Untuk mencari kesalahannya bandingkan source code revisi program(di atas) dengan
source code yang ada di soal.

*catatan :

Cara untuk mengcompile seperti biasa, dengan menggunakan perintah :

1. Javac TesEksepsi.java
2. Java TesEksepsi

Output :

Created by : Hamba Allah


Saatnya kita percaya dengan kemampuan kita sendiri

#revolusi_mental

Jawaban no 2, (source code terlampir di .rar)

*class Pegawai

public class Pegawai {


public String nama;
public int gapok = 9000000;

public void tampilData(){


System.out.println("nama = "+nama);
System.out.println("Gaji Pokok = "+gapok);
}

*class Programmer

public class Programmer extends Pegawai {


public int bonus = 5000000;

public void tampilData(){


super.tampilData();
System.out.println("bonus = " +bonus);
}
}

*class Manajer

public class Manajer extends Pegawai {


public int tunjangan = 10000000;

public void tampilData(){


super.tampilData();
System.out.println("tunjangan = " +tunjangan);
}
}

Created by : Hamba Allah


Saatnya kita percaya dengan kemampuan kita sendiri

#revolusi_mental

* Implementasi polimorfisme dalam java

public class MainClass {


public static void main(String[] args) {

Pegawai p = new Programmer();


p.nama = "Paiman";
p.tampilData();
if (p instanceof Programmer){
Programmer prog = (Programmer)p;
int gatot = prog.bonus + prog.gapok;
System.out.println("Gaji Total Programmer = "+gatot);
}
else if (p instanceof Manajer){
Manajer man = (Manajer)p;
int gatot = man.tunjangan + man.gapok;
System.out.println("Gaji Total Manajer = "+gatot);
}
}
}

Sintaks di bawah ini berfungsi untuk memeriksa apakah ‘p’ merupakan polimorfisme
dari kelas Pegawai, dan ‘p’ apakah termasuk dalam instanceof dari kelas
‘Programmer’ atau ‘Manajer’

if (p instanceof Programmer){
Programmer prog = (Programmer)p;
int gatot = prog.bonus + prog.gapok;
System.out.println("Gaji Total Programmer = "+gatot);
}
else if (p instanceof Manajer){
Manajer man = (Manajer)p;
int gatot = man.tunjangan + man.gapok;
System.out.println("Gaji Total Manajer = "+gatot);
}

Penjelasan tentang VMI(virtual method invocation)

Syarat terjadinya VMI adalah sebelumnya sudah terjadi polymorphism. Pada saat
obyek yang sudah dibuat tersebut memanggil overridden method pada parent class,
kompiler Java akan melakukan invocation (pemanggilan) terhadap overriding
method pada subclass.

Yang terjadi pada contoh:

 Obyek ‘p’ mempunyai behavior yang sesuai dengan runtime type bukan
compile type.

Created by : Hamba Allah


Saatnya kita percaya dengan kemampuan kita sendiri

#revolusi_mental

 Ketika compile time ‘p’ adalah ‘Pegawai’.


 Ketika runtime ‘p’ adalah ‘Programmer’.

Jadi :

 ‘p’ hanya bisa mengakses variabel milik Pegawai


 ‘p’ hanya bisa mengakses method milik Programmer

Created by : Hamba Allah