CLASS DAN OBJEK fileTIPE DATA PRIMITIF-, karena semua library dan objek dalam Java memiliki akar ......

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

Transcript of CLASS DAN OBJEK fileTIPE DATA PRIMITIF-, karena semua library dan objek dalam Java memiliki akar ......

Page 1: CLASS DAN OBJEK fileTIPE DATA PRIMITIF-, karena semua library dan objek dalam Java memiliki akar ... Pada saat objek dibuat, objek berisi semua variabel yang terdapat dalam

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:

Page 2: CLASS DAN OBJEK fileTIPE DATA PRIMITIF-, karena semua library dan objek dalam Java memiliki akar ... Pada saat objek dibuat, objek berisi semua variabel yang terdapat dalam

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

}

Page 3: CLASS DAN OBJEK fileTIPE DATA PRIMITIF-, karena semua library dan objek dalam Java memiliki akar ... Pada saat objek dibuat, objek berisi semua variabel yang terdapat dalam

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()

Page 4: CLASS DAN OBJEK fileTIPE DATA PRIMITIF-, karena semua library dan objek dalam Java memiliki akar ... Pada saat objek dibuat, objek berisi semua variabel yang terdapat dalam

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

Page 5: CLASS DAN OBJEK fileTIPE DATA PRIMITIF-, karena semua library dan objek dalam Java memiliki akar ... Pada saat objek dibuat, objek berisi semua variabel yang terdapat dalam

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

Page 6: CLASS DAN OBJEK fileTIPE DATA PRIMITIF-, karena semua library dan objek dalam Java memiliki akar ... Pada saat objek dibuat, objek berisi semua variabel yang terdapat dalam

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>] }

Page 7: CLASS DAN OBJEK fileTIPE DATA PRIMITIF-, karena semua library dan objek dalam Java memiliki akar ... Pada saat objek dibuat, objek berisi semua variabel yang terdapat dalam

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;

}

Page 8: CLASS DAN OBJEK fileTIPE DATA PRIMITIF-, karena semua library dan objek dalam Java memiliki akar ... Pada saat objek dibuat, objek berisi semua variabel yang terdapat dalam

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

Page 9: CLASS DAN OBJEK fileTIPE DATA PRIMITIF-, karena semua library dan objek dalam Java memiliki akar ... Pada saat objek dibuat, objek berisi semua variabel yang terdapat dalam

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

Page 10: CLASS DAN OBJEK fileTIPE DATA PRIMITIF-, karena semua library dan objek dalam Java memiliki akar ... Pada saat objek dibuat, objek berisi semua variabel yang terdapat dalam

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 {

……

}

Page 11: CLASS DAN OBJEK fileTIPE DATA PRIMITIF-, karena semua library dan objek dalam Java memiliki akar ... Pada saat objek dibuat, objek berisi semua variabel yang terdapat dalam

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;

}

Page 12: CLASS DAN OBJEK fileTIPE DATA PRIMITIF-, karena semua library dan objek dalam Java memiliki akar ... Pada saat objek dibuat, objek berisi semua variabel yang terdapat dalam

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

Page 13: CLASS DAN OBJEK fileTIPE DATA PRIMITIF-, karena semua library dan objek dalam Java memiliki akar ... Pada saat objek dibuat, objek berisi semua variabel yang terdapat dalam

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:

Page 14: CLASS DAN OBJEK fileTIPE DATA PRIMITIF-, karena semua library dan objek dalam Java memiliki akar ... Pada saat objek dibuat, objek berisi semua variabel yang terdapat dalam

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.

Page 15: CLASS DAN OBJEK fileTIPE DATA PRIMITIF-, karena semua library dan objek dalam Java memiliki akar ... Pada saat objek dibuat, objek berisi semua variabel yang terdapat dalam

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

Page 16: CLASS DAN OBJEK fileTIPE DATA PRIMITIF-, karena semua library dan objek dalam Java memiliki akar ... Pada saat objek dibuat, objek berisi semua variabel yang terdapat dalam

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:

Page 17: CLASS DAN OBJEK fileTIPE DATA PRIMITIF-, karena semua library dan objek dalam Java memiliki akar ... Pada saat objek dibuat, objek berisi semua variabel yang terdapat dalam

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

Page 18: CLASS DAN OBJEK fileTIPE DATA PRIMITIF-, karena semua library dan objek dalam Java memiliki akar ... Pada saat objek dibuat, objek berisi semua variabel yang terdapat dalam

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 {

}

Page 19: CLASS DAN OBJEK fileTIPE DATA PRIMITIF-, karena semua library dan objek dalam Java memiliki akar ... Pada saat objek dibuat, objek berisi semua variabel yang terdapat dalam

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

Page 20: CLASS DAN OBJEK fileTIPE DATA PRIMITIF-, karena semua library dan objek dalam Java memiliki akar ... Pada saat objek dibuat, objek berisi semua variabel yang terdapat dalam

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

Page 21: CLASS DAN OBJEK fileTIPE DATA PRIMITIF-, karena semua library dan objek dalam Java memiliki akar ... Pada saat objek dibuat, objek berisi semua variabel yang terdapat dalam

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

Page 22: CLASS DAN OBJEK fileTIPE DATA PRIMITIF-, karena semua library dan objek dalam Java memiliki akar ... Pada saat objek dibuat, objek berisi semua variabel yang terdapat dalam

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

Page 23: CLASS DAN OBJEK fileTIPE DATA PRIMITIF-, karena semua library dan objek dalam Java memiliki akar ... Pada saat objek dibuat, objek berisi semua variabel yang terdapat dalam

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:

Page 24: CLASS DAN OBJEK fileTIPE DATA PRIMITIF-, karena semua library dan objek dalam Java memiliki akar ... Pada saat objek dibuat, objek berisi semua variabel yang terdapat dalam

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)

Page 25: CLASS DAN OBJEK fileTIPE DATA PRIMITIF-, karena semua library dan objek dalam Java memiliki akar ... Pada saat objek dibuat, objek berisi semua variabel yang terdapat dalam

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:

Page 26: CLASS DAN OBJEK fileTIPE DATA PRIMITIF-, karena semua library dan objek dalam Java memiliki akar ... Pada saat objek dibuat, objek berisi semua variabel yang terdapat dalam

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

Page 27: CLASS DAN OBJEK fileTIPE DATA PRIMITIF-, karena semua library dan objek dalam Java memiliki akar ... Pada saat objek dibuat, objek berisi semua variabel yang terdapat dalam

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

Page 28: CLASS DAN OBJEK fileTIPE DATA PRIMITIF-, karena semua library dan objek dalam Java memiliki akar ... Pada saat objek dibuat, objek berisi semua variabel yang terdapat dalam

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.

Page 29: CLASS DAN OBJEK fileTIPE DATA PRIMITIF-, karena semua library dan objek dalam Java memiliki akar ... Pada saat objek dibuat, objek berisi semua variabel yang terdapat dalam

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

Page 30: CLASS DAN OBJEK fileTIPE DATA PRIMITIF-, karena semua library dan objek dalam Java memiliki akar ... Pada saat objek dibuat, objek berisi semua variabel yang terdapat dalam

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*/

Page 31: CLASS DAN OBJEK fileTIPE DATA PRIMITIF-, karena semua library dan objek dalam Java memiliki akar ... Pada saat objek dibuat, objek berisi semua variabel yang terdapat dalam

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){ }

}

Page 32: CLASS DAN OBJEK fileTIPE DATA PRIMITIF-, karena semua library dan objek dalam Java memiliki akar ... Pada saat objek dibuat, objek berisi semua variabel yang terdapat dalam

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

Page 33: CLASS DAN OBJEK fileTIPE DATA PRIMITIF-, karena semua library dan objek dalam Java memiliki akar ... Pada saat objek dibuat, objek berisi semua variabel yang terdapat dalam

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 {

Page 34: CLASS DAN OBJEK fileTIPE DATA PRIMITIF-, karena semua library dan objek dalam Java memiliki akar ... Pada saat objek dibuat, objek berisi semua variabel yang terdapat dalam

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