• Tidak ada hasil yang ditemukan

4.1 PENGERTIAN POLIMORFISME Polimorfisme diartikan sebagai konsep yang menyatakan sesuatu yang sama dapat memiliki berbagai bentuk yang berbeda. Polimorfisme ditandai dengan beberapa - Polimorfisme, Exception & Abstract

N/A
N/A
Protected

Academic year: 2018

Membagikan "4.1 PENGERTIAN POLIMORFISME Polimorfisme diartikan sebagai konsep yang menyatakan sesuatu yang sama dapat memiliki berbagai bentuk yang berbeda. Polimorfisme ditandai dengan beberapa - Polimorfisme, Exception & Abstract"

Copied!
12
0
0

Teks penuh

(1)

4.1 PENGERTIAN POLIMORFISME

Polimorfisme diartikan sebagai konsep yang menyatakan sesuatu yang sama dapat memiliki berbagai bentuk yang berbeda. Polimorfisme ditandai dengan beberapa metode yang memiliki nama yang sama dalam kelas atau turunan kelas tetapi memiliki identitas yang berbeda, misalkan parameter masukan method. Polimorfisme dapat dibedakan menjadi dua, yakni: overloading dan overriding

4.1.1 OVERLOADING

Overloading merupakan polimorfisme dimana beberapa method memiliki nama yang sama dengan isi parameter yang berbeda. Jika terjadi demikian, maka eksekusi program akan langsung mengacu pada method yang sesuai dengan parameter. Berikut ini contoh overloading untuk method setBuku():

public class Buku { private String judul; private int tahun;

private String pengarang;

Buku() { //konstruktor inisialisasi }

Buku(String j, int t, String p) { //konstruktor masukan this.judul = j;

this.tahun = t; this.pengarang = p; }

void setBuku(String j) { //method setBuku 1 masukan this.judul = j;

}

void setBuku(String j, int t) { //method setBuku 2 masukan this.judul = j;

this.tahun = t; }

void setBuku(String j, int t, String p) { //method setBuku 3 masukan this.judul = j;

this.tahun = t; this.pengarang = p; }

String getJudul() { return this.judul; }

BAB 4

POLIMORFISME

(2)

int getTahun() { return this.tahun; }

String getPengarang() { return this.pengarang; }

}

public class Main {

public static void main(String[] args) {

Buku b = new Buku();

b.setBuku("Pengantar Algoritma");

System.out.println("Judul\t\t:"+b.getJudul()); System.out.println("Tahun\t\t:"+b.getTahun());

System.out.println("Pengarang\t:"+b.getPengarang()+"\n");

b.setBuku("Pengantar Algoritma",2015); System.out.println("Judul\t\t:"+b.getJudul()); System.out.println("Tahun\t\t:"+b.getTahun());

System.out.println("Pengarang\t:"+b.getPengarang()+"\n");

b.setBuku("Pengantar Algoritma",2015,"Tim Dosen Poltek Kediri"); System.out.println("Judul\t\t:"+b.getJudul());

System.out.println("Tahun\t\t:"+b.getTahun());

System.out.println("Pengarang\t:"+b.getPengarang()+"\n");

Buku b2 = new Buku("Modul OOP", 2016, "Tim Dosen Poltek Kediri"); System.out.println("Judul\t\t:"+b2.getJudul());

System.out.println("Tahun\t\t:"+b2.getTahun());

System.out.println("Pengarang\t:"+b2.getPengarang()+"\n"); }

}

4.1.2 OVERRIDING

Overriding merupakan bentuk polimorfisme dimana beberapa me thod pada kelas orang tua dapat ditulis ulang pada kode kelas anak dalam pewarisan. Dalam pewarisan tersebut, method kelas anak bisa memiliki isi ataupun parameter yang sama atau berbeda. Secara singkat dapat ditulis bahwa overriding merupakan overloading pada pewarisan.

(3)

public class BangunDatar { BangunDatar() { }

int luas() { //method luas tanpa masukan pada kelas ortu return 0;

} }

public class Persegi extends BangunDatar{ Persegi() {

}

int luas(int p, int l) { //method luas 2 masukan pada kelas anak return p * l;

} }

public class Main {

public static void main(String[] args) { Persegi p=new Persegi();

System.out.println(p.luas()); //method luas tanpa masukan pada kelas ortu System.out.println(p.luas(5, 6)); //method luas 2 masukan pada kelas anak }

}

Berikut ini contoh lain implementasi overriding pada kelas Titik dan kelas Titik3D. Terdapat overriding untuk method printTitik(). Method ini terdapat pada kelas Titik dan kelas Titik3D. Berikut ini kode lengkap implementasi overriding:

public class Titik { private int x; private int y;

Titik() { //Polimorfisme Overloading x = 0;y = 0;

}

Titik(int xp, int yp) { //Polimorfisme Overloading x = xp;y = yp;

}

public void setX(int xp) { x = xp;

}

KELAS BANGUNDATAR.JAVA

KELAS PERSEGI.JAVA

KELAS MAIN.JAVA

(4)

public int getX() { return x; }

public void setY(int yp) { y = yp;

}

public int getY() { return y; }

public void printTitik(){

System.out.println("("+getX()+","+getY()+")"); }

}

public class Titik3D extends Titik{ private int z;

Titik3D(){ z=0; }

Titik3D(int xp, int yp, int zp){ setX(xp);

setY(yp); z=zp; }

public void setZ(int zp){ z=zp;

}

public int getZ(){ return z; }

public final void printTitik(){

System.out.println("("+getX()+","+getY()+","+getZ()+")"); }

}

public class Main {

public static void main(String[] args) { Titik t = new Titik(8,-4); t.printTitik();

Titik t1 = new Titik3D(2,4,-5); t1.printTitik();

Titik3D t2 = new Titik3D(0,0,7); t2.setX(18);

t2.setY(28); t2.printTitik(); }

}

KELAS TITIK3D.JAVA

(5)

4.2 LATIHAN BAB 4

Terapkan konsep polimorfisme pada studi kasus lain !

4.3 REFERENSI

(6)

5.1 DEFINISI EKSEPSI HANDLING

Eksepsi adalah keadaan yang tidak diharapkan saat program dijalankan, hal ini biasa terjadi karena adanya kesalahan saat program dijalankan. Biasanya copiler tidak menampilkan kesalahan yang terjadi pada saat program dijalankan tetapi tiba-tiba program terhenti atau hang. Oleh karena itu, eksepsi diperlukan untuk menangkap eror yang terjadi saat eksekusi. Blok catch tidak akan dieksekusi jika tidak terjadi kesalahan. Contoh penulisan eksepsi pada java dijelaskan pada Tabel 5.1.

Tabel 5.1 Penulisan Eksepsion Handling

Bahasa Pemrograman Java Tujuan

try {

//proses int n = 8/0;

} catch (Exception e) { e.printStackTrace(); }

Eksepsi untuk sebuah proses dengan error

massage dari compiler

//proses

throw new Exception();

Melemparkan eksepsi dengan error massage dari compiler

//proses

throw new Exception("Error");

Melemparkan eksepsi dengan membuat sendiri error massage

5.2 MACAM EKSEPSI

5.3 IMPLEMENTASI EKSEPSI TRY CATCH

public class Eks1 {

public static void main(String[] args) throws Exception { try {

int x = 1 / 0; } catch (Exception e) { BAB 5

EKSEPSI HANDLING

(7)

e.printStackTrace(); }

try {

int[] n = new int[10]; n[10] = 9;

} catch (Exception e) { e.printStackTrace(); }

} }

public class Eks2 {

public static void main(String[] args) throws Exception {

try {

int x = 1 / 0; } catch (Exception e) {

throw new Exception(); }

} }

public class Eks3 {

public static void main(String[] args) throws Exception { try {

int x = 1 / 0; } catch (Exception e) {

throw new Exception("Ada pembagian dengan 0"); }

} }

5.4 IMPLEMENTASI EKSEPSI TRY CATCH FINALLY

Pasangan lain untuk penanganan kesalahan adalah menggunakan blok try-catch-finally. Blok finally diletakkan setelah blok catch. Ditemukan kesalahan atau tidak, blok finally tetap dijalankan ketika kode program dieksekusi. Berikut ini contoh kode untuk penanganan kesalahan try-catch-finally dengan kasus ditemukan kesalahan:

public class TryCatchFinally {

public static void main(String[] args) { try {

int[] n = new int[10]; n[10] = 9;

Berikut ini contoh eksepsi model 2:

Berikut ini contoh eksepsi model 3:

(8)

} catch (Exception e) { e.printStackTrace(); } finally {

System.out.println("Proses selesai"); }

} }

Selanjutnya, berikut ini contoh kode untuk penanganan kesalahan try-catch-finally dengan kasus tidak ditemukan kesalahan:

public class TryCatchFinally {

public static void main(String[] args) {

try {

int[] n = new int[10]; n[9] = 9;

} catch (Exception e) { e.printStackTrace(); } finally {

System.out.println("Proses selesai"); }

} }

5.5 TUGAS BAB 5

Implemntasikan fungsi try catch pada studi kasus yang lainnya!

5.6 REFERENSI

1. Rosa dan Shalahudin, 2010, Modul Pembelajaran Pemrograman Berorientasi Objek, Modula:Bandung.

2. Sutopo, A.H., dan Masya, F., 2005, Pemrograman Berorientasi Objek dengan Java, Graha Ilmu: Yogyakarta

(9)

6.1 DEFINISI ABSTRAK

Kelas abstrak dipilih jika ada method pada kelas abstrak yang isinya hanya bisa diisi di kelas anak. Sifat abstrak dapat digunakan oleh kelas maupun method. Namun, jika abstrak digunakan untuk sebuah method, method tersebut haruslah berada di kelas abstrak. Method abstrak tidak boleh memiliki badan program, badan program method ini diimplementasikan pada kelas turunannya.

6.2 FUNGSI ABSTRAK

Kegunaan dari kelas atau method abstrak adalah menyediakan sebuah abstraksi kelas atau method sehingga dapat dilihat method apa saja yang ada di dalam kelas tanpa harus melihat isi badan program dari method-method itu. Hal ini dapat digambarkan sebagai sebuah daftar isi yang dengannya dapat diketahui judul bab secara keseluruhan tanpa membuka semua isi buku.

6.3 IMPLEMENTASI KELAS ABSTRAK

abstract class Titik { private int x; private int y; Titik() {

x = 0; y = 0; }

Titik(int xp, int yp) { x = xp; y = yp; }

public void setX(int xp) { x = xp;

}

public int getX() { return x; }

public void setY(int yp) { y = yp;

}

public int getY() { return y; }

BAB 6

ABSTRAK DAN PAKET

(10)

public abstract void printTitik(); //ini method abstrak }

public class Titik3D extends Titik{ private int z;

Titik3D(){ z=0; }

Titik3D(int xp, int yp, int zp){ setX(xp);

setY(yp); z=zp; }

public void setZ(int zp){ z=zp;

}

public int getZ(){ return z; }

public void printTitik(){

System.out.println("("+getX()+","+getY()+","+getZ()+")"); }

}

public class Main {

public static void main(String[] args) {

Titik t1 = new Titik3D(2,4,-5); //pembuatan objek kelas Titik t1.printTitik();

Titik3D t2 = new Titik3D(0,0,7); //pembuatan objek kelas Titik3D t2.setX(18);

t2.setY(28); t2.printTitik(); }

}

Yang harus digaris bawahi ini adalah jika ingin menciptakan objek Titik, maka menggunakan syntax sebagai berikut:

Titik t = new Titik3D(); bukan

Titik t = new Titik();

hal ini dikarenakan kelas Titik adalah kelas abstrak.

Senada dengan hal ini, struktur data queue pada kelas queue.java dipanggil dengan syntax sebagai berikut:

KELAS TITIK3D.JAVA

(11)

Queue q = new LinkedList(); bukan

Queue q = new Queue();

6.4 PAKET

Paket atau package adalah sebuah container atau kemasan yang dapat digunakan untuk mengelompokkan kelas-kelas sehingga memungkinkan beberapa kelas yang bernama sama disimpan dalam paket yang berbeda. Ilustrasi paket adalah sebagai berikut:

Gambar 6.1 Ilustrasi Paket

Sebuah paket pada Java dapat digunakan oleh paket lain ataupun kelas-kelas diluar paket. Contoh:

Untuk menggunakan kelas mamalia yang ada di paket example.animal, maka ditulis kode berikut:

import example.animal.mamalia;

Untuk menggunakan semua kelas yang ada di paket example.animal, maka ditulis kode berikut:

import example.animal.*;

Dalam direktori, sebuah paket merupakan sebuah folder yang dapat terdiri dari beberapa kelas berupa file berbentuk *.java.

Penulisan paket akan berpengaruh dalam direktori penyimpanan. Contoh: package Paket1Paket2Paket3;

Penulisan seperti diatas akan tersimpan dalam satu folder Paket1Paket2Paket3. package Paket1.Paket2.paket3;

(12)

Gambar 6.2 Paket pada direktori Java

Direktori pada direktori komputer dapat pada Gambar 6.3 dan Gambar 6.4

Gambar 6.3 Paket Paket1.Paket2.Paket3 yang terdiri dari satu kelas

Gambar 6.4 Paket Paket1Paket2Paket3 yang terdiri dari dua kelas

6.5 TUGAS MODUL 6

Terapkan konsep abstrak ini untuk studi kasus yang lainnya!

6.6 REFERENSI

Gambar

Tabel 5.1 Penulisan Eksepsion Handling
Gambar 6.1 Ilustrasi Paket
Gambar 6.4 Paket Paket1Paket2Paket3 yang terdiri dari dua kelas

Referensi

Dokumen terkait