Abstract
Class merupakan Class yang khusus dibuat untuk keperluan inheritance. Tujuan
dari pembuatan abstract class
ini ialah untuk membuat definisi umum bagi class-class yang akan menjadi
turunan darinya.
Abstract
Class tidak bisa diinstansiasi. Abstract method tidak mempunyai implementasi,
sehingga penulisannya dilakukan hanya dengan mengikutkan semikolon, bukan blok
method {} seperti biasanya. Abstract method ini bisa digunakan oleh Class
turunannya dengan melakukan override.
Abstract
class hanya bisa digunakan sebagai super class, tapi juga bisa diturunkan dari
class abstract lainnya. Untuk mendeklarasikan sebuah abstract class digunakan
keyword abstract, [abstract] class [class_name] Sebuah abstract class pada
dasarnya tidak hauh beda dengan class lainnya, yakni juga berisi method yang
menggambarkan carakteristik dari kelas abstract tersebut, bedanya yakni sebuah
abstract class bisa berisi method tanpa diimplementasikan artinya sebuah method
tanpa body, method seperti ini disebut method abstract.
Ø
Kegunaan Class Abstract
1.
Class Abstract berisi beberapa method dan
beberapa method abstract. ClassAbstract berisi sebagian implementasi, dan
subclass yang melengkapiimplementasinya. Dengan kata lain Class Abstract
memiliki beberapa kesamaan(Bagian yang diimplementasikan oleh subclass) dan
memiliki perbedaan(method yang dimiliki sendiri oleh class abstract)
2.
Deklarasikan method abstract, jika ada
satu atau lebih subclass yang diharapkanmempunyai fungsionalitas yang sama tapi
implementasi berbeda.
3.
Gunakan class abstract untuk
mendefinisikan behavior secara umum sebagaisuperclass, sedangkan subclass
menyediakan implementasi detail.
4.
Jika class abstract semua method merupakan
method abstract, sebaiknya classabstract tersebut diganti menjadi
InterfaceAturan menggunakan kelas Abstrak :
5.
Jika sebuah kelas memiliki method abstrak
maka kelas itu harus menjadi kelasabstrak.
6.
Sebuah kelas abstrak dapat saja memiliki
method yang tidak abstrak.
7.
Jika sebuah kelas abstrak diturunkan
menjadi kelas konkret, maka semua methodabstrak dari kelas abstrak haruslah
ditulis ulang / dibuat ulang di kelaskonkretnya dan diberi detail dari
methodnya.
8.
Jika method abstrak di turunkan dan kelas
turunannya adalah kelas abstrak,maka tidak perlu menulis ulang method yang
abstrak.
Ø Konsekuensi
penggunaan sifat abstract :
1.
Tidak dapat dibuat constructor yang
abstract.
2.
Tidak dapat dibuat method yang static dan
abstract (kedua sifat salingkontradiktif).
3.
Tidak diijinkan membuat method yang
private dan abstract (kedua sifat ini jugasaling Kontradiktif)
Ø
Contoh Class Abstract
§
Kita dapat menggambar lingkaran,
persegipanjang garis, kurva Bezier dan object object graphic lainnya Object
tersebut Bezier danobject-object graphic lainnya. Object tersebut mempunyai
state tertentu (seperti: position, orientation, line color, fill color)
dan behaviour secara umum(contoh: moveTo, rotate, resize,
draw).Beberapastatedanbehaviorini samauntuksemua resize, draw). Beberapastate
danbehavior ini sama untuk semua object graphic contoh: position, fill color,
and moveTo. Implementasi yang berbeda sebagai contoh resize or draw. Semua
Object Graphic harus mengetahui bagaimana cara draw dan resize.
Interface secara
filosofis lebih berfungsi sebagai antar muka yang membentuk komunikasi dengan
code lain. Misalnya membentuk hubungan antara sebuah object dengan object yang
lain atau hubungan antara object sebagai penyedia dengan code pengguna. Karena
itulah interface ini banyak digunakan dalam dunia design pattern. Sebab
kebanyakan dari design pattern ini menekankan hubungan antar object.
Interface
adalah jenis khusus dari blok yang hanya berisi method signature (atau
constant). Interface mendefinisikan sebuah(signature) dari sebuah
kumpulan method tanpa tubuh. Interface mendefinisikan sebuah cara standar dan
umum dalam menetapkan sifat-sifat dari class-class. Mereka menyediakan
class-class, tanpa memperhatikan lokasinya dalam hirarki class, untuk
mengimplementasikan sifat-sifat yang umum. Dengan catatan bahwa
interface-interface juga menunjukkan polimorfisme, dikarenakan program dapat
memanggil method interface dan versi yang tepat dari method yang akan
dieksekusi tergantung dari tipe object yang melewati pemanggil method interface.
Ø Implementasi
Interface :
§ Bila
sebuah class mengimplementasikan suatu interface, maka semua konstantadan
method interface akan dimiliki oleh class ini.
§ Method
pada interface harus diimplementasikan pada class yang meng-implementasikan
interface ini.
§ Bila class yang mengimplementasikan interface
tidak mengimplemetasikansemua method dalam interface, maka class tersebut harus
dideklarasikan abstract
Ø Beda
interface dengan kelas abstrak :
- Kelas abstrak dapat mengandung method abstract maupun method tidak abstract, sedangkan interface hanya boleh mengandung method abstract.
- Kelas abstrak dapat mendeklarasikan variabel instans, sedangkan interface hanya dapat mendeklarasikan konstanta.
- Kelas abstrak digunakan oleh kelas lain melalui metode pewarisan dengan kata kunci extends, sedangkan sebuah interface diimplementasikan ke dalam suatu class dengan menggunakan kata kunci implements, dan sebuah kelas dapat mengimplementasikan lebih dari satu interface.
No comments :
Post a Comment