bahasa pemrograman 2 - 7 - lecturer.ukdw.ac.idlecturer.ukdw.ac.id/anton/download/bp27.pdf ·...

32
Bahasa Pemrograman 2 Abstract & Interface Abstract & Interface [email protected]

Upload: hoangkhuong

Post on 12-Mar-2019

239 views

Category:

Documents


0 download

TRANSCRIPT

Bahasa Pemrograman 2

Abstract & InterfaceAbstract & [email protected]

Ab t t Cl [1] Abstract Class [1]

• Saat kita membuat sebuah superclass, kita tahu bahwa kita dapat menurunkan semua tahu bahwa kita dapat menurunkan semua metode yang dimilikinya pada class anaknya.a a ya.

• Atau kalau kita butuh metode tersebut diperbarui kita tinggal melakukan overridediperbarui, kita tinggal melakukan overridepada metode tersebut pada subclassnya.

• Tapi ada kasus dimana ada satu/lebih• Tapi ada kasus dimana ada satu/lebihmetode saja yang harus dioverride

Ab t t Cl [2] Abstract Class [2]

• Misalkan method bersuara() pada class Binatang (contoh pertemuan kemarin)Binatang (contoh pertemuan kemarin)

• Method bersuara seharusnya dioverridekarena tidak memiliki bentuk di class binatang karena tidak memiliki bentuk di class binatang (-> tergantung jenis binatangnya)

• Untuk membuat method bersuara harus• Untuk membuat method bersuara harusdioverride, maka method tersebut perlu dibuat menjadi abstractdibuat menjadi abstract.

• abstract = tak berbentuk.

Ab t t Cl [3] Abstract Class [3]

• Penulisan abstract method adalah sebagai berikut:

public abstract String bersuara();

• Untuk selanjutnya, method ini disebut sebagai abstract method atau prototype methodabstract method atau prototype method

• Dapat kita lihat bahwa method bersuara:tidak memiliki ‘tubuh’/implementasi method– tidak memiliki tubuh /implementasi method.

– menggunakan keyword abstract.

Ab t t Cl [4] Abstract Class [4]

• Jika kita paksa untuk memiliki tubuh program seperti ini:seperti ini:

public abstract String bersuara(){

System.out.println(“weee…”);}

• Maka akan terjadi error:abstract methods cannot have a body

Ab t t Cl [5] Abstract Class [5]

• Apabila abstract method bersuara tadi kita tambahkan ke class Binatang yang sudah kita tambahkan ke class Binatang yang sudah kita buat, maka akan muncul error: Binatang is not abstract and does notBinatang is not abstract and does not override abstract method bersuara() in binatangg

• Pemecahannya adalah dengan mengubah class Binatang menjadi sebuah abstract classclass Binatang menjadi sebuah abstract class.(Bila ada abstract methods dalam satu class, maka class tersebut harus abstract juga)class tersebut harus abstract juga)

Ab t t Cl [6] Abstract Class [6] abstract class Binatang {

public abstract String bersuara();public abstract String bersuara();public void makan(int x){

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

}}

Binatang abstract classBinatang abstract class

KucingAnjing

Ab t t Cl [7] Abstract Class [7]

• Abstract class ini tidak bisa diinstansiasi(karena memiliki method yang abstract)(karena memiliki method yang abstract)

• Questions:A k h d l b h b t t l b l h – Apakah dalam sebuah abstract class boleh tak memiliki abstract methods sama sekali?

– Bagaimana jika sebuah abstract class memiliki constructor? Bagaimana fungsi dan pemakaian constructor tersebut?

Constructor of Abstract ClassConstructor of Abstract Class

Setiap class dalam Java pasti memiliki konstruktor secara default!

Contoh yg ErrorContoh yg Error

Tidak ada method abstrak!

Contoh yang benarContoh yang benar

ContohContoh

InterfaceInterface• Interface K l f i/k t t tid k b i i• Interface:  Kumpulan fungsi/konstanta yang tidak berisi

implementasi

• Contoh:

public interface mp3Player {public interface mp3Player {public static final int STATUS;List TRACKLIST; //final dan staticid l T k()void playTrack();

void stopTrack();void volumeUp();p();void volumeDown();

}

I t f [1] Interface[1]

• Interface adalah sebuah blok yang berisi deklarasi metode untuk diimplementasikan di deklarasi metode untuk diimplementasikan di class lain.– Tidak ada tubuh methodTidak ada tubuh method

• Berarti semua metode dalam interface adalah abstractabstract.

• Tapi pada pendeklarasiannya tidak perlu menggunakan keyword abstractmenggunakan keyword abstract.

I t f [2] Interface[2]

• Fungsinya adalah membuat suatu class yang bisa diimplementasikan oleh berbagai class bisa diimplementasikan oleh berbagai class lain yang tidak berelasi sama sekali.

• Contoh:• Contoh:public interface kamera{{

public void setPixel(float pixel);public void ambilGambar();

}

I t f [3] Interface[3]

• Interface digunakan untuk mendukung multiple inheritance (satu class memiliki multiple inheritance (satu class memiliki superclass lebih dari satu)

• Selain bisa mendeklarasikan method abstract • Selain bisa mendeklarasikan method abstract, di dalam interface juga dapat diberikan attribute final (konstanta)attribute final (konstanta).

• Konstanta ini juga diwariskan kepada class yang mengimplementasikan interface tersebutyang mengimplementasikan interface tersebut.

Pewarisan InterfacePewarisan Interface

• Suatu interface juga dapat mewarisi interface yang lain, seperti pewarisan biasay g p ppublic interface NamaInterface extends InterfaceA InterfaceB{extends InterfaceA, InterfaceB{...}

InterfaceInterface

public class Handphone implements MP3Player, GPS, InternetDevice {…

}}  

InterfaceInterface

• Class yang mengimplementasikan suatu interface harus mendeklarasikan seluruhmethod yang ada di interface.  

• Jika tidak maka class tersebut harus• Jika tidak maka class tersebut harus dideklarasikan sebagai sebuah abstract class

Bentuk Umum InterfaceBentuk Umum Interface

Menggunakan InterfaceMenggunakan Interface

• class NamaKelas [extends NamaKelasSuper ] implements NamaInterface1, NamaInterface2implements NamaInterface1, NamaInterface2 {

...}}

Contoh lain InterfaceContoh lain Interface

Mengapa InterfaceMengapa Interface

• Mengapa dibutuhkan interface? Dalam bahasa pemrograman lain seperti C++, dikenal istilah p g pmultiple‐inheritance, – artinya sebuah objek bisa diturunkan dari dua– artinya sebuah objek bisa diturunkan dari dua atau lebih objek berbeda. Misalnya, objek X memiliki super kelas A dan Bmemiliki super kelas A dan B. 

• Pada Java, hal ini tidak dimungkinkan, karena objek hanya bisa extends dari 1 objek saja, dan disinilah interface Java menjadi solusinya

Aturan InterfaceAturan Interface• K l i l t ik interface h i i• Kelas yang mengimplementasikan interface, hanya mewarisi 

konstanta dari kelas interface, tidak seperti kelas turanan yang semua anggota baik variabelmaupun metode akan diwariskan ke anaknyaanaknya.

• Kelas yang mengimplementasikan intrerface tidak mewarisi t d b k i t f k i k l ilikimetode yang bukan interface, yakni kelas yang memiliki 

implementasi pada kelas interface. • Pada kelas turunan, akan diwarisi semua fungsi yang ada baik yang 

b k d i i d k labstrakmaupun yang ada imptementasinya pada super kelasnya.

• Hirarki kelas independen, yaitu kelas interface dengan kelas yang p , y g y gmengimplementasikannya bisa saling tidak berelasi.

I t f b t t[1] Interface vs abstract[1] • Penggunaan keyword extends dan

implements adalah salah satu perbedaan dari keduanya.

• Semua methods di interface itu abstract, tapi hanya beberapa atau mungkin hanya satu methods yang abstract di abstract class.

• abstract class bisa mengimplementasikan interface, tapi interface tak bisa mewarisi

b t t labstract class.• abstract dapat mendeklarasikan variabel

i t i t f h d t b k t tinstan, interface hanya dpt berupa konstanta

ExerciseExercise

d d l d l• Terdapat dua class, A dan B.  Class A mendapatkan atribut dari class B.  Karena ituclass A merupakan ________ class B, atauclass B merupakan ________ class A.

• Jika class A memiliki atribut a1 dan a2Jika class A memiliki atribut a1 dan a2, method getA1(), getA2(). Class B memilikiatribut b1 dan b2 method getB1() getB2()atribut b1 dan b2, method getB1(), getB2().  Tuliskan kodenya dalam Java 

ExerciseExercise

ExerciseExercise

• Dari diagram relasi kelas tersebut, misalkansebuah obyek (z) dibuat dari kelas F, tentukany ( )class dari method printLine() yang dipanggil:

• z.printLine(1);• z.printLine(2, “OOP”);

i tLi (“J ”)• z.printLine(“Java”);• z.printLine(“OOP”, “Java”);

ExerciseExercise

ExerciseExercise

• Apa outputnya?

NEXTNEXT

• Polimorfisme