ABSTRACT CLASS Imam Fahrur Rozi
ABSTRACT CLASS Abstract class adalah class yang mempunyai setidaknya satu abstract method. Abstract method adalah method yang tidak memiliki body (hanya deklarasi method). Implementasi dari isi abstract method tersebut dilakukan pada subclass
ABSTRACT CLASS Bila subclass method abstract tidak mengimplementasikan isi semua method maka subclass tersebut harus dideklarasikan abstract. Dan Deklarasi method abstract pada subclass tersebut boleh tidak dituliskan kembali
ABSTRACT CLASS Abstract class tidak bisa dibuat objectnya Object hanya bisa dibuat dari non-abstract class (concrete class) Konsekuensinya suatu abstract class haruslah diturunkan dimana pada subclass tersebut berisi implementasi dari abstract method yang ada di superclass
ABSTRACT VS CONCRETE CLASS ABSTRACT CLASS : Tidak bisa diinstansiasi mjd objek. Kecuali setelah diturunkan dulu. CONCRETE CLASS : Class yang bisa langsung diinstansiasi menjadi objek
KAPAN DIGUNAKAN ABSTRACT CLASS? Ketika diinginkan membuat satu class yang hanya berfungsi sebagai abstraksi (model yang umum) dan tidak diinginkan untuk diinstansiasi suatu objek darinya.
NOTASI ABSTRACT CLASS DI UML Baik klas atau method yang bertipe abstract maka ditulis dengan abjad miring / italic
MISAL Bentuk bangun datara masih sangat luas dan abstrak, karena bentuknya blm spesifik. Jadi tidak ada objek yang ingin langsung dibuat darinya Objek yang dibuat adalah objek dari SegiTigaSiku dan SegiEmpat
DEKLARASI ABSTRACT CLASS Dengan menuliskan keyword abstract didepan keyword class Contoh: public abstact class BangunDatar{ }
DEKLARASI ABSTRACT METHOD Dengan memberikan keyword abstract sebelum menuliskan tipedata fungsi/method Contoh public abstract void hitungLuas();
INGAT … Di dalam abstract class boleh ada deklarasi method non abstract (yang sudah ada isinya/implementasinya) Jika suatu dalam suatu class ada method abstract, maka class tersebut juga harus dideklarasikan abstract Unistanciable/tak bisa diinstansiasi
INTERFACE
INTERFACE Terdiri dari konstanta dan method tanpa implementasi Interface menyerupai class public interface NamaInterface{ //method tanpa implementasi //definisi konstanta } Public supaya bisa diakses dimana saja Tanpa public default hanya bisa diakses dalam satu package
INTERFACE Class yang mengimplementasikan interface, semua konstanta dan method interface akan dimiliki oleh class ini. Method pada interface harus diimplementasikan pada class yang mengimplementasikan interface ini. Bila class yang mengimplementasikan interface tidak menginplemetasikan semua method dalam interface, makaclass tersebut harus dideklarasikan abstract.
INTERFACE Kita bisa membuat subinterface dengan menggunakan kata extends. Satu class boleh mengimplementasikan lebih dari satu interface. Bila suatu class merupakan subclass dan akan mengimplementasikan interface maka kata extends harus lebih dulu dari implements
INTERFACE Method yang dideklarasikan didalam interface secara otomatis adalah public dan abstract. Variable dalam interface secara otomatis adalah public, static, dan final
DEKLARASI INTERFACE public interface NamaInterface{ //deklarasi konstanta //deklarasi abstract method }
CLASS IMPLEMENTS INTERFACE Contoh: public class SegiEmpat extends BangunDatar implements Resizable { …….. }
INTERFACE di UML Mirip simbol Class tapi di atas nama ada stereotype <<interface>>
IMPLEMENTATION di UML Relasi Implementasi (ketika suatu Class implements ke Interface), mirip seperti inheritance, tapi garis panahnya putus2.
CONTOH
MULTIPLE IMPLEMENTATION
INHERITANCE + IMPLEMENTATION
This sounds like multiple inheritance. Not quite This sounds like multiple inheritance. Not quite. The danger of multiple inheritance is that a class could inherit two distinct implementations of the same method. This is not possibble with interfaces because an interface method declaration supplies no implementation
CONTOH INTERFACE
MULTIPLE INTERFACE
A class can implement more than one interface A class can implement more than one interface. Not only can the SeaPlane fly, but it can also sail. The SeaPlane class extends the Airplane class, so it inherits that implementation of the Flyer interface. The SeaPlane class also implements the Sailer interface