Anda di halaman 1dari 24

1

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 fungsifungsi 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.

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 ArithmeticException IndexOutofBoundsException NegativeArraySizeException NullPointerExcepotion ArrayStroreException ClassCastException IllegalArrayArgumentException SecurityException IllegalMonitorStateException IllegalStateException UnsupportedOperationException Keterangan Kesalahan pada operasi aritmatika Beberapa jenis indeks di luar batas Array diciptakan dengan ukuran negatif Penggunaan acuan null yang tidak valid Penyimpanan array dengan tipe data yang tidak sesuai. Cast yang tidak valid Argumen yang tidak benar Aturan sekuriti yang dilanggar Operasi monitor ilegal Lingkungan yang tidak benar 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.

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

4 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"); } } }

4.

Jalankan dan amati hasilnya. Jelaskan maksud dari hasil program tersebut 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 !

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.

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

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 !

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 Throwable fillStackTrace() String getLocalizedMessage() String getMessage() void printStackTrace() void printStackTrace(PrintStream stream) void printStackTrace(PrintWriter stream) String toString() Fungsi Mengembalikan object Throwable yang berisi data stack trace lengkap. Mengembalikan deskripsi tentang eksepsi menggunakan bahasa lokal Mengembalikan deskripsi tentang eksepsi Menampilkan stack trace Mengirim hasil dari stack trace ke stream yang telah ditentukan Mengirim hasil dari stack trace ke stream yang telah ditentukan Mengembalikan deskripsi tetang tipe object eksepsi dan penjelasan tentang eksepsi tersebut. Akan dipanggil secara otomatis ketika object eksepsi dicetak dengan method println()

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 +"."); } }

10

} 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.

11

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 field deklarasi 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 abtract public void method2 ( ) { System.out.println(method kongkrit kelas A);

12 } } 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; } }

13 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 pada Praktik 2 di atas. Kemudian tampilkan luas balok dengan method cetakLuasBentuk(blk) !

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

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

14

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 masingmasing 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; }

15 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 komponen Button bTekan = new Button(); TextField txt1 = new TextField(" "); public Tombol() { //layout komponen this.setLayout(new FlowLayout()); //menambahkan komponen ke frame this.add(bTekan,null); this.add(txt1,null); //menulis text ke button bTekan.setLabel("Tekan Aku"); //menambahkan action listener ke komponen bTekan.addActionListener(this); } //implementasi method ActionPerformed public 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.

16

<<Bangun2D>> +hitung_luas(); +hitung_Keliling();

Lingkaran -daftar field +daftar method

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

17 } } 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 dan Bangun3D yang mempunyai method : hitung_Luas(), Tabung yang hitung_Volume(), tampil_info(). Kemudian buatlah kelas

mengimplementasikan interface Bangun3D dan diturunkan dari kelas Lingkaran!

18

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 }

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

20 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(); } } 4. Coba dan pelajari contoh penggunaan interface di atas. Jelaskan maksud dari hasil program tersebut LATIHAN

Buatlah program sederhana yang menggunakan perluasan (penurunan) Interface!

21

5. 1. 2.

TUGAS Gambarkan class diagram untuk program pada praktek 1! Buatlah program Java yang mengimplementasikan multiple interface seperti diagram kelas berikut,

<<Bangun2D>> +hitung_luas(); +hitung_Keliling;

Lingkaran -daftar field +daftar method

<<Bangun3D>> +hitung_Volume(); +tampil_Info();

<<Pola>> +setWarna(); +getWarna();

Tabung -daftar field +daftar method

22

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) b) c) d) e) Kelas Luar yang mengandung kelas Inner, bila dikompilasi akan menghasilkan dua file *.class, yaitu Luar.class dan Luar$Inner.class Kelas Inner boleh tidak diberi nama, yang disebut Anonymous Inner. Kelas Inner dapat diberi modifier akses public, atau protected, atau default, ataupun private. Untuk mengakses referensi this dari kelas luar digunakan bentuk NamaKelasLuar.this. 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() {

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

24 // 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!

Anda mungkin juga menyukai