Pemrograman Berorientasi Objek 1
I
CLASS DAN OBJEK
1.1 Paradigma Objek
Paradigma adalah suatu cara pandang atau cara berpikir. Paradigma objek adalah cara pandang yang memandang SEGALA SESUATU sebagai OBJEK. Semua aspek dalam Java programming dapat dianggap sebagai objek, -kecuali TIPE DATA PRIMITIF-, karena semua library dan objek dalam Java memiliki akar awal class java.lang.Object. Berbagai benda di sekitar kita adalah objek nyata yang dapat dilihat seperti : kucing, meja, rumah, orang, dll.
Persoalannya, bagaimana memindahkan pemikiran objek di dunia nyata menjadi objek di dunia software atau pemrograman, khususnya Java. Ambil contoh objek nyata yang akan dipindahkan adalah objek orang.
1.2 Data Member atau variabel
Setiap objek yang dinamakan „orang‟ pasti memiliki : nama, tinggi, badan, berat, badan, warna rambut, warna kulit, jenis kelamin, menggunakan kacamata, dll. Ciri-ciri tersebut dapat dipindahkan menjadi variabel-variabel dari class yang
sering disebut sebagai : data member.
Pemrograman Berorientasi Objek 2 Memindahkan Orang dari dunia nyata menjadi class Orang
Class dapat diumpamakan seperti spesifikasi atau blueprint. Dalam hal ini, Tuhan menciptakan manusia dengan spesifikasi tertentu. Jadi dapat diumpamakan bahwa Tuhan memiliki class Orang yang kemudian membuat banyak objek dari class Orang tsb, dan contoh objek tersebut adalah Anda sendiri. Objek dalam pemrograman adalah objek yang dibuat dari class tertentu.
Dari definisi class Orang di atas kita bisa membuat objek-objek berdasar class tersebut. Objek-objek yang dibuat perlu disimpan dalam variabel yang akan menyimpan referensi/address dari objek yang dibuat. Proses pembuatan objek sering disebut sebagai instansiasi class, sedangkan objeknya disebut sebagai instance dari class.
1.3 Method
Class Orang {
String nama; //nama orang int tinggiBadan; //dalam cm int beratBadan; //dlm kg
String warnaRambut; //hitam, pirang, coklat String warnaKulit; //sawomatang, hitam, putih String jenisKelamin //pria atau wanita
boolean berkacamata; //bila berkacamata berarti true }
Pemrograman Berorientasi Objek 3 Selain memiliki atribut(STATE) yang diimplementasikan sebagai data member di atas, manusia juga dapat melakukan suatu aksi atau pekerjaan tertentu (BEHAVIOR). Contoh aksi/behavior yang umum adalah menangis dan tertawa Kedua behavior tsb bisa dipindahkan ke dalam bahasa pemrograman menjadi method sbb:
Method merupakan perwujudan aksi atau tindakan dari dunia nyata di dalam pemrograman komputer. Method dalam dunia pemrograman juga “pasti melakukan sesuatu aksi”, misalnya menampilkan String di konsol. Terdapat 3 macam metode yang meliputi:
1. Metode kelas : Metode ini dapat dieksekusi walaupun tidak terdapat objek dalam kelas tersebut. Metode kelas ini dideklarasikan dengan menggunakan modifier static.
2. Metode objek : Metode ini hanya dapat dieksekusi sehubungan dengan objek tertentu.
3. Metode main : Metode ini digunakan pada saat aplikasi java dimulai, menggunakan keyword static
void menangis() { System.out.println(“hik...hik…hiks”); } void tertawa() { System.out.println(“ha…ha…ha…ha”); } Class A --- State
Data member / variabel
--- Behaviour
method1() method2()
Pemrograman Berorientasi Objek 4 Ilustrasi perbedaan class dengan objek
Dari gambar di atas dapat dipahami bahwa suatu class dapat memiliki banyak objek, dan setiap objek akan mewarisi data member dan method yang sama dari class. Untuk membuat objek Orang dari class Orang, gunakan keyword new sbb :
Orang orang1 = new Orang(“Izzuddin A Afif”); Orang orang2 = new Orang(“Muhammad Fairuz”);
Setiap objek dapat memiliki state atau nilai data member yang berbeda (hanya nama dan tipe variabel yang sama).
Ilustrasi pembuatan objek dari class Class Orang --- State nama variabel lain --- Behaviour menangis() tertawa() Orang1 Izzuddin A Afif Orang2 Muhammad Fairuz
Pemrograman Berorientasi Objek 5 Pada saat objek dibuat, objek berisi semua variabel yang terdapat dalam kelas tersebut. Terdapat 2 macam variabel dalam kelas, yaitu:
variabel kelas : variabel yang dideklarasikan di dalam kelas dan diberi modifier
static. Sifat dari variabel static ini adalah melekat pada kelas dan tidak terpengaruh oleh proses instansiasi.
variabel objek(instans) : variabel yang dideklarasikan di dalam kelas dan tidak
memiliki modifier static. Berbeda dengan variabel kelas, pada proses instansiai kelas menjadi objek, variabel instans ini akan ikut dimiliki dan dapat diakses oleh objek.
Ilustrasi deklarasi class
Ilustrasi deklarasi atribut Deklarasi Class
<modifier> class <classname> { [deklarasi_attribut]
[deklarasi_konstruktor] [deklarasi_metode] }
Contoh
public class Siswa { } mo difi er nama class Deklarasi Atribut
<modifier> <tipe> <nama_atribut>;
contoh
public class Siswa {
public int nrp; public String nama; }
Pemrograman Berorientasi Objek 6 ilustrasi deklarasi method
Contoh:
class mobil { String warna; int tahunProduksi;
void isiData(String warnaMobil, int tahunProduksiMobil) { warna = warnaMobil; tahunProduksi=tahunProduksiMobil; } String ambilWarna() { return warna; } int ambilTahunProduksi(){ return tahunProduksi; } }
public class kelasMobil2{
public static void main (String args[]) { mobil mobilku=new mobil();
mobilku.isiData("merah",2003); System.out.println("warna:"+mobilku.ambilWarna()); System.out.println("tahun:"+mobilku.ambilTahunProduksi()); } } 1.4 Variabel this Deklarasi Metode
<modifier> <return_type> <nama_metode> ([daftar_argumen])
{
[<statement>] }
Pemrograman Berorientasi Objek 7 Kata kunci this dipergunakan pada pembuatan kelas dan digunakan untuk menyatakan objek sekarang.
1.5 Konstruktor
Metode konstruktor atau biasa disebut konstruktor saja adalah metode yang dapat digunakan untuk memberikan nilai awal saat objek diciptakan. Metode ini akan dipanggil secara otomatis oleh java ketika new dipakai untuk
menciptakan instan kelas. Konstruktor mempunyai sifat/ciri:
namanya sama dengan nama kelas.
tidak memiliki nilai balik (termasuk tidak boleh ada kata kunci void). Contoh:
class mobil { String warna; int tahunProduksi;
mobil(String warnaMobil, int tahunProduksiMobil) { warna = warnaMobil; tahunProduksi=tahunProduksiMobil; } String ambilWarna() { return warna; } int ambilTahunProduksi() { return tahunProduksi; } }
public class kontruktor {
void isiData(String warnaMobil, int tahunProduksiMobil) { warna=warnaMobil;
tahunProduksi=tahunProduksiMobil; }
Bisa ditulis menjadi :
void isiData(String warna, int tahunProduksi) { this.warna=warnaMobil;
this.tahunProduksi=tahunProduksiMobil; }
Pemrograman Berorientasi Objek 8 public static void main (String args[]) {
mobil mobilku=new mobil(“merah",2003);
System.out.println("warna:"+mobilku.ambilWarna());
System.out.println("tahun:"+mobilku.ambilTahunProduksi()); }
}
1.6 Overloading pada Konstruktor
Overloading terhadap konstruktor merupakan suatu mekanisme pembuatan konstruktor yang memiliki bentuk lebih dari satu. Dalam hal ini pembeda antara konstruktor dengan konstruktor yang lain berupa jumlah parameter atau tipe parameter.
Contoh:
class mobil {
private String warna; private int tahunProduksi;
public mobil(String warnaMobil, int tahunProduksiMobil) { warna=warnaMobil;
tahunProduksi=tahunProduksiMobil; }
public mobil() { }
public void info() {
System.out.println(“warna :”+this.warna);
System.out.println(“tahun :”+this.tahunProduksi); }
}
public class konstruktor {
public static void main (String args []) { mobil mobilku=new mobil(“merah”, 2003); mobil.info();
mobil mobilmu=new mobil(); mobil.info();
} }
1.7 Overloading pada Method
Overloading juga dapat dikenali pada metode non konstruktor. Contoh: class matematika { Hasil : Warna:merah Tahun:2003 Warna:null Tahun:0 Finished executing
Pemrograman Berorientasi Objek 9 static public double kuadrat(double nilai) {
return nilai*nilai; }
static public int kuadrat (int nilai) { return nlai*nilai;
}
static public double kuadrat (string nilai) { double bilangan;
bilangan=Double.parseDouble(nilai); return bilangan*bilangan;
} }
public class konstruktor {
public static void main (string args[]) {
System.out.println(matematika.kuadrat(25.0)); System.out.println(matematika.kuadrat(25)); System.out.println(matematika.kuadrat(“25”)); } }
II
INHERITANCE / PEWARISAN
Hasil : 625.0 625 625.0 Finished executingPemrograman Berorientasi Objek 10 Inheritance (Pewarisan) merupakan salah satu dari tiga konsep dasar OOP. Konsep inheritance ini mengadopsi dunia riil dimana suatu entitas/obyek dapat mempunyai entitas/obyek turunan. Dengan konsep inheritance, sebuah class dapat mempunyai class turunan.
Suatu class yang mempunyai class turunan dinamakan parent class atau base
class. Sedangkan class turunan itu sendiri seringkali disebut subclass atau child class. Suatu subclass dapat mewarisi apa-apa yang dipunyai oleh parent class.
Karena suatu subclass dapat mewarisi apa-apa yang dipunyai oleh parent class-nya, maka member dari suatu subclass adalah terdiri dari apa-apa yang ia punyai dan juga apa-apa yang ia warisi dari class parent-nya. Kesimpulannya, boleh dikatakan bahwa suatu subclass adalah tidak lain hanya memperluas (extend) parent class-nya. 2.1 Deklarasi Inheritance
Dengan menambahkan kata kunci extends setelah deklarasi nama class, kemudian diikuti dengan nama parent class-nya. Kata kunci extends tersebut memberitahu kompiler Java bahwa kita ingin melakukan perluasan class.
Semua class di dalam Java adalah merupakan subclass dari class super induk yang bernama Object. Misalnya saja terdapat sebuah class sederhana :
Deklarasi inheritance
public class B extends A { ………
}
public class A { ……
Pemrograman Berorientasi Objek 11 Pada saat dikompilasi Kompiler Java akan membacanya sebagai subclass dari class Object.
2.1.1 Kapan Kita Menerapkan Inheritance
Kita baru perlu menerapkan inheritance pada saat kita jumpai ada suatu class yang dapat diperluas dari class lain.
Misal terdapat class Pegawai :
Misal terdapat class Manager :
Dari 2 buah class diatas, kita lihat class Manajer mempunyai data member yang identik sama dengan class Pegawai, hanya saja ada tambahan data member departemen. Sebenarnya yang terjadi disana adalah class Manajer merupakan perluasan dari class Pegawai dengan tambahan data member departemen. Disini perlu memakai konsep inheritance, sehingga class Manajer dapat kita tuliskan seperti berikut:
public class A extends Object { ……
}
public class Pegawai { public String nama; public double gaji; }
public class Manajer { public String nama; public double gaji;
public String departemen; }
public class Manajer extends Pegawai { public String departemen;
Pemrograman Berorientasi Objek 12 public class Manajer extends Pegawai {
public String departemen;
public void IsiData(String n, String d) { nama=n;
departemen=d; }
Pada contoh diatas juga mewakili contoh dari single inheritance di mana suatu sub class memiliki 1 parent class.
2.1.2 Multilevel Inheritance
Konsep inheritance yang ada di Java memperkenankan adanya multilevel inheritance. Konsep multilevel inheritance memperbolehkan suatu subclass mempunyai subclass lagi.
Pengaksesan member yang ada di parent class dari subclass-nya tidak berbeda dengan pengaksesan member subclass itu sendiri. Misalnya di class Manajer kita ingin mengakses data member nama melalui sebuah
function member IsiData(), sekaligus kita juga ingin mengakses data
member departemen di class Manajer. Contoh: Employee +name : String = “” +salary : double +birthdate : Date +getDetails() : String Engineer Secretary Manager +departement: String=“” Director +carAllowance: double +increaseAllowance()
Pemrograman Berorientasi Objek 13 2.2 Access Control
Dalam dunia riil, suatu entitas induk bisa saja tidak mewariskan sebagian dari apa-apa yang ia punyai kepada entitas turunan karena sesuatu hal. Demikian juga dengan konsep inheritance pada OOP. Suatu parent class dapat tidak mewariskan sebagian member-nya kepada subclass-nya. Sebagai contoh, kita coba untuk memodifikasi class Pegawai.
public class Pegawai {
private String nama; public double gaji; }
Coba untuk mengkompilasi class Manajer pada contoh sebelumnya. Apa yang terjadi? Pesan kesalahan akan muncul seperti ini :
Ini membuktikan bahwa class Manajer tidak mewarisi data member nama dari parent class-nya (Pegawai). Berikut ini dijelaskan mengenai Access Control lebih lanjut:
Pemrograman Berorientasi Objek 14 2.2.1 private
Variabel dan method yang dideklarasikan private hanya bisa diakses oleh class yang mendeklarasikan variabel dan method tersebut.
Contoh 1: mengakses private variabel dari class lain.
Pemrograman Berorientasi Objek 15 2.2.2 default
default bukan merupakan Java keyword. Merupakan jenis akses
kontrol jika kita tidak menuliskan akses kontrol secara eksplisit. Semua feature class-class yang ada dalam satu package bisa diakses oleh semua yang ada dalam package tersebut. Class diluar package boleh melakukan subclass, tetapi subclass tersebut tidak bisa mengakses feature superclass. Contoh 1: default
Pemrograman Berorientasi Objek 16 2.2.3 protected
Protected mempunyai kemampuan akses yang lebih besar daripada private dan default. Protected feature dari suatu class bisa diakses oleh semua class dalam satu package. Class diluar package boleh melakukan melakukan subclass, dan subclass tersebut bisa mengakses feature superclass.
Contoh 1: protected
Pemrograman Berorientasi Objek 17 2.3 super
Kata kunci super dipakai untuk merujuk pada member dari parent class. Sebagaimana kata kunci this yang dipakai untuk merujuk pada member dari class itu sendiri. Format penulisannya adalah sebagai berikut:
super.data_member
merujuk pada data member pada parent class.
super.function_member()
merujuk pada function member pada parent class.
super()
merujuk pada konstruktor pada parent class.
Pemrograman Berorientasi Objek 18 Keterangan:
x > merujuk pada x terdekat, yaitu parameter Info().
this.x > merujuk pada data member dari class-nya sendiri, yaitu data member pada class Child
super.x > merujuk pada data member dari parent class-nya yaitu data member pada class Parent
2.4 Konstruktor tidak diwariskan
Konstruktor dari parent class tidak dapat diwariskan ke subclass-nya. Konsekuensinya, setiap kali kita membuat suatu subclass, maka kita harus memanggil konstruktor parent class di konstruktor subclass. Pemanggilan konstruktor parent harus dilakukan pada baris pertama dari konstruktor subclass.
Jika kita tidak mendeklarasikannya secara eksplisit, maka kompiler Java akan menambahkan deklarasi pemanggilan konstruktor parent class di konstruktor subclass.
Sebelum subclass menjalankan konstruktornya sendiri, subclass akan menjalankan constructor superclass terlebih dahulu. Hal ini terjadi karena secara implisit pada constructor subclass ditambahkan pemanggilan super()yang bertujuan memanggil constructor superclass oleh kompiler.
Misalnya saja kita mempunyai dua buah class sebagai berikut: public class Parent {
}
public class Child extends Parent { }
Pemrograman Berorientasi Objek 19 Pada saat program tersebut dikompilasi, maka kompiler Java akan menambahkan:
konstruktor class Parent.
konstruktor class Child.
pemanggilan konstruktor class Parent di kostruktor class Child. Sehingga program tersebut sama saja dengan yang berikut ini:
pemanggilan super yang dibenarkan (kanan).
Contoh:
public class Parent { public Parent() { }
}
public class Child extends Parent { public Child() {
super(); }
}
Pemrograman Berorientasi Objek 20
III
ENCAPSULATION
3.1 Enkapsulasi
Enkapsulasi adalah pembungkus, pembungkus disini dimaksudkan untuk menjaga suatu proses program agar tidak dapat diakses secara sembarangan atau di intervensi oleh program lain. Konsep enkapsulasi sangat penting
Pemrograman Berorientasi Objek 21 dilakukan untuk menjaga kebutuhan program agar dapat diakses sewaktu-waktu, sekaligus menjaga program tersebut.
Dalam kehidupan sehari hari enkapsulasi dapat dimisalkan sebagai arus listrik pada generator, dan sistem perputaran generator untuk menghasilkan arus listrik. Kerja arus listrik tidak mempengaruhi kerja dari sistem perputaran generator, begitu pula sebaliknya. Karena didalam arus listrik tersebut, kita tidak perlu mengetahui bagaimana kinerja sistem perputaran generator, apakah generator berputar kebelakang atau ke depan atau bahkan serong. Begitu pula dalam sistem perputaran generator, kita tidak perlu tahu bagaimana arus listrik, apakah menyala atau tidak.
Begitulah konsep kerja dari enkapsulasi, dia akan melindungi sebuah program dari akses ataupun intervensi dari program lain yang mempengaruhinya. Hal ini sangat menjaga keutuhan program yang telah dibuat dengan konsep dan rencana yang sudah ditentukan dari awal.
Contoh dalam program Belajar.Java
class belajar {
public String x =”Pintar”; private String y = “Java”; }
Pintar.Java
public class Pintar{
public static void main(String[]args){ Coba panggil = new Belajar( );
Pemrograman Berorientasi Objek 22 System.out.println(“Panggil Y : “+panggil.y);
} }
Tipe public dan private mempunyai fungsi yang berbeda. Fungsi public yang terdapat dalam class Coba pada variable x, memungkinkan nilai dari variable x dapat diakses oleh class Belajar. Sedangkan variable y yang menggunakan fungsi
private tidak dapat dipanggil didalam class Belajar.
IV
POLYMORPHISM
4.1 Overriding
Subclass yang berusaha memodifikasi tingkah laku yang diwarisi dari superclass. Tujuannya agar subclass memiliki tingkah laku yang lebih spesifik. Dilakukan dengan cara mendeklarasikan kembali method milik parent class di subclass.
Deklarasi method pada subclass harus sama dengan yang terdapat di super class. Kesamaan pada:
Pemrograman Berorientasi Objek 23
Return type
Daftar parameter
Method pada parent class disebut overriden method, dan method pada subclass disebut overriding method.
Contoh: overriding
public class Employee { protected String name; protected double salary; protedted Date birthDate; public String getDetails() {
return “Name: “+name+ “\n” + “Salary: “+salary; public class Manager extends Employee {
protected String depatement; public String getDetails() {
return “name: “ +name + “\n” + “Salary:” +salary+”\n” + “manager of: “ +departement;
} }
Contoh: overriding dengan keyword super
Pemrograman Berorientasi Objek 24 Mode akses overriding method harus lebih luas atau minimal sama dari pada overriden method. Subclass hanya boleh meng-override method superclass satu kali saja, tidak boleh ada lebih dari satu method pada kelas yang sama yang sama persis. Overriding method tidak boleh throw checked exceptions yang tidak dideklarasikan oleh overridden method.
4.2 Overloading
Menuliskan kembali method yang sama pada suatu class. Tujuan : memudahkan penggunaan/pemanggilan method dengan fungsionalitas yang mirip.
Aturan overloading:
Nama method harus sama.
Daftar parameter harus berbeda.
Return type boleh sama, juga boleh berbeda.
Perbedaan daftar parameter bukan hanya terjadi pada perbedaan banyaknya parameter, tetapi juga urutan dari parameter tersebut. Misalnya saja dua buah parameter berikut ini:
function_member(int x, String n) function_member(String n, int x)
Dua parameter tersebut juga dianggap berbeda daftar parameternya. Daftar parameter tidak terkait dengan penamaan variabel yang ada dalam parameter. Misalnya saja 2 daftar parameter berikut:
function member(int x) function_member(int y)
Pemrograman Berorientasi Objek 25 Dua daftar parameter diatas dianggap sama karena yang berbeda hanya penamaan variabel parameternya saja.
Contoh:
4.3 Constructor Overloading
Seperti halnya method, constructor juga bisa di-overloading. Dengan syarat: nama yang sama dan daftar parameter yang berbeda. Anda bisa gunakan keyword this pada baris awal badan constructor untuk memanggil constructor yang lain.
Pemrograman Berorientasi Objek 26 Contoh: memanggil parent class constructor
4.4 Polymorphism
Polymorphism adalah kemampuan untuk mempunyai beberapa bentuk yang berbeda. Contoh: Manager adalah Employee
Pemrograman Berorientasi Objek 27 Maka : reference variable dari emp adalah Employee. Bentuk emp
adalah Employee. Yang perlu diingat adalah:
Satu obyek hanya boleh mempunyai satu bentuk saja, yaitu bentuk yang diberikan ketika obyek dibuat.
Reference variable bisa merujuk ke bentuk yang berbeda.
V EXCEPTION HANDLING
5.1 Objectives
Di akhir session, peserta diharapkan mampu untuk: Mendefinisikan exception
Menangani exception dengan menggunakantry-catch-finally block Membuat class Exceptions sendiri
Pemrograman Berorientasi Objek 28 5.2 Exceptions
• Sebuah event yang akan menginterupsi alur proses program normal dari sebuah program
• Akan mengakibatkan program terminate abnormally
• Error tidak harus selalu ditangani dengan exception handling (namun exception mempermudah penanganan error)
• Exception handling di Java bekerja dengan cara mengubah alur eksekusi program, sambil melempar suatu objek tertentu sebagai informasi untuk alur yang baru
5.2 Runtime exception
• Exception yang diturunkan dari RuntimeException tidak akan diperiksa pada saat kompilasi. Exception jenis ini baru dapat terdeteksi pada saat eksekusi. Contoh: NullPointerException, IndexOutOfBoundsException, dsb. Contoh Exceptions :
- ArrayIndexOutOfBounds exception, akan terjadi jika kita mengakses suatu
array di index yang tidak valid
- NumberFormatException, akan terjadi jika kita melakukan passing parameter
non-number ke method Integer.parseInt()
Penanganan Exceptions :
Untuk menangani exceptions di Java digunakan blok try-catch-finally
Statement program yang memungkinkan terjadinya exceptions harus diletakkan dalam blok try-catch-finally.
Pemrograman Berorientasi Objek 29
Bentuk umum dari blok try-catch-finally: try {
//write the statement that can generate an exceptions //in this block
}
catch(<exceptionType1> <varName1>){
//write the action your program will do if an exception of certain type occured
} …}
catch(<exceptionTypen> <varNamen>){
//write the action your program will do if an exception of certain //type occured
}
finally{
//add more cleanup code here }
Pemrograman Berorientasi Objek 30 Alur Normal (tanpa exception)
try {
aksi_1(); aksi_2(); aksi_3();
} catch (ExceptionClassName name){ //penanganan error (tidak dieksekusi) }
aksi_4(); aksi_5();
Exception Dilempar aksi_2()
try {
aksi_1(); aksi_2();
aksi_3(); //tidak dieksekusi } catch (ExceptionClassName name){ //penanganan error (dieksekusi) }
aksi_4(); aksi_5();
Contoh Penggunaan Exception import java.util.Scanner; /*JDK 1.5*/
Pemrograman Berorientasi Objek 31 class ContohException {
public static void main (String args[]) { Scanner sc = new Scanner(System.in); try
{
System.out.print("Masukkan Angka:"); int num = sc.nextInt();
if (num>10) throw new Exception();
System.out.println(“Angka kurang dari atau sama dengan 10”); }
catch (Exception s)
System.out.println( "Angka Lebih dari 10"); } System.out.println( "Selesai"); } } Catatan Dalam statement
- throw new Exception(), sebuah instans dari kelas Exception() diciptakan (konstruktor defaultnya dipanggil)
Jika kelas memiliki konstruktor yang lain, konstruktor itu dapat dipanggil: - throw new Exception(“lebih dari 12”);
Dalam catch, method kelas exception dapat dipanggil: - System.out.println(e.getMessage()); Nested Exception Handling
Boleh ada blok try-catch lain dalam suatu try-catch, penangkap adalah blok terdekat. try { fungsi_a( ); try { fungsi(b); } catch (NumberException n){ }
} catch (FatalException fatal){ } }
Pemrograman Berorientasi Objek 32 Melempar kembali exception
• Dalam catch, exception bisa dithrow: catch (Exception e) {throw e;} • Exception baru bisa dibuat:
catch (FileNotFoundException e) { throw new FatalException();
}
• Gunanya melempar kembali agar exception ditangkap oleh klausa exception terluar, atau method yang memanggil method ini.
Exception pada method
void connect_internet() throws connect_exception{ //coba melakukan koneksi
if (error) throw new connect_exception(“error”); //.... } //... //bagian main try { connect_internet( ); } catch (connect_exception e) { /*do something*/ } Catatan:
Exception adalah nama kelas exception standar milik Java
Programmer bisa membuat sendiri kelas Exception dengan mengimplementasikan Throwable, atau (yang lebih disarankan) menurunkan dari java.lang.Exception
Membuat Class Exceptions
Buat class exception yang diturunkan dari class exception lain yang lebih umum.
Pemrograman Berorientasi Objek 33
Sebaiknya turunkan dari class Exception karena sudah memiliki method untuk mencatat pesan exception
Contoh: SmallIntExcept
class SmallIntExcept extends Exception {
private static int num_except; SmallIntExcept(String msg){
super(msg); num_except++; }
static int numException (){ return num_except; } void response (){ System.out.println(getMessage()); } }; class SmallInt{ int value; SmallInt(int val){ value = val; }
void plus(SmallInt X) throws SmallIntExcept{ value = value + X.value;
if (value > 10) throw new SmallIntExcept (“TOO BIG”); if (value < 0) throw new SmallIntExcept (“TOO SMALL”); }
public String toString() {
return Integer.toString(value); }
void ReadVal ( ) {
Scanner s = new Scanner(Sytem.in); value = s.nextInt( );
} }
*Main Program
class SmallIntExample {
public static void main (String args[]) { System.out.println("start of smallint ..."); SmallInt S1= new SmallInt(1);
SmallInt S = new SmallInt(); S.ReadVal ();
Pemrograman Berorientasi Objek 34 S1.plus (S); System.out.println("hasil S1= S1+S ="+S1); }catch (SmallIntExcept e) { e.response (); } } } Summary Mendefinisikan exception
Menangani exception dengan menggunakan blok try-cath-finally
Membuat class exception SmallIntExcept subclass dari Exception