adalah cara pandang yang memandang SEGALA SESUATU sebagai OBJEK. Semua aspek dalam Java programming dapat dianggap sebagai objek, -kecuali

dokumen-dokumen yang mirip
5/23/12. Inheritance. Pengertian inheritance Deklarasi inheritance Single inheritance Multilevel inheritance Access Control super keyword

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET PEMROGRAMAN 2

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET PEMROGRAMAN JAVA 2

Inheritance (Pewarisan) Pengertian dasar inheritance

Inheritance (Pewarisan Sifat) Imam Fahrur Rozi

Inheritance. Pertemuan 8 Pemrograman Berbasis Obyek

Pemrograman Berbasis Objek Inheritance

Inheritance. Topik 5/17/2013

Overriding. Subclass yang berusaha memodifikasi tingkah laku yang diwarisi dari superclass. Tujuan: subclass memiliki tingkah laku yang lebih

(INHERITANCE) Nurochman

B. DASAR TEORI MENGENAL OBJEK & CLASS

B. DASAR TEORI MENGENAL OBJEK & CLASS

E-Book PEMROGRAMAN BERORIENTASI OBJEK. Disusun Oleh: Arfian Hidayat, S.Kom

Pengenalan pemrograman berorientasi obyek. Politeknik Elektronika Negeri Surabaya. Topik

Praktikum 4 Konsep Inheritance, Polymorphism, dan Encapsulation

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET PEMROGRAMAN 2

Inheritance dan Kata Kunci static

Percobaan 6 Exception

Pengenalan pemrograman berorientasi iobyek

PEWARISAN. Disusun Oleh: Reza Budiawan. Untuk: Tim Dosen Algoritma & Pemrograman Lanjut

ABSTRACTION, ENCAPSULATION, INHERITANCE & POLYMORPHISM

KARAKTERISTIK PEMROGRAMAN BERORIENTASI OBJEK (OOP) Pemrograman berorientasi Objek mempunyai karakterisitik sebagai berikut:

PERCOBAAN 6 EXCEPTION

Overriding, Overloading, Polymorphism. Pertemuan 10 Pemrograman Berbasis Obyek Dr. Rodiah

Pengenalan pemrograman berorientasi obyek

Polymorphism. Materi ke-8 Pemrograman Berbasis Objek

BAB 6 INHERITANCE Tujuan:

Modul Bahasa Pemrograman 1

PRAKTIKUM 6 EXCEPTION

public class B extends A {... }

subclass class manapun private default protected public package yang sama

PERTEMUAN III OBJEK DAN CLASS TUJUAN PRAKTIKUM

Konsep Pemrograman Berbasis Obyek

Dasar-Dasar OOP di Java

Pemrograman Berorientasi Obyek. Exception Handling. Politeknik Elektronika Negeri Surabaya

INHERITANCE AND POLIMORPHISM PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM

IKG2I4 / Software Project I

Bab 8. Dasar-Dasar OOP

1. Manakah jawaban yang benar,pada saat Anda mengcompile dan menjalankan class berikut ini:

Encapsulation (Encapsulasi) Minggu 5 Pemrograman Berorientasi Objek Alfa Faridh Suni

Dasar-Dasar OOP di Java

IF PEMROGRAMAN LANJUT EXCEPTION. Oleh : Andri Heryandi, M.T.

Apa yang menjadi output potongan kode diatas? Error karena tidak ada String yang di-passing kedalam konstruktor Bapak

Pemrograman Lanjut Exception Handling PTIIK

Sesi 8. Event Handling & Exception Handling. Tujuan Intruksional

Konsep Pemrograman Berorientasi Obyek. Maria Ulfah S Nurochman

Overriding Overloading Polymorphism

1. Keyword mana yang memiliki fungsi sama dengan keyword this dan menyediakan reference ke atribut turunan dari objek? super

Exception Handling. Topik

Pemrograman Berorientasi. Class dan Obyek 2

3/31/2011. Tujuan. Inheritance, Polymorphism,& Interfaces. Inheritance / pewarisan. Inheritance / pewarisan. Inheritance / pewarisan

EXCEPTION. 2. Pada kondisi bagaimana klausa finally tidak akan dieksekusi? Kode didalam block try memiliki statement return

Variabel tersebut seharusnya bisa dideklarasikan didalam try block dan block catch

Waktu Sisa : 0:43:4. Sukses. Kesalahan pada URL. File tidak lengkap. Kesalahan umum. Mengerjakan finally. Diluar block

IT652 Pemrograman Berorientasi Aspek. Ramos Somya

1. Apa yang harus dilakukan oleh programmer untuk menangani user-defined exception? Menuliskan exception sebagai start method

Sukses. Kesalahan pada URL. File tidak lengkap. Kesalahan umum

Konsep Dasar Pemrograman Berorientasi Objek

Pertemuan 11 Object Oriented Program

JOBSHEET 8 INHERITANCE (PEWARISAN)

PRAKTIKUM 3 KONSTRUKTOR DAN OVERLOADING

PEMROGRAMAN BERORIENTASI OBJEK

Pemrograman Berbasis Objek. Exception Handling. Politeknik Elektronika Negeri Surabaya

Polymorphism (Polimorfisme)

Exception Handling. Oleh : Agus Priyanto, M.Kom

Tidak ada satupun dari pilihan di atas yang benar karena checked exception tidak bisa ditulis

BAB II TEORI DAN KONSEP PEMROGRAMAN BERBASIS OBJECT

Pemrograman Berorientasi. Inheritance

2 TIPE DATA DAN VARIABEL

Pemrograman Berorientasi Object

LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA PENGENALAN OBJECT ORIENTED PROGRAMMING

KONSEP OOP: PEWARISAN / INHERITANCE

SILABUS MATA KULIAH PEMROGRAMAN JAVA

E-Book PEMROGRAMAN BERORIENTASI OBJEK. Disusun Oleh: Arfian Hidayat, S.Kom

Gambar 1: Hirarki class

PRAKTIKUM 17 MENANGANI EXCEPTION

BAB II VARIABEL DAN TIPE DATA

Politeknik Elektronika Negeri Surabaya

A. TUJUAN PEMBELAJARAN 1. Mengetahui cara menangani exception dengan cara melempar exception. 2. Mengetahui cara membuat sendiri class exception.

Bahasa Pemrograman :: Polimorfism and Abstraction

Object Oriented Programming 1

Bahasa Pemrograman 2.

06/03/2018. Tidak memiliki parameter. Melakukan inisialisasi semua variabel private dengan nilai awal.

KONSEP Pemrograman Berorientasi Objek KARMILASARI

Tujuan Intruksional. Mampu menjelaskan tentang event handling Mampu menjelaskan tentang method Mampu menggunakan event handling Mampu membuat method

Pemrograman Berorientasi Obyek. Ramos Somya

PRAKTIKUM I Class dan Obyek

PEMROGRAMAN JAVA : VARIABEL DAN TIPE DATA

MODUL 3. Inheritance, Abstract Class, Interface TUJUAN PRAKTIKUM LANDASAN TEORI. A. Inheritance

Object Oriented Programming (Class, Inheritance, Encapsulation dan Interface)

IKG2I4 / Software Project I

Praktikum 3 Konsep Class, Attribute dan Method

PRAKTIKUM 2 PEMROGRAMAN BERORIENTASI OBJEK

Praktikum 6 Class Design (Encapsulation)

Pemrograman Berbasis Objek (Polimorfisme)

Modul 4 Exception, I/O, dan Operasi File

OVERLOADING, CONSTRUCTOR DAN DESTRUCTOR. Dewi Sartika, M.Kom

Praktikum. PBO (Kelas K) Oleh : MOHAMMAD SHOLIKIN

SUMBER BELAJAR PENUNJANG PLPG

PRAKTIKUM 3 KONSTRUKTOR DAN OVERLOADING

Transkripsi:

CLASS DAN OBJEK I 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 1

Class Orang { String nama; int tinggibadan; int beratbadan; String warnarambut; String warnakulit; String jeniskelamin boolean berkacamata; //nama orang //dalam cm //dlm kg //hitam, pirang, coklat //sawomatang, hitam, putih //pria atau wanita //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. 1.3 Method Pemrograman Berorientasi Objek 2

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: void menangis() { System.out.println( hik...hik hiks ); void tertawa() { System.out.println( ha ha ha ha ); 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 Class A ---------------------------------------------------------- State Data member / variabel Pemrograman Berorientasi Objek ---------------------------------------------------------- 3 Behaviour method1() method2()

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). Class Orang ---------------------------------------------------------- State nama variabel lain ---------------------------------------------------------- Behaviour menangis() tertawa() Orang1 Izzuddin A Afif Orang2 Muhammad Fairuz Ilustrasi pembuatan objek dari class Pemrograman Berorientasi Objek 4

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. Deklarasi Class <modifier> class <classname> { [deklarasi_attribut] [deklarasi_konstruktor] [deklarasi_metode] Contoh public class Siswa { mo nama Ilustrasi deklarasi class Deklarasi Atribut <modifier> <tipe> <nama_atribut>; contoh public class Siswa { public int nrp; public String nama; atribut Ilustrasi deklarasi atribut Pemrograman Berorientasi Objek 5

Deklarasi Metode <modifier> <return_type> <nama_metode> ([daftar_argumen]) { [<statement>] 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 Pemrograman Berorientasi Objek 6

Kata kunci this dipergunakan pada pembuatan kelas dan digunakan untuk menyatakan objek sekarang. 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; 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 { Pemrograman Berorientasi Objek 7

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(); Hasil : Warna:merah Tahun:2003 Warna:null Tahun:0 Finished executing 1.7 Overloading pada Method Overloading juga dapat dikenali pada metode non konstruktor. Contoh: class matematika { Pemrograman Berorientasi Objek 8

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 )); Hasil : 625.0 625 625.0 Finished executing INHERITANCE / PEWARISAN II Pemrograman Berorientasi Objek 9

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 classnya, 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. Deklarasi inheritance public class B extends A { Semua class di dalam Java adalah merupakan subclass dari class super induk yang bernama Object. Misalnya saja terdapat sebuah class sederhana : public class A { Pemrograman Berorientasi Objek 10

Pada saat dikompilasi Kompiler Java akan membacanya sebagai subclass dari class Object. public class A extends 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 : public class Pegawai { public String nama; public double gaji; Misal terdapat class Manager : public class Manajer { public String nama; public double gaji; public String departemen; 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 Manajer extends Pegawai { public String departemen; Pemrograman Berorientasi Objek 11

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. Single and Multilevel Inheritance Employee +name : String = +salary : double +birthdate : Date +getdetails() : String Engineer Secretary Manager +departement: String= Director +carallowance: double +increaseallowance() 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: public class Manajer extends Pegawai { public String departemen; Pemrograman Berorientasi Objek 12 public void IsiData(String n, String d) { nama=n; departemen=d;

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 13

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 14

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 15

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 16

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 17

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 18

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: public class Parent { public Parent() { public class Child extends Parent { public Child() { super(); Pemanggilan konstruktor class Parent pemanggilan super yang dibenarkan (kanan). Contoh: Pemrograman Berorientasi Objek 19

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 20

dilakukan untuk menjaga kebutuhan program agar dapat diakses sewaktuwaktu, 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 21

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 22

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 23

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 24

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 25

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 26

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 27

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 28

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 29

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 30

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 31

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 32

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 33

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 Pemrograman Berorientasi Objek 34