CLASS DAN OBJEK fileTIPE DATA PRIMITIF-, karena semua library dan objek dalam Java memiliki akar ......
Transcript of CLASS DAN OBJEK fileTIPE DATA PRIMITIF-, karena semua library dan objek dalam Java memiliki akar ......
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.
Contoh pemisalan objek orang nyata menjadi kode program dalam class Orang:
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; }
atribut
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 executing
Pemrograman 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()
Single and Multilevel Inheritance
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.
Contoh 2: mengakses private variabel dari subclass.
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
Contoh 2: 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
Ringkasan dari masing-masing akses kontrol:
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.
Contoh: super
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();
}
}
Pemanggilan konstruktor class Parent
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( );
System.out.println(“Panggil X : “+panggil.x);
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:
Nama
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
Aturan overriding:
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.
Contoh:
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
Saat melakukan pemanggilan: Employee emp = new Manager();
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.
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
}
Alur Program
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.
- Misal class OutOfDiskSpaceException bisa diturunkan dari IOException
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 ();
try {
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