Inner Class dan Eksepsi (Exception)
Inner Class Disebut juga nested class Inner class dapat dikatakan sebagai suatu kelas yang berada di dalam kelas tertentu (disebut juga dengan outer class) Penamaan inner class harus berbeda dengan nama outer class Merupakan suatu cara untuk mengelompokkan kelas-kelas dan memudahkan kontrol terhadap kelas lain.
Kegunaan Inner Class Mengelompokkan kelas-kelas Melakukan kontrol terhadap kelas lain Mengimplementasikan detail statement yang seharusnya tidak di share dengan kelas lain.
Inner class dapat dikategorikan dalam bentuk Static inner class (Top level nested class) Non static inner class Local inner class Anonymous inner class
Contoh Static Inner Class class OuterClass { static class InnerClass { int value=100; }
Bentuk Instansiasinya public class TestOutterClass { public static void main(String[] args) { OuterClass.InnerClass inner = new OuterClass.InnerClass(); inner.value=200; } Instansiasi objek dari static inner class dapat dilakukan langsung tanpa melewati objek dari outer classnya
Contoh Non Static Inner Class public class OuterClass { String kalimat="Mencetak Nested Class"; class NonStaticInnerClass { void cetak() System.out.println(kalimat); }
Bentuk Instansiasinya public class TestOutterClass { public static void main(String[] args) { OuterClass.NonStaticInnerClass inner = new OuterClass().new NonStaticInnerClass(); inner.cetak(); } Instansiasi objek dari Non-static inner class harus melalui objek dari outer classnya
Contoh Local Inner Class public class OuterClass { String kalimat="Mencetak Nested Class"; public OuterClass() { class localClass1 void cetak() System.out.println(kalimat); } new localClass1().cetak(); Local inner class dibuat dalam sebuah block program, boleh pada method atau konstruktor Instansiasinya jg pada bagian block itu sendiri
Contoh Anonymous Inner Class Public void aMethod(){ Thebutton.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e){ System.out.println(“Action Performed”); } );
Latihan Static Inner Class public abstract class SepedaMotor { String merk; int gerigi=0; interface interfaceSepedaMotor { void TambahGerigi(); void TurunkanGerigi(); } static class SepedaMotorSport extends SepedaMotor implements interfaceSepedaMotor public SepedaMotorSport(String merk) this.merk=merk;this.gerigi=0; public void TambahGerigi() this.gerigi++; System.out.println(this.merk + " Pindah ke Gerigi "+this.gerigi); public void TurunkanGerigi() { this.gerigi--; System.out.println(this.merk + " Pindah ke Gerigi "+this.gerigi); }
Latihan Static Inner Class public class UjiSepedaMotor { public static void main(String[] args) { SepedaMotor.SepedaMotorSport kawasaki = new SepedaMotor.SepedaMotorSport("Kawasaki"); kawasaki.TambahGerigi(); }
Latihan Non Static Inner Class public class Manusia { String Nama; static class Nasabah extends Manusia { String NoRekening; public Nasabah(String nama) this.Nama=nama; } void setNoRek(String NoRek) this.NoRekening=NoRek; String getNoRek() return this.NoRekening; class Karyawan extends Nasabah { public Karyawan(String nama) super(nama); }
Latihan Non Static Inner Class public class UjiManusia { public static void main(String[] args) { Manusia.Nasabah aris = new Manusia.Nasabah("Aris"); Manusia.Karyawan andi = new Manusia().new Karyawan("Andi Setiawan"); andi.setNoRek("099873"); System.out.println("No Rekening "+andi.Nama+" adalah " + andi.getNoRek()); }
Latihan Local Inner Class public class Unggas { String nama; class Ayam { public Ayam(String paramnama) nama=paramnama; } void memakan() class cacing String nama=""; public cacing(String nama) this.nama=nama; String getNama() { return nama; } cacing cacingpita = new cacing("Cacing Pita"); System.out.println(nama+ " Memakan "+cacingpita.getNama());
Latihan Anonymous Inner Class import java.awt.Rectangle; import java.awt.event.*; import javax.swing.*; public class Anonymous { public Anonymous() { JFrame frame = new JFrame("Lat1"); frame.setBounds(new Rectangle(0,0,200,100)); frame.setLayout(null); frame.setVisible(true); JButton btn =new JButton("Ok"); btn.setBounds(new Rectangle(50,10,100,50)); frame.add(btn); btn.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) JOptionPane.showMessageDialog(null, "Test Anonymous Inner Class"); } }); Latihan Anonymous Inner Class Anonymous Inner Class
Latihan Anonymous Inner Class public class UjiAnonymous { public static void main(String[] args) { Anonymous anonymous = new Anonymous(); }
Eksepsi (Exception)
Exception merupakan sebuah mekanisme yang digunakan oleh bahasa pemrograman komputer untuk mendeskripsikan apa yang harus dilakukan ketika sesuatu yang tidak dikehendaki terjadi. Sesuatu yang tidak dikehendaki ini biasanya dalam bentuk error. seperti pemanggilan method dengan arguman yang tidak valid, kegagalan koneksi dalam sebuah jaringan, atau usaha user membuka sebuah file yang tidak ada
Exception (Lanjutan) Jenis eksepsi berdasarkan harus tidaknya eksepsi ditangani: Checked Exception exception yang muncul akibat dari kondisi external yang dapat saja muncul dari program Unchecked Exception merupakan kategori exception yang muncul akibat dari adanya bugs dalam program atau situasi yang terlalu sulit untuk ditangani
Checked Exception Merupakan exception yang muncul akibat dari kondisi external yang dapat saja muncul dari program Exception pada kategori ini diharapkan dapat diantisipasi terjadinya oleh programmer. Contoh : File yang akan dibuka tidak ditemukan Koneksi jaringan gagal
Eksepsi-eksepsi pada kategori checked exception merupakan sub kelas dari kelas exception Sebagai contoh : EOFException FileNotFoundException
Unchecked Exception Merupakan kategori exception yang muncul akibat dari adanya bugs (disebut runtime exceptions) dalam program atau situasi yang terlalu sulit untuk ditangani. Disebut unchecked karena kita tidak diharapkan untuk mengeceknya sebelum hal itu terjadi
Gosling dan holmes mengatakan bahwa : “unchecked exception mewakili suatu kondisi yang pada umumnya mencerminkan kesalahan dalam logika pemrograman yang tidak dapat dipulihkan saat run time”. Eksepsi pada kategori ini merupakan subkelas dari kelas RuntimeException sebagai contoh : AritmathmeticException NullPointerException IndexOutOfBoundsException
Throwable Hierarchy
Error Hierarchy
Exception Hierarchy
Exception Hierarchy (Lanjutan)
Throwable (sub) Hierarchy
Contoh Exception ArithmeticException – terjadi ketika program melakukan operasi pembagian dengan nol pada bilangan integer. NullPointerException - terjadi ketika program berusaha mengakses atribut atau method dari sebuah obyek menggunakan variabel yang tidak merujuk ke sebuah obyek. NegativeArraySizeException – terjadi ketika program membuat Array dengan indeks negatif. ArrayIndexOutOfBoundsException – terjadi ketika program mengakses elemen Array melebihi ukuran Array yang bersangkutan.
Menangani Exception Untuk menangani exception dalam Java, kita dapat gunakan blok try-catch, try-catch-finally. Apa yang kita lakukan dalam program kita adalah kita menempatkan pernyataan yang mungkin menghasilkan exception dalam blok ini try{ //tulis pernyataan yang dapat mengakibatkan exception //dalam blok ini } catch( <exceptionType1> <varName1> ){ //tulis aksi apa dari program Anda yang dijalankan jika ada //exception tipe tertentu terjadi
Contoh public class eksepsi { public void cetak() try String[] kota={"Jakarta","Bandung","Demak"}; for(int i=0;i<=5;i++) System.out.println(kota[i]+" "); } catch(Exception e) System.out.println("Kesalahan :"+e.getMessage()); public static void main(String[] args) eksepsi eks = new eksepsi(); eks.cetak();
Terima kasih
Latihan NoTrans : _ Barang : _ Tgl Beli : _ Harga : _ Qty : _ Total Bayar : <out> Notrans Barang TglBeli Harga Qty Total Bayar --------------------------------------------------------------------------- Tambahkan eksepsi untuk inputan bertipe numerik