• Tidak ada hasil yang ditemukan

Keyword abstract

PENGGUNAAN KELAS DI JAVA

3.4 Keyword abstract

Keyword abstract dapat diterapkan pada kelas dan method.

3.4.1 Kelas abstrak

Sebuah kelas dapat dideklarasikan sebagai kelas abstrak. Tujuan membuat kelas abstrak adalah agar satu kelas lain dapat memperluasnya (extend) dengan jalan menjadi subclass darinya. Sebagai contoh, bayangkan seekor hewan yang mempunyai method generik yang sama, yang dimiliki oleh semua hewan. Keadaan spesifik dari hewan tersebut seperti warnanya, jumlah kakinya, suaranya, dan sebagainya belum diiketahui. Untuk itulah, diperlukan kelas abstrak. Kelas tersebut tidak dapat diinstansiasi. Hanya turunan dari kelas abstrak yang dapat diinstansiasi. Berikut ini contoh kelas abstrak:

public abstract class Animal { private int numOfFoots; private Color color;

public abstract void walk(); public abstract void sound(); }

public class Cat extends Animal { public void walk() {

System.out.println("cat walks using 4 legs"); }

public void sound() {

System.out.println("miaouw"); }

}

public class Chicken extends Animal { public void walk() {

System.out.println("chicken walks using 2 legs"); }

public void sound() {

System.out.println("kukuruyuk"); }

}

Pada kode program di atas dideklarasikan kelas Animal yang abstrak, di mana di dalamnya dideklarasikan dua variabel yaitu numOfFoots dan color. Selain itu, dapat juga dideklarasikan dua buah method, yaitu walk(), dan sound(). Dalam method di dalam kelas Animal, tidak didefiniskan impelementasi method yang dideklarasikannya, dengan harapan bahwa obyek turunan hewan yang spesifik, seperti Chicken dan Cat akan menyediakan implementasinya yang spesifik dengan

kondisi masing-masing hewan. Dalam contoh di atas, method abstrak walk() dan sound() dalam kelas Animal diimplementasikan oleh kelas Chicken dan Cat.

Kelas abstrak dapat terdiri dari satu atau lebih method abstrak seperti contoh di atas. Kelas abstrak juga boleh tidak memiliki method abstrak sebagaimana ditunjukkan pada program berikut.

public abstract class Vehicle { private String type;

public void getType() { return type;

} }

Kelas Vehicle di atas merupakan contoh kelas abstrak yang legal. Apabila ada satu saja method yang dideklarasikan dalam sebuah kelas sebagai method abstrak, maka kelas tersebut harus dideklarasikan abstract.

3.4.2 Method abstrak

Method abstrak adalah method yang sudah dideklarasikan, tetapi belum

diimplementasikan. Sebuah method ditulis dengan keyword abstract ketika kelas turunan (subclass) di bawahnya menyediakan implementasi method tersebut.

Method abstrak ditandai dengan modifier abstract, tidak memiliki

implementasi, dan diakhiri dengan tanda titik koma (;). public void myAbstractMethod();

3.5 Interface

Interface mendefinisikan aturan perilaku (protocol of behavior) yang

dapat diimplementasikan oleh kelas manapun. Interface mendefinisikan satu set method tanpa menyediakan implementasinya. Sebuah kelas yang mengimplementasi sebuah interface terikat kontrak oleh interface tersebut untuk mengimplementasi semua method yang ada di dalam

interface. Dengan kata lain, kelas tersebut terikat untuk

meng-implementasikan perilaku tertentu yang tertulis dalam interface. Secara substansi, interface merupakan kumpulan dari method abstrak dan konstanta.

Interface memiliki kemiripan dengan kelas abstrak, di mana keduanya

memuat method abstrak. Perbedaan penting antara interface dan kelas abstrak adalah :

ƒ Sebuah interface tidak dapat membuat implementasi satu method pun, sementara kelas abstrak dapat membuat implementasi satu atau lebih method abstrak

ƒ Sebuah kelas dapat mengimplementasi beberapa interface, tetapi ia hanya dapat meng-extends satu superclass.

ƒ Interface bukan merupakan bagian dari hirarki kelas. Dua kelas yang tidak berhubungan dalam jalur hirarki kelas dapat mengimplementasi interface yang sama.

3.5.1 Deklarasi interface

Misalkan ada sekumpulan obyek yang memiliki kemampuan yang sama, yaitu mereka semua dapat terbang. Untuk itu dapat dibuatkan sebuah

interface publik, yang dinamakan Flyer, yang memiliki tiga operasi

takeOff, land, dan fly.

<<interface>> Flyer + takeOff() + land() + fly() + fly() + takeOff() + land() Airplane

Gambar 3.1 Interface Flyer dan implementasinya oleh kelas Airplane.

Panah dengan garis putus-putus di atas menggambarkan kelas Airplane mengimplementasikan interface Flyer. Kode Java dari disain kelas di atas ditunjukkan sebagai berikut.

public interface Flyer { public void takeOff(); public void land(); public void fly(); }

public class Airplane implements Flyer { public void takeOff() {

//accelerate until lift-off //raise landing gear }

public void land() { //lower landing gear

//decelerate and lower flaps until touch-down //apply breaks

}

public void fly() {

//keep those engines running }

}

Satu interface Flyer dapat diimplementasikan oleh beberapa kelas. Sebagai contoh, pesawat terbang (Airplane), burung (Bird), dan superman (Superman), semuanya dapat terbang.

+ fly() <<interface>> Flyer + takeOff() + land() Airplane + fly() + takeOff() + land() + buildNest() + layEggs() + fly() Bird + takeOff() + land() + leapBuilding() + stopBullet() Superman + takeOff() + land() + fly()

Gambar 3.2 Implementasi interface Flyer oleh beberapa kelas. Sebuah kelas Airplane mungkin merupakan subclass dari kelas Vehicle (kendaraan), dan ia dapat terbang. Kelas Bird merupakan

subclass dari kelas Animal (hewan), dan ia pun dapat terbang. Contoh

di atas menggambarkan bagaimana sebuah kelas dapat mewarisi satu kelas tetapi mengimplementasi beberapa interface sekaligus.

3.5.2 Implementasi multiple interface

Seperti telah dijelaskan di atas, sebuah kelas dapat mengimplementasi lebih dari satu interface. Sebagai contoh, sebuah SeaPlane (pesawat yang dapat mendarat dan terbang di/dari air) tidak hanya dapat terbang, ia juga dapat berlayar. Kelas SeaPlane meng-extends kelas Airplane, yang berarti ia juga mewarisi implementasi dari interface Flyer. Kelas SeaPlane juga mengimplementasi interface Sailer.

+ cruise() <<interface>> Sailer + dock() + fly() <<interface>> Flyer + takeOff() + land() RiverBarge + dock() + cruise() Airplane + takeOff() + land() + fly() SeaPlane + dock() + cruise() Vehicle Helicopter

Gambar 3.3 Contoh dari konsep implementasi multipe interface.

3.5.3 Penggunaan interface Biasanya interface digunakan untuk:

ƒ Mendeklarasikan method yang akan diimplementasikan oleh satu atau beberapa kelas.

ƒ Menunjukkan interface sebuah obyek ke publik tanpa menunjukkan isi kelas sebenarnya.

ƒ Menangkap kesamaan di antara beberapa kelas tanpa perlu memasukkannya dalam hirarki kelas (superclass - subclass).

ƒ Mensimulasikan konsep pewarisan banyak kelas dengan mendeklarasikan kelas yang mengimplementasikan beberapa interface sekaligus.

Dokumen terkait