Modul PBO1-7.doc

41
MODUL 1 EXCEPTION 1 1. TUJUAN Mampu mengimplementasikan konsep exception 2. TEORI Dalam pembuatan program seringkali dijumpai error atau kesalahan. Oleh karena itu, diperlukan suatu mekanisme yang membantu menangani error atau kesalahan yang terjadi, baik saat pembuatan maupun implementasi program. Java menyediakan mekanisme dalam pemrograman untuk menangani hal-hal tersebut yang disebut dengan exception. Exception adalah event yang terjadi ketika program menemui kesalahan pada saat instruksi program dijalankan. Banyak hal yang dapat menimbulkan event ini, misalnya crash, harddisk rusak dengan tiba-tiba, sehingga program-program tidak bisa mengakses file-file tertentu. Programmer pun dapat menimbulkan event ini, misalnya dengan melakukan pembagian dengan bilangan nol, atau pengisian elemen array melebihi jumlah elemen array yang dialokasikan dan sebagainya. Exception terdiri dari dua macam kelompok, yaitu : Exception yang merupakan subclass RunTimeException Exception yang bukan subclass RunTimeException RunTimeException biasanya disebabkan oleh kesalahan program atau pada desain program. Misalnya NullPointerException yang disebabkan oleh proses inisialisasi program yang tidak sempurna dan ArrayIndexOutOfBoundsException yang disebabkan akses array yang melebihi kapasitas array yang ada. Dalam bahasa Java, ketika terjadi kesalahan, otomatis akan dilemparkan sebuah objek yang disebut exception, yang kemudian dapat diproses lebih lanjut oleh fungsi-fungsi yang siap menangani kesalahan tersebut. Proses pelemparan exception tersebut sering dikenal dengan istilah throwing 1

description

Pbo

Transcript of Modul PBO1-7.doc

Page 1: Modul PBO1-7.doc

MODUL 1

EXCEPTION 1

1. TUJUAN

Mampu mengimplementasikan konsep exception

2. TEORI

Dalam pembuatan program seringkali dijumpai error atau kesalahan. Oleh karena

itu, diperlukan suatu mekanisme yang membantu menangani error atau kesalahan yang

terjadi, baik saat pembuatan maupun implementasi program. Java menyediakan

mekanisme dalam pemrograman untuk menangani hal-hal tersebut yang disebut dengan

exception.

Exception adalah event yang terjadi ketika program menemui kesalahan pada saat

instruksi program dijalankan. Banyak hal yang dapat menimbulkan event ini, misalnya

crash, harddisk rusak dengan tiba-tiba, sehingga program-program tidak bisa mengakses

file-file tertentu. Programmer pun dapat menimbulkan event ini, misalnya dengan

melakukan pembagian dengan bilangan nol, atau pengisian elemen array melebihi jumlah

elemen array yang dialokasikan dan sebagainya.

Exception terdiri dari dua macam kelompok, yaitu :

Exception yang merupakan subclass RunTimeException

Exception yang bukan subclass RunTimeException

RunTimeException biasanya disebabkan oleh kesalahan program atau pada desain

program. Misalnya NullPointerException yang disebabkan oleh proses inisialisasi

program yang tidak sempurna dan ArrayIndexOutOfBoundsException yang disebabkan

akses array yang melebihi kapasitas array yang ada.

Dalam bahasa Java, ketika terjadi kesalahan, otomatis akan dilemparkan sebuah

objek yang disebut exception, yang kemudian dapat diproses lebih lanjut oleh fungsi-

fungsi yang siap menangani kesalahan tersebut. Proses pelemparan exception tersebut

sering dikenal dengan istilah throwing exception, sedangkan proses penerimaan

exception yang bersangkutan dikenal dengan istilah catch exception

Ada lima kata kunci yang digunakan oleh Java untuk menanngani exception

ini, yaitu, try, catch, finally, throw, dan throws.

Situasi yang menyebabkan exception dibagi menjadi 3 kategori yaitu,

Kesalahan kode atau data. Contohnya jika kode berusaha mengakses

suatu indeks dari array yang di luar batas array.

Metode standar exception. Contohnya, metode substring() dalam kelas

String, dapat memunculkan pesan dalam bentuk

StringIndexOutofBoundsException.

1

Page 2: Modul PBO1-7.doc

Kesalahan Java. Hal ini merupakan kesalahan dalam mengeksekusi Java

Virtual Machine yang dijalankan pada saat kompilasi.

Istilah exception digunakan untuk menunjukkan kesalahan pada hardware,

software, serta algoritma. Suatu exception adalah obyek dari kelas standar Throwable,

yang mempunyai turunan terdiri dari :

Error. Exception yang didefinisikan dalam keas ini mempunyai

karakteristik bahwa kondisi yang terjadi tidak dapat diubah. Terdapat

tiga macam subclass yang berada dibawahnya yaitu, ThreadDeath,

Linkage Error, VirtualMachineError.

Exception. Untuk kelas yang diturunkan dari exception kompiler

memeriksa bahwa kita bisa menangani exception dengan metode yang

ada.

Kelas exception mempunyai banyak kelas turunan. Dua kelas yang penting yaitu,

IOException

RuntimeException

Tabel Subkelas dari RunTime Exception

Kelas Keterangan

ArithmeticException Kesalahan pada operasi aritmatika

IndexOutofBoundsException Beberapa jenis indeks di luar batas

NegativeArraySizeException Array diciptakan dengan ukuran negatif

NullPointerExcepotion Penggunaan acuan null yang tidak valid

ArrayStroreException Penyimpanan array dengan tipe data yang

tidak sesuai.

ClassCastException Cast yang tidak valid

IllegalArrayArgumentException Argumen yang tidak benar

SecurityException Aturan sekuriti yang dilanggar

IllegalMonitorStateException Operasi monitor ilegal

IllegalStateException Lingkungan yang tidak benar

UnsupportedOperationException Operasi yang tidak didukung

3. PELAKSANAAN

Macam penanganan exception exception menggunakan kata kunci try,

catch, dan finally sebagai berikut :

Kode yang akan dimonitor exception-nya diletakkan dalam blok try. Jika terjadi

exception dalam blok tersebut, maka exception dilemparkan.

Blok yang diawali dengan catch menangani exception tersebut.

Blok yang diawali dengan finally pada umumnya dieksekusi sebelum methode

berakhir.

2

Page 3: Modul PBO1-7.doc

Sintaks blok try .. catch adalah sebagai berikut :

try{

//kode yang dapat memunculkan exception}

catch

{

//kode untuk menangani exception

}

Sintaks blok try .. catch ..finally adalah sebagai berikut :

try{

//kode yang dapat memunculkan exception}

catch

{

//kode untuk menangani exception

}

finally

{

//blok kode yang selalu dieksekusi

}

Praktik 1 : try .. catch

public class TryCatch { public static void main(String[] args) { int i=1; int j=0; try { System.out.println("i="+i+"j="+j); System.out.println(i/j); System.out.println("Blok Terakhir dari try"); } catch (ArithmeticException e){ System.out.println("Keterangan exception = "+e); } System.out.println("Setelah blok try"); return; } }

- Jalankan dan amati hasilnya.

- Jelaskan maksud dari hasil program tersebut

3

Page 4: Modul PBO1-7.doc

Praktik 2 : try .. catch .. finally

public class TryFinal { public TryFinal() { } public static void main(String[] args) { int i=1; int j=0; try { System.out.println("i="+i+"j="+j); System.out.println(i/j); System.out.println("Blok Terakhir dari try"); } //catch exception catch (ArithmeticException e){ System.out.println("Keterangan exception = "+e); } finally{ System.out.println("Dieksekusi setelah Blok try"); } } }

- Jalankan dan amati hasilnya.

- Jelaskan maksud dari hasil program tersebut

4. LATIHAN

1. Buatlah program untuk kelas RunTimeException berdasarkan tabel di atas!

5. TUGAS

1. Buatlah program Java yang memiliki/menggunakan blok catch lebih

dari satu !

4

Page 5: Modul PBO1-7.doc

MODUL 2

THROW DAN THROWS

1. TUJUAN

Mampu mengimplementasikan konsep exception dengan perintah throw dan throws.

2. TEORI

Kata kunci throw digunakan di program untuk melempar (throw)

exception secara eksplisit. Bentuk umum kalimat adalah,

Throw ThrowableInstance;

Instan Throwable harus merupakan obyek dengan tipe Throwable atau subkelas dari

Throwable. Terdapat dua cara untuk memperoleh obyek Throwable, yaitu,

1. Menggunakan parameter di klausa catch

2. Menciptakab salah satu dengan menggunakan operator new()

Eksekusi program akan dihentikan segera setelah kalimat throw, kalimat-kalimat

setelah kalimat throw tidak dieksekusi. Java akan melakukan inspeksi blok try

terdekat untuk menemukan catch yang cocok dengan dengan tipe exception yang

dilempar. Jika Java menemukannya, maka kendali program ditransfer ke kalimat itu.

Jika tidak ditemukan, maka Java akan melakukan penelusuran ke blok berikutnya dan

bila tetap tidak ditemukan, maka penanganan exception secara default akan

menghentikan programnya.

Penggunaan kata kunci throws berhubungan erat dengan penggunaan

exception yang dicek oleh Java. Klausa throws mendaftarkan tipe-tipe exception yang

dapat dilempar method. Hal ini diperlukan agar diketahui semua exception yang

mungkin dilempar method atau subkelasnya, kecuali tipe Error atau

RunTimeException yang dilakukan sistem Java secara otomatis bila menemui

pelangggaran aturan-aturan Java. Semua exception yang hendak dilempar method

harus dideklarasikan di klausa throws. Jika method melemparkan exception yang

tidak dideklarasikan di deklarasi method, maka kompilator akan memberi pesan

kesalahan

3. PELAKSANAAN

Secara umum, penggunaan kata kunci throw, yaitu,

Throw ObjekEksepsi;

ObjekEksepsi disini adalah semua obyek yang merupakan turunan dari class

throwable.

5

Page 6: Modul PBO1-7.doc

Praktik 1. kata kunci throw

Contoh.

public class DemoEksepsi {

public static void methodLain() {

try

{

throw new ArrayIndexOutOfBoundsException(1);

}

catch (ArrayIndexOutOfBoundsException e){

System.out.println("Penanganan eksepsi dalam Method MethodLain()");

throw e;

}

}

public static void main(String[]args) {

try

{

methodLain();

}

catch (ArrayIndexOutOfBoundsException e){

System.out.println("Penanganan eksepsi dalam Method main()");

}

}

}

- Jalankan dan amati hasilnya.

- Jelaskan maksud dari hasil program tersebut

Praktik 2 kata kunci throws

Contoh.

public class DemoEksepsi { public static void methodLain()

throws java.rmi.ServerException,java.rmi.RemoteException {

int i = 10;if(i==10)

throw new java.rmi.ServerException(“Eksepsi dalam method MethodLain()”) else

throw new java.rmi.RemoteException(“Eksepsi lainnya dalam MethodLain }

}- Jalankan dan amati hasilnya.

- Jelaskan maksud dari hasil program tersebut

6

Page 7: Modul PBO1-7.doc

4. LATIHAN

Modifikasilah praktik 1 dengan bentuk exception yang lain.

5. TUGAS

1. Jelaskan tentang keyword ‘throw’ dan ‘throws’ , dan buatlah

program java untuk keduanya !

2. Apa perbedaan antara keyword throw dengan keyword throws !

7

Page 8: Modul PBO1-7.doc

MODUL 3

MEMBUAT CLASS EKSEPSI SENDIRI

1. TUJUAN

Mampu membuat class eksepsi sendiri

2. TEORI

Meskipun tersedia banyak kelas exception pada package java.lang, namun tidak

mencukupi untuk menampung seluruh kemungkinan tipe eksepsi yang mungkin terjadi.

Sehingga seringkali diperlukan untuk membuat tipe eksepsi tersendiri.

Cara pembauatan kelas eksepsi baru adalah mudah. Tinggal mendefinisikan

turunan kelas Exception (yang juga merupakan turunan dari kelas Throwable). Kelas baru

tersebut tidak perlu mengimplementasikan apapun. Hanya perlu mendeklarasikan

konstruktor yang mungkin akan digunakan.

Kelas Exception tidak mendefinisikan method apapun di dirinya. Kelas ini hanya

mewarisi method-method yang disediakan kelas Throwable. Jika diperlukan, maka

method-method tersebut dapat dioverride sesuai kebutuhan

Berikut ini daftar method tersebut :

Method Fungsi

Throwable fillStackTrace() Mengembalikan object Throwable yang

berisi data stack trace lengkap.

String getLocalizedMessage() Mengembalikan deskripsi tentang eksepsi

menggunakan bahasa lokal

String getMessage() Mengembalikan deskripsi tentang eksepsi

void printStackTrace() Menampilkan stack trace

void printStackTrace(PrintStream stream) Mengirim hasil dari stack trace ke stream

yang telah ditentukan

void printStackTrace(PrintWriter stream) Mengirim hasil dari stack trace ke stream

yang telah ditentukan

String toString() Mengembalikan deskripsi tetang tipe object

eksepsi dan penjelasan tentang eksepsi

tersebut. Akan dipanggil secara otomatis

ketika object eksepsi dicetak dengan

method println()

8

Page 9: Modul PBO1-7.doc

3. PELAKSANAAN

Praktek 1: Membuat Exception

class EksepsiKu extends Exception{EksepsiKu(String s){

super(s);}

}

class TestEksepsiKu {public static void methodKu() throws EksepsiKu {

throw new EksepsiKu("Isi Eksepsi");}

public static void main(String[] args) {try {

methodKu();} catch (EksepsiKu e) {

System.out.println("Terjadi eksepsi: dari " + e);}

}}

- Coba dan pelajari contoh pembuatan kelas eksepsi di atas.

- Jelaskan maksud dari hasil program tersebut

Praktek 2 : Membuat eksepsi

class StringException extends RuntimeException{

/* Tidak perlu memasukkan member ataupun construktor */

}

class TestStringException {

public static void main(String args[]) {

String input = "invalid input";

try {

if (input.equals("invalid input")) {

throw new StringException();

}

System.out.println("String accepted.");

} catch (StringException e) {

System.out.println("I hate this string: " + input +".");

}

}

9

Page 10: Modul PBO1-7.doc

}

- Coba dan pelajari contoh penggunaan kelas eksepsi di atas.

- Jelaskan maksud dari hasil program tersebut

3. LATIHAN :

1. Modifikasilah agar data String pada program pada praktek 2 dimasukkan dari

keyboard!

4. TUGAS

1. Jelaskan fungsi pembuatan sub kelas eksepsi sendiri!

2. Buatlah program konversi bilangan dari desimal ke biner. Tentukan sebuah angka

desimal sebagai input. Konversi angka tersebut menjadi bilangan biner. Buatlah

exception class anda sendiri dan lakukan penanganan jika input dari user bukan

berupa bilangan heksadesimal.

10

Page 11: Modul PBO1-7.doc

MODUL 4

KELAS ABSTRAK

1. TUJUAN

Mampu mengimplementasikan kelas abstrak

2. TEORI

Kelas Abstrak adalah kelas yang tidak dapat dibuat obyeknya (diinstantiasi). Hal

ini dikarenakan kelas tersebut belum lengkap karena memiliki minimal satu buah method

yang tidak mempunyai definisi, hanya berupa deklarasi saja. Agar dapat diinstantiasi

maka kelas turunannyalah yang harus membuat implementasinya (membuat definisi dari

method yang belum lengkap tadi). Sebelum semua method dibuat definisinya,maka kelas

yang mewarisi kelas abstrak juga tidak dapat diinstantiasi, artinya menjadi kelas abstrak

juga.

Biasanya suatu kelas dijadikan abstrak karena kelas tersebut terlalu umum.

Sebagai contoh kelas makhluk hidup berisi method-method seperti : bernafas, makan, dan

masih banyak lagi. Method-method tersebut terlalu abstrak untuk dibuat definisinya

sehingga perlu dibuat kelas khusus yang merupakan turunan dari kelas makhluk hidup,

yang mengimplementasikan method-method diatas.

Deklarasi kelas abstrak :

[modifier] abstract class NamaKelasAbstract {daftar fielddeklarasi method-method;

}

Implementasi kemudian dilakukan pada class turunannya:

class Turunan extends NamaKelasAbstract {definisi method-method;…

}

3. PELAKSANAAN

Kelas abstrak dibuat pada kelas yang umum (berada dalam posisi yang tinggi

dalam hierarki kelas).

Praktik 1 : kelas abstrak

Coba dan pelajari contoh penggunaan kelas abstrak berikut:

abstract class A {public abstract void method1; // deklarasi method abtractpublic void method2 ( ) {

System.out.println(“method kongkrit kelas A”);

11

Page 12: Modul PBO1-7.doc

}}

class B extends A {public void method1 ( ){ // override method1 dan buat implementasinya

System.out.println(“method abtract jd kongkrit di kelas B”);}

class TestAbstract1 {public static main (String [ ] args) {

B b = new B(); b.method1();b.method2();

}}

- Jelaskan maksud dari hasil program tersebut !

Praktik 2 : kelas Abstract dan Polymorfisme

- Coba dan pelajari contoh penggunaan kelas abstrak berikut:

abstract class Bentuk {protected int panjang;protected int lebar;public String getBentuk () {

return "bentuk dasar";}

public abstract int HitungLuas ( );}

class BujurSangkar extends Bentuk {public BujurSangkar(int panjang, int lebar){

this.panjang = panjang;this.lebar = lebar;

}public String getBentuk () {

return "bentuk bujur sangkar"; } public int HitungLuas ( ){

return panjang * lebar;}

}

class Segitiga extends Bentuk {public Segitiga(int panjang, int lebar){

this.panjang = panjang;this.lebar = lebar;

}public String getBentuk () {

return "bentuk segitiga"; } public int HitungLuas (){

return (panjang * lebar)/2;}

}

12

Page 13: Modul PBO1-7.doc

class TestAbstrak2 {public static void cetakLuasBentuk(Bentuk btk){

System.out.println(btk.getBentuk() + " dengan luas :" + btk.HitungLuas());}

public static void main (String [ ] args) {BujurSangkar bs = new BujurSangkar(10,20);Segitiga st = new Segitiga(5,10);cetakLuasBentuk(bs);cetakLuasBentuk(st);

}}

- Jelaskan maksud dari hasil program tersebut !

4. LATIHAN

1. Tambahkan kelas Kotak yang diturunkan dari kelas BujurSangkar pada program

pada Praktik 2 di atas. Kemudian tampilkan luas balok dengan method

cetakLuasBentuk(blk) !

2. Gambarkan kelas diagram untuk program pada Praktik 2 di atas!

5. TUGAS

Buatlah kelas abstrak Manusia yang berisi deskripsi umum dari manusia.

Kemudian buatlah kelas Mahasiswa dan kelas Dosen yang merupakan turunan

dari kelas Manusia, dan masing-masing kelas menangani data mahasiswa dan

dosen

13

Page 14: Modul PBO1-7.doc

MODUL 5

KONSEP INTERFACE

1. TUJUAN

Mampu mengimplementasikan konsep interface

2. TEORI

Interface adalah kelas yang benar-benar abstrak, artinya hanya berisi deklarasi

method dan (jika ada) konstanta saja. Method-method tersebut nantinya harus

diimplementasikan pada real class. Interface dapat dianalogikan seperti

menandatangani kontrak kerja. Misalnya seorang dosen wajib mengajar, membuat

soal, dsb, akan tetapi cara mengajar dan membuat soalnya diserahkan ke masing-

masing dosen (tidak ditentukan dalam kontrak kerja).

Interface mendefinisikan suatu protokol perilaku tanpa dipusingkan dengan

implementasinya. Suatu kelas yang mengimplementasikan interface maka pada kelas

tersebut akan melekat perilaku yang didefinisikan interface.

Sebagai contoh : Dalam kehidupan nyata dapat diketahui ada manusia yang

bekerja sebagai tentara, penyanyi, pengacara, dan sebagainya, tentunya manusia-manusia

tersebut selain harus memiliki method standard sebagai seorang manusia, juga harus

memiliki method yang sesuai dengan pekerjaannya. Dengan demikian untuk membuat

objek manusia yang bekerja sebagai penyanyi, harus dibuat kelas yang merupakan

turunan kelas manusia yang meng-implementasikan interface penyanyi.

Delarasi interface :

[modifier] interface NamaInterface {deklarasi konstanta;deklarasi method-method;

}

Implementasi kemudian dilakukan pada class lainnya:

[modifier] class NamaKelas implements NamaInterface{definisi method-method;…

}

14

Page 15: Modul PBO1-7.doc

3. PELAKSANAAN

Praktek 1 : Interface ActionListener

Coba dan pelajari contoh penggunaan interface dalam aplikasi GUI berikut. Dalam

contoh ini Kelas Tombol diturunkan dari kelas Frame, dan juga mengimplementasikan

interface ActionListener, yang memiliki sebuah method yaitu : ActionPerformed.

import java.awt.*;import java.awt.event.*;

public class Tombol extends Frame implements ActionListener {//dekarasi komponenButton bTekan = new Button();TextField txt1 = new TextField(" ");

public Tombol() {//layout komponenthis.setLayout(new FlowLayout());//menambahkan komponen ke framethis.add(bTekan,null);this.add(txt1,null);//menulis text ke buttonbTekan.setLabel("Tekan Aku");//menambahkan action listener ke komponenbTekan.addActionListener(this);

}

//implementasi method ActionPerformedpublic void actionPerformed(ActionEvent e){

Object cmd = e.getSource();if (cmd.equals(bTekan))

txt1.setText("Halo Semua"); }

public static void main(String[] argv){Tombol tmbl = new Tombol();tmbl.pack();tmbl.setTitle("Tombol AWT");tmbl.setVisible(true);

}}

Praktek 2 : Interface Bangun2D

Interface Bangun2D memiliki 2 method, yaitu : hitung_Luas() dan hitung_Keliling().

Kelas Lingkaran yang mengimplementasikan interface Bangun2D harus membuat

definisi untuk kedua method tersebut.

15

Page 16: Modul PBO1-7.doc

interface Bangun2D{public double hitung_Luas();public double hitung_Keliling();

}

class Lingkaran implements Bangun2D{private double jejari;

public void setJejari(double jejari){this.jejari=jejari;

}

public double getJejari(){return this.jejari;

}

public double hitung_Luas(){return (3.14 * this.jejari * this.jejari);

}

public double hitung_Keliling(){return (2 * 3.14 * this.jejari);

}}

class TestLingkaran{public static void main(String[] arg){

Lingkaran bunder = new Lingkaran();bunder.setJejari(10);double luas = bunder.hitung_Luas();double keliling = bunder.hitung_Keliling();

System.out.println("Luas lingkaran dengan jejari "+bunder.getJejari()+ " adalah "+luas);System.out.println("Keliling lingkaran dengan jejari "+bunder.getJejari()+" adalah "+keliling);

16

Lingkaran

-daftar field

+daftar method

<<Bangun2D>>

+hitung_luas();+hitung_Keliling();

Page 17: Modul PBO1-7.doc

}}

- Coba dan pelajari contoh penggunaan interface di atas.

- Jelaskan maksud dari hasil program tersebut

4. LATIHAN

Buatlah kelas PersegiPanjang yang mengimplementasikan interface Bangun2D di

atas!

5. TUGAS

1. Jelaskan perbedaan antara kelas abstrak dan interface!

2. Buatlah interface Bangun3D yang mempunyai method : hitung_Luas(),

hitung_Volume(), dan tampil_info(). Kemudian buatlah kelas Tabung yang

mengimplementasikan interface Bangun3D dan diturunkan dari kelas Lingkaran!

17

Page 18: Modul PBO1-7.doc

MODUL 6

INTERFACE LANJUT

1. TUJUAN

Mampu menangani dan mengimplementasikan lebih lanjut tentang konsep interface

2. TEORI

Pewarisan merupakan proses penurunan field dan method dari suatu kelas

induk kepada satu/lebih subkelas. Seringkali dibutuhkan suatu kelas yang field dan

methodnya berasal dari lebih dari satu kelas induk (pewarisan jamak). Pewarisan jamak

memang mempercepat dalam pembuatan kelas. Tetapi mempunyai beberapa kelemahan

diantaranya adalah terjadi ambiguitas karena adanya method yang sama yang diturunkan

dari beberapa kelas induk.

Java tidak mengijinkan pewarisan jamak. Sebagai gantinya java menggunakan

interface. Terdapat 2 jenis penyelesaian masalah pewarisan jamak di java, yaitu :

1. Kombinasi antara turunan satu kelas dan interface

[modifier] class NamaKelas extends NamaKelasInduk implements NamaInterface {

//isi kelas

}

2. Dengan implementasi multiple interface

[modifier] class NamaKelas implements NamaInterface1, NamaInterface2, … {

//isi kelas

}

18

Page 19: Modul PBO1-7.doc

Suatu Interface dapat diperluas menjadi Interface baru yang lebih lengkap.

[modifier] interface NamaInterface2 extends NamaInterface1{

//daftar konstanta dan method

}

3. PELAKSANAAN

Praktek 1 : Kombinasi antara turunan satu kelas dan interface

interface MProvides{void func();

}

interface MRequires{int getValue();

}

class Mixin implements MProvides{

private final MRequires parent;public Mixin(MRequires parent) {

this.parent = parent;}public void func() {

System.out.println("Nilai dari method func: " + parent.getValue());}

}

class Parent{

private int value;public Parent(int value ) {

this.value = value;}public int getValue() {

return this.value;}

}

class Child extends Parent implements MRequires, MProvides{private final MProvides mixin;public Child(int value){

super(value);this.mixin = new Mixin(this);

}

public void func(){mixin.func();

}}

19

Page 20: Modul PBO1-7.doc

class TestInherInterface{public static void main(String[] arg){

Child anak = new Child(5);anak.func();System.out.println("nilai dari method getValue:"+anak.getValue());

}

}

- Coba dan pelajari contoh penggunaan interface di atas.

- Jelaskan maksud dari hasil program tersebut

Praktek 2 : Multiple interface

interface Interface1 { public void tampilInfo(); public void setInfo(String info);}

interface Interface2 { public void tampilInfo();}

public class MultiInterfaces implements Interface1, Interface2 { private String info;

public void setInfo(String info) { this.info = info;

} public void tampilInfo(){

System.out.println(this.info+": ini info dari method tampilInfo, ndak error to"); }

public static void main(String[] a) { MultiInterfaces t = new MultiInterfaces(); t.setInfo("Hai"); t.tampilInfo(); }}

- Coba dan pelajari contoh penggunaan interface di atas.

- Jelaskan maksud dari hasil program tersebut

4. LATIHAN

Buatlah program sederhana yang menggunakan perluasan (penurunan) Interface!

20

Page 21: Modul PBO1-7.doc

5. TUGAS

1. Gambarkan class diagram untuk program pada praktek 1!

2. Buatlah program Java yang mengimplementasikan multiple interface seperti

diagram kelas berikut,

21

Lingkaran

-daftar field

+daftar method

Tabung

-daftar field

+daftar method

<<Bangun3D>>

+hitung_Volume();+tampil_Info();

<<Bangun2D>>

+hitung_luas();+hitung_Keliling;

<<Pola>>

+setWarna();+getWarna();

Page 22: Modul PBO1-7.doc

MODUL 7

INNER CLASS

1. TUJUAN

Mampu mengimplementasikan konsep inner class

2. TEORI

Java membolehkan menyisipkan suatu kelas ke dalam kelas lainnya. Kelas sisipan

ini disebut kelas Inner.

Kelas Inner berguna untuk mendukung suatu proses yang akan dijalankan oleh kelas

luarnya.

Beberapa ketentuan kelas Inner :

a) Kelas Luar yang mengandung kelas Inner, bila dikompilasi akan

menghasilkan dua file *.class, yaitu Luar.class dan Luar$Inner.class

b) Kelas Inner boleh tidak diberi nama, yang disebut Anonymous Inner.

c) Kelas Inner dapat diberi modifier akses public, atau protected, atau

default, ataupun private.

d) Untuk mengakses referensi this dari kelas luar digunakan bentuk

NamaKelasLuar.this.

e) Kelas Luar ikut bertanggung-jawab dalam instansiasi kelas Inner (yang

non static) . Kalau objek kelas Luar adalah a, dan objek kelas Inner adalah b, maka

sintaks yang benar adalah :

Luar a = new Luar();

Luar.Inner b = a.new Inner();

f) Jika kelas Inner bersifat static, maka objek milik kelas Inner dapat dibuat

sendiri tanpa melalui kelas Luarnya, (Artinya kelas Inner tidak dapat mengakses

attribute ataupun method non static milik kelas Luarnya).

3. PELAKSANAAN

public class OuterClass {    /** Creates a new instance of OuterClass */    public OuterClass() {   }        // Define a variable in the outer class    int data = 5;

    // Define an inner class   class InnerClass {   int data2 = 10;   void method() {

22

Page 23: Modul PBO1-7.doc

   System.out.println("data dari OuterClass = " + data);   System.out.println("data2 dari InnerClass = " + data2);    }  }  }

public class TesInner {    public static void main(String[] args) {    // Create an object instance of a class that contains    // an inner class - we will call it outer class.    OuterClass oc = new OuterClass();            // Create an object instance of an inner class.    OuterClass.InnerClass ic = oc.new InnerClass();            // Display data from both outer class and inner class. System.out.println("Akses data dari outer class = " + oc.data);    System.out.println("Akses data2 dari inner class = " + ic.data2);            // Invoke a method from an inner class    ic.method();    }}

- Coba dan pelajari contoh penggunaan interface di atas.

- Jelaskan maksud dari hasil program tersebut

- Jelaskan kode program di atas

4. LATIHAN

Tambahkan inner class baru (namai InnerInnerClass) dalam InnerClass pada

OuterClass pada praktek 1, kemudian ubahlah class TesInner diatas menjadi sebagai

berikut (ubah namanya menjadi class InnerClassDemo):

public class InnerClassDemo {     public static void main(String[] args) {      // Create an object instance of a class that contains      // an inner class - we will call it outer class.      OuterClass oc = new OuterClass();              // Create an object instance of an inner class.      OuterClass.InnerClass ic = oc.new InnerClass();              // Create an object instance of an inner class.      OuterClass.InnerClass.InnerInnerClass iic = ic.new InnerInnerClass();                     // Display data from both outer class and inner class.     System.out.println("Akses data dari outer class = " + oc.data);     System.out.println("Akses data2 dari inner class = " + ic.data2);      System.out.println("Akses data3 dari innerinner class = " + iic.data3);        

23

Page 24: Modul PBO1-7.doc

      // Invoke a method from an inner class      ic.method();        iic.method2();    }}

Output program yang dihasilkan harus sepertidibawah ini :

Akses data dari outer class = 5

Akses data2 dari inner class = 10

Akses data3 dari innerinner class = 15

data dari OuterClass = 5

data2 dari InnerClass = 10

data dari OuterClass = 5

data2 dari InnerClass = 10

data3 dari InnerInnerClass = 15

5. TUGAS

Jelaskan kelebihan dan kelemahan penggunaan inner kelas!

24