M8-InterfaceAbstractClass

31
INTERFACE & ABSTRACT INTERFACE & ABSTRACT CLASS CLASS Object Oriented Programming with JAVA 2011/2012

description

PBO

Transcript of M8-InterfaceAbstractClass

Page 1: M8-InterfaceAbstractClass

INTERFACE & ABSTRACT INTERFACE & ABSTRACT CLASSCLASSObject Oriented Programming with JAVA2011/2012

Page 2: M8-InterfaceAbstractClass

TopicsTopicsAbstract classInterface

Page 3: M8-InterfaceAbstractClass

Apakah abstract class Apakah abstract class itu?itu?

Page 4: M8-InterfaceAbstractClass

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

Page 5: M8-InterfaceAbstractClass

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

Page 6: M8-InterfaceAbstractClass

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();

}

Page 7: M8-InterfaceAbstractClass

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...");

}

}

Page 8: M8-InterfaceAbstractClass

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

Page 9: M8-InterfaceAbstractClass

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"); }}

Page 10: M8-InterfaceAbstractClass

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 :

Page 11: M8-InterfaceAbstractClass

Apakah interface itu?Apakah interface itu?

Page 12: M8-InterfaceAbstractClass

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.

Page 13: M8-InterfaceAbstractClass

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

Page 14: M8-InterfaceAbstractClass

Deklarasi InterfaceDeklarasi InterfaceSyntax :

Contoh : (interface kosong)

public interface [InterfaceName] {

//beberapa method tanpa body

}

public interface Facsimile{ }

Page 15: M8-InterfaceAbstractClass

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();}

Page 16: M8-InterfaceAbstractClass

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.

Page 17: M8-InterfaceAbstractClass

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

}

Page 18: M8-InterfaceAbstractClass

Mengimplementasikan Mengimplementasikan InterfaceInterface

Page 19: M8-InterfaceAbstractClass

ImplementasiImplementasi Interface InterfaceUntuk membuat concrete class yang

mengimplementasi interface, gunakan keyword implements

Syarat : seluruh method abstract yang ada pada interface harus dideklarasi ulang didalam class yang mengimplementasikannya.

Syntax :class [className] implements [interfaceName]{ //overiding abstract method

//dan beberapa kode yang lain}

Page 20: M8-InterfaceAbstractClass

Contoh : Implementasi Contoh : Implementasi InterfaceInterface

public class Printer implements Facsimile{ boolean dialPhone (String number){

return true; } void getDocument(int nDoc){ } boolean sendDocument(int nDoc){

return true; } void closePhone(){ }

}

public interface Facsimile{ int dotPerInches = 90; boolean dialPhone (String number); void getDocument(int nDoc); boolean sendDocument(int nDoc); void closePhone();}

Page 21: M8-InterfaceAbstractClass

Contoh Contoh Mengimplementasi Mengimplementasi interfaceinterface

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 ...

}

Page 22: M8-InterfaceAbstractClass

Contoh Contoh Mengimplementasi Mengimplementasi interfaceinterface

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); } }

Page 23: M8-InterfaceAbstractClass

LatihanLatihanBuatlah abstract class “MakhlukHidup”, memiliki

method : bernafas() return type boolean, dan method berbicara() yang merupakan abstract method.

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.

Page 24: M8-InterfaceAbstractClass

Multi-implementsMulti-implementsSebuah class dapat melakukan

implements lebih dari satu interface.Contoh :

Class Person implements terhadap 3 interface sekaligus, yaitu : PersonInterface, LivingThing dan WhateverInterface.

class Person implements PersonInterface,LivingThing, WhateverInterface {

//beberapa kode disini }

Page 25: M8-InterfaceAbstractClass

Inheritance pada InterfaceInheritance pada InterfaceInterface dapat memiliki hubungan

inheritance antar mereka sendiri.Menggunakan keyword “extends”.Contoh :

interface PersonInterface merupakan superinterface dari student interface.

public interface PersonInterface {. . .

}

public interface StudentInterface extends PersonInterface {

. . .}

Page 26: M8-InterfaceAbstractClass

Implements SubInterfaceImplements SubInterfaceSebuah class yang mengimplementasikan

subinterface wajib mendeklarasi ulang seluruh method yang ada pada subinterface tersebut dan juga method yang ada pada superinterface-nya.

Contoh :

Karena StudentInterface merupakan subclass dari PersonInterface maka class Mahasiswa harus mendeklarasi ulang semua method abstract yang dimiliki oleh kedua interface tersebut.

Class Mahasiswa implements StudentInterface {. . .

}

Page 27: M8-InterfaceAbstractClass

Contoh Multiple-Contoh Multiple-ImplementsImplements

public interface PersonInterface { public void setNama(String nama);}

public interface StudentInterface extends PersonInterface{ public void setSekolah(String sekolah);}

public abstract class Mahasiswa implements StudentInterface

{ public abstract void isiBiodata(String nama, int nilai);

public void setSekolah(String skul){ } public void setNama (String nam){ }}

Page 28: M8-InterfaceAbstractClass

LatihanLatihanTerdapat sebuah interface dengan deklarasi berikut :public interface MesinATM{ void keluarkanUang(double nominal);}Berdasarkan interface di atas, buatlah : Kelas

bernama ATMBankSukses yang mengimplementaskan interface MesinATM. Kelas ATMBankSukses memiliki :

◦ Atribut (private) : kodeTransaksi (String) dan tanggalTransaksi (Date)

◦ Konstruktor (kodeTransaksi, tanggalTransaksi)◦ Method get dan set untuk seluruh atribut◦ Implementasi method keluarkanUang adalah menampilkan ke

layar : “Anda telah melakukan pengambilan uang sebesar [nominal]”.

Page 29: M8-InterfaceAbstractClass

Interface sebagai type Interface sebagai type data referencedata reference

Ketika mendifinisikan interface baru, berarti telah mendefinisikan reference type baru

Interface sebagai reference type dapat digunakan dimanapun seperti reference type lainnya

Jika kita membuat variable bertipe interface, maka object yang di-assign ke variable tersebut harus dari class yang mengimplementasi interface yang bersangkutan

Page 30: M8-InterfaceAbstractClass

Contoh: interface sebagai typeContoh: interface sebagai type data data referencereference

Sebagai contoh class Manusia mengimplementasi interface InterfaceManusia

Maka◦Manusia m1 = new Manusia();

• InterfaceManusia im1 = m1;

• InterfaceManusia im2 = new Manusia();

Page 31: M8-InterfaceAbstractClass

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.