informatikaunindra.orginformatikaunindra.org/file/PBO/Diktat/PBO (Modul).docx · Web viewObjek...

42
Universitas Indraprasta PGRI Modul PBO 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 Pemrograman Berorientasi Objek 1

Transcript of informatikaunindra.orginformatikaunindra.org/file/PBO/Diktat/PBO (Modul).docx · Web viewObjek...

Universitas Indraprasta PGRI Modul PBO

ICLASS DAN OBJEK

1.1 Paradigma ObjekParadigma 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 variabelSetiap 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 1

Universitas Indraprasta PGRI Modul PBO

Contoh pemisalan objek orang nyata menjadi kode program dalam class Orang:

Class Orang {

String nama; //nama orangint tinggiBadan; //dalam cmint beratBadan; //dlm kgString warnaRambut; //hitam, pirang, coklatString warnaKulit; //sawomatang, hitam, putihString jenisKelamin //pria atau wanitaboolean berkacamata; //bila berkacamata berarti true

}

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.

Pemrograman Berorientasi Objek 2

Class A----------------------------------------------------------StateData member / variabel----------------------------------------------------------Behaviourmethod1()method2()

Universitas Indraprasta PGRI Modul PBO

1.3 MethodSelain 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

Pemrograman Berorientasi Objek 3

void menangis() {System.out.println(“hik...hik…hiks”);

}

void tertawa() {System.out.println(“ha…ha…ha…ha”);

}

Class Orang----------------------------------------------------------Statenamavariabel lain----------------------------------------------------------Behaviourmenangis()tertawa()

Orang1Izzuddin A Afif

Orang2Muhammad Fairuz

Universitas Indraprasta PGRI Modul PBO

Ilustrasi perbedaan class dengan objekDari 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

Pada saat objek dibuat, objek berisi semua variabel yang terdapat dalam kelas tersebut. Terdapat 2 macam variabel dalam kelas, yaitu:

Pemrograman Berorientasi Objek 4

Contoh

public class Siswa {

}

modifier

nama class

contohpublic class Siswa {

public int nrp;

public String nama;

}

atribut

Universitas Indraprasta PGRI Modul PBO

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

Pemrograman Berorientasi Objek 5

Deklarasi Class

<modifier> class <classname> {[deklarasi_attribut][deklarasi_konstruktor][deklarasi_metode]

}

Deklarasi Atribut

<modifier> <tipe> <nama_atribut>;

Deklarasi Metode

<modifier> <return_type> <nama_metode>([daftar_argumen])

{[<statement>]

}

Universitas Indraprasta PGRI Modul PBO

ilustrasi deklarasi methodContoh: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 thisKata kunci this dipergunakan pada pembuatan kelas dan

digunakan untuk menyatakan objek sekarang.

Pemrograman Berorientasi Objek 6

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;

Universitas Indraprasta PGRI Modul PBO

1.5 KonstruktorMetode 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 { public static void main (String args[]) { mobil mobilku=new mobil(“merah",2003); System.out.println("warna:"+mobilku.ambilWarna()); System.out.println("tahun:"+mobilku.ambilTahunProduksi()); }}

Pemrograman Berorientasi Objek 7

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;

Universitas Indraprasta PGRI Modul PBO

1.6 Overloading pada KonstruktorOverloading 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 MethodOverloading juga dapat dikenali pada metode non konstruktor. Contoh:class matematika {

static public double kuadrat(double nilai) {return nilai*nilai;}

static public int kuadrat (int nilai) {return nlai*nilai;}

Pemrograman Berorientasi Objek 8

Hasil :

Warna:merahTahun:2003Warna:nullTahun:0Finished executing

Universitas Indraprasta PGRI Modul PBO

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

}}

IIINHERITANCE / PEWARISAN

Inheritance (Pewarisan) merupakan salah satu dari tiga konsep dasar OOP. Konsep inheritance ini mengadopsi dunia riil dimana suatu

Pemrograman Berorientasi Objek 9

Hasil :

625.0625625.0Finished executing

Universitas Indraprasta PGRI Modul PBO

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 InheritanceDengan 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 :

Pada saat dikompilasi Kompiler Java akan membacanya sebagai subclass dari class Object.

Pemrograman Berorientasi Objek 10

Deklarasi inheritance

public class B extends A {………

}

public class A {……

}

public class A extends Object {

……

}

Universitas Indraprasta PGRI Modul PBO

2.1.1Kapan Kita Menerapkan InheritanceKita 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:

Pada contoh diatas juga mewakili contoh dari single inheritance di mana suatu sub class memiliki 1 parent class.

2.1.2Multilevel Inheritance

Pemrograman Berorientasi Objek 11

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;

}

public class Manajer extends Pegawai {

public String departemen;

public void IsiData(String n, String d) {

nama=n;

departemen=d;

}

}

Employee

+name : String = “”+salary : double+birthdate : Date

+getDetails() : String

Engineer Secretary

Manager

+departement: String=“”

Director

+carAllowance: double

+increaseAllowance()

Single and Multilevel Inheritance

Universitas Indraprasta PGRI Modul PBO

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:

Pemrograman Berorientasi Objek 12

Universitas Indraprasta PGRI Modul PBO

2.2 Access ControlDalam 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 13

Universitas Indraprasta PGRI Modul PBO

2.2.1privateVariabel 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.

2.2.2defaultdefault 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

Pemrograman Berorientasi Objek 14

Universitas Indraprasta PGRI Modul PBO

tersebut. Class diluar package boleh melakukan subclass, tetapi subclass tersebut tidak bisa mengakses feature superclass.

Contoh 1: default

Contoh 2: default

2.2.3protectedProtected 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.

Pemrograman Berorientasi Objek 15

Universitas Indraprasta PGRI Modul PBO

Contoh 1: protected

Ringkasan dari masing-masing akses kontrol:

2.3 superKata 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.

Pemrograman Berorientasi Objek 16

Universitas Indraprasta PGRI Modul PBO

super()

merujuk pada konstruktor pada parent class.

Contoh: super

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

Pemrograman Berorientasi Objek 17

public class Parent {}

public class Child extends Parent {}

public class Parent {public Parent() {}}

public class Child extends Parent {public Child() {super();}}

Pemanggilan konstruktor class Parent

Universitas Indraprasta PGRI Modul PBO

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:

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:

Pemrograman Berorientasi Objek 18

Universitas Indraprasta PGRI Modul PBO

pemanggilan super yang dibenarkan (kanan).

Contoh:

Pemrograman Berorientasi Objek 19

Universitas Indraprasta PGRI Modul PBO

IIIENCAPSULATION

3.1 EnkapsulasiEnkapsulasi 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 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.

Pemrograman Berorientasi Objek 20

Universitas Indraprasta PGRI Modul PBO

Contoh dalam program

Belajar.Javaclass belajar {

public String x =”Pintar”;

private String y = “Java”;

}

Pintar.Javapublic class Pintar{

public static void main(String[]args){

Coba panggil = new Belajar( );

System.out.println(“Panggil X : “+panggil.x);

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.

Pemrograman Berorientasi Objek 21

Universitas Indraprasta PGRI Modul PBO

IVPOLYMORPHISM

4.1 OverridingSubclass 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 Return type Daftar parameter

Method pada parent class disebut overriden method, dan method pada subclass disebut overriding method.Contoh: overridingpublic 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 22

Universitas Indraprasta PGRI Modul PBO

Aturan overriding: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 OverloadingMenuliskan 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:

Pemrograman Berorientasi Objek 23

Universitas Indraprasta PGRI Modul PBO

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)

Dua daftar parameter diatas dianggap sama karena yang berbeda hanya penamaan variabel parameternya saja.Contoh:

4.3 Constructor OverloadingSeperti 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 24

Universitas Indraprasta PGRI Modul PBO

Contoh:

Contoh: memanggil parent class constructor

4.4 PolymorphismPolymorphism adalah kemampuan untuk mempunyai beberapa

bentuk yang berbeda. Contoh: Manager adalah Employee

Pemrograman Berorientasi Objek 25

Universitas Indraprasta PGRI Modul PBO

Saat melakukan pemanggilan: Employee emp = new Manager();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.

VEXCEPTION HANDLING

5.1 ObjectivesDi akhir session, peserta diharapkan mampu untuk: Mendefinisikan exception Menangani exception dengan menggunakantry-catch-finally block

Pemrograman Berorientasi Objek 26

Universitas Indraprasta PGRI Modul PBO

Membuat class Exceptions sendiri

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 27

Universitas Indraprasta PGRI Modul PBO

Blok try-catch-finally. 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 28

Universitas Indraprasta PGRI Modul PBO

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 ExceptionPemrograman Berorientasi Objek 29

Universitas Indraprasta PGRI Modul PBO

import java.util.Scanner; /*JDK 1.5*/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){}

Pemrograman Berorientasi Objek 30

Universitas Indraprasta PGRI Modul PBO

} catch (FatalException fatal){ }}

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 methodvoid connect_internet() throws connect_exception{//coba melakukan koneksiif (error) throw new connect_exception(“error”);//....}//...//bagian maintry {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 31

Universitas Indraprasta PGRI Modul PBO

- Misal class OutOfDiskSpaceException bisa diturunkan dari IOException

Sebaiknya turunkan dari class Exception karena sudah memiliki method untuk mencatat pesan exception

Contoh: SmallIntExceptclass 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 Programclass SmallIntExample {

public static void main (String args[]) {

Pemrograman Berorientasi Objek 32

Universitas Indraprasta PGRI Modul PBO

System.out.println("start of smallint ...");SmallInt S1= new SmallInt(1);SmallInt S = new SmallInt();S.ReadVal ();try {

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

Daftar Pustaka

1. Pemrograman Berorientasi Objek, Rosa A.S. dan M. Shalahuddin

Pemrograman Berorientasi Objek 33

Universitas Indraprasta PGRI Modul PBO

2. Mastering Java, Konsep pemrograman java dan penerapannya untuk membuat software aplikasi, Rachmad Hakim S. & Ir. Sutartu. M.Si

Pemrograman Berorientasi Objek 34