INTERFACE & ABSTRACT INTERFACE & ABSTRACT CLASSCLASSObject Oriented Programming with JAVA2011/2012
TopicsTopicsAbstract classInterface
Apakah abstract class Apakah abstract class itu?itu?
Method yang tidak memiliki implementasi (body)
Untuk membuat abstract method, hanya tuliskan deklarasi method tanpa bodi, dan gunakan abstract keyword
- tidak ada { }
Sebagai contoh: //ingat tidak ada { }
public abstract void someMethod();
Abstract methodAbstract method
Abstract ClassAbstract ClassAbstract class adalah class yang
memiliki minimal satu abstract methodAbstract class tidak bisa dibuat instance-
nya (tidak bisa dibuat objectnya)◦//kode di bawah ini menyebabkan compilation error
MyAbstractClass a1 = new MyAbstractClass();
Untuk menggunakan abstract class, digunakan class lain (concrete class) -concrete class harus mengimplementasi semua abstract method-concrete class menggunakan extends keyword
Contoh abstract classContoh abstract classpublic abstract class MakhlukHidup {
public void bernafas(){
System.out.println("Makhluk hidup bernafas...");
}
public void makan(){
System.out.println("Makhluk hidup makan...");
}
/**
* Abstract method berjalan()
* Kita ingin mengimplementasi method ini melalui Concrete Class
*/
public abstract void berjalan();
}
Extending abstExtending abstrract classact classKetika concrete class mengimplementasi
abstract class MakhlukHidup, maka concrete class tersebut harus mengimplementasi method berjalan(). Jika tidak, maka class tersebut akan jadi abstract class juga, sehingga tidak dapat diinstansiasi / dibuat objectnya.
Contohnya
public class Manusia extends MakhlukHidup {
public void berjalan(){
System.out.println("Manusia berjalan...");
}
}
Kapan menggunakan Abstract Method Kapan menggunakan Abstract Method dan Abstract Class?dan Abstract Class?Abstract method digunakan ketika dua
atau lebih subclass dirancang untuk memenuhi aturan yang sama dengan implementasi yang berbeda
- Subclass-subclass ini mengextend abstract class yang sama namun dengan implementasi yang berbeda pada abstract methodnya.
Menggunakan abstract class sebagai konsep umum pada top level class hierarki, dan menggunakan banyak subclass untuk membuat detail implementasi abstract class
Contoh ImplementasiContoh Implementasipublic abstract class Printer { public abstract void printing(); public void scanner(){ }}
public class Canon extends Printer{ public void printing(){ System.out.println("nge-print pakai tinta"); }}
public class Samsung extends Printer { public void fotocopy(){ System.out.println("Bisa buat fotocopy"); } public void printing(){ System.out.println("nge-print pakai carbon"); }}
LatihanLatihanBuatlah sebuah class abstract bernama Mahasiswa
memiliki method sbb :◦ isiBiodata(String nama, int nilai) sebagai method abstract
◦ registrasi(), menampilkan tulisan ke layar : “nama.......telah melakukan registrasi”
◦ testMasuk(), menampilkan tulisan ke layar : “nilai test anda .......”
Tambahkan variabel nama dan nilai pada Mahasiswa Buatlah class MahasiswaBaru yang melakukan
extending dari class Mahasiswa. Deklarasi ulang method isiBiodata, bodi method akan menampilkan ke layar biodata anda (“nama:......, nilai : ......,pilihan jurusan:,........asal sekolah : ......”)
Tambahkan main method pada MahasiswaBaru sehingga output sbb :
Apakah interface itu?Apakah interface itu?
InterfaceInterfaceMenggambarkan cara standart
tentang behavior-behavior maupun atribut yang dimiliki oleh class.
Memungkinkan bagi class, dimanapun dia berada, untuk mengimplementasi standar tingkah laku
Untuk model multi inheritance yang mengijinkan sebuah class dapat memiliki lebih dari satu superclass.
InterfaceInterfaceDiawali dengan keyword “interface”.
Ingat! Bukan keyword “class”.
Berisi method abstract (dapat juga dilengkapi dengan konstanta).
- Mendefinisikan tingkah laku dari sekumpulan method, tanpa ada body (implementasi dari method)
Concrete class harus mengimplementasi semua abstract method
Deklarasi InterfaceDeklarasi InterfaceSyntax :
Contoh : (interface kosong)
public interface [InterfaceName] {
//beberapa method tanpa body
}
public interface Facsimile{ }
Contoh InterfaceContoh Interface
Interface facsimile memiliki member : 1 konstanta, 4 method abstract.
public interface Facsimile{ int dotPerInches = 90; boolean dialPhone (String number); void getDocument(int nDoc); boolean sendDocument(int nDoc); void closePhone();}
LatihanLatihanBuatlah interface dengan nama
OperasiMobil , memiliki beberapa method sbb :
belok(Arah arah, double radius, double kecAwal, double kecAkhir), bertipe int
gantiJalur(Arah arah, double kecAwal, double kecAkhir), bertipe int
signalBelok(Arah arah, boolean signalOn)
dapatRadarFront(double jarakKeMobil, double kecMobil), bertipe int
dapatRadarRear(double jarakKeMobil, double kecMobil), bertipe int
Interface tersebut juga memiliki satu variabel yaitu merekMobil bertipe String.
Contoh interfaceContoh interface
public interface OperasiMobil {
// deklarasi konstan bila ada
// method signatures
String merekMobil=“Avanza”;
int belok(Arah arah, double radius, double kecAwal, double kecAkhir);
int gantiJalur(Arah arah, double kecAwal, double kecAkhir);
int signalBelok(Arah arah, boolean signalOn);
int dapatRadarFront(double jarakKeMobil, double kecMobil);
int dapatRadarRear(double jarakKeMobil, double kecMobil);
......
// more method signatures
}
Mengimplementasikan Mengimplementasikan InterfaceInterface
Mengimplementasi interfaceMengimplementasi interface
Untuk membuat concrete class yang mengimplementasi interface, gunakan keyword implements
/** * Class Garis mengimplementasi interface Perbandingan */ public class Garis implements Perbandingan { private double x1; private double x2; private double y1; private double y2; public Garis(double x1, double x2, double y1, double y2){
this.x1 = x1; this.x2 = x2; this.y1 = y1; this.y2 = y2; } // Kode lainnya ...
}
Mengimplementasi interfaceMengimplementasi interface public double dapatPanjang(){ double panjang = Math.sqrt((x2-x1)*(x2-x1) + (y2-y1)* (y2-y1)); return panjang; } public boolean lbhBesar( Object a, Object b){ double aPjg = ((Garis)a).dapatPanjang(); double bPjg = ((Garis)b).dapatPanjang(); return (aPjg > bPjg); } public boolean lbhKecil( Object a, Object b){ double aPjg = ((Garis)a).dapatPanjang(); double bPjg = ((Garis)b).dapatPanjang(); return (aPjg < bPjg); } public boolean samaDengan( Object a, Object b){ double aPjg = ((Garis)a).dapatPanjang(); double bPjg = ((Garis)b).dapatPanjang(); return (aPjg == bPjg); } }
LatihanLatihan- Deklarasikan abstract class dan interface yg
keduanya memiliki method sbb :
- lbhBesar(Object x, Object y), jika x > y maka tampilkan (“lebih besar”)
- lbhKecil(Object x, Object y), jika x < y maka tampilkan (“lebih kecil”)
-samaDengan(Object x, Object y), jika x = y maka tampilkan (“sama dengan”)
- Deklarasikan 2 concrete class : Class Garis dan Class MyInteger
- Lakukan extending atau implementasi masing-masing abstract class maupun interface tersebut pada kedua class concrete diatas.
LatihanLatihanBuatlah abstract class “MakhlukHidup”, memiliki
method : bernafas() return type boolean, dan method berbicara() yang merupakan abstract class.
Buatlah interface “Aves” memiliki method : terbang() memiliki return type boolean, sayap=true
Buatlah interface “Kuda” memiliki atribut kaki=4, method : berjalan()
Buatlah class “Elang” yang melakukan extending pada class MakhlukHidup dan interface Aves.
Buatlah class “KudaTerbang” yang mengimplementasikan abstract class MakhlukHidup dan kedua interface diatas.
KesimpulanKesimpulanUntuk membuat interface
keyword yang dipakai adalah interface.
Sedangkan untuk menggunakannya keyword yang dipakai adalah implements.
Interface dapat digunakan untuk mengatasi permasalah multiple inheritance pada java.