KELAS INNER, KELAS ABSTRACT, DAN INTERFACE Pemrograman Berorientasi Objek 1
Feb 08, 2016
KELAS INNER, KELAS ABSTRACT, DAN INTERFACE
Pemrograman Berorientasi Objek 1
Class yang dideklarasikan di dalam class
class X { …
[modifier akses ] class Y { ….}
… }
Menghasilkan dua file *.class, yaitu Outer.class dan Outer$Inner.class
INNER KELASPemrograman Berorientasi Objek 1
Outer class
Inner class
X.classX$Y.class
Pemrograman Berorientasi Objek 1
Inner class merupakan bagian dari kelas, maka diperlakukan seperti member class lainnya
Inner dapat mengakses semua member dari outer class, begitu juga sebaliknya
Inner class digunakan selayaknya class normal, tapi inner class ini dapat digunakan di luar outer classnya tergantung modifier aksesnya.
Inner kelas
Pemrograman Berorientasi Objek 1
class Buku {private int nomor;
private String judul;class Bab {
private int noBab;public String getBab() { return "nomor buku: "+nomor+", judul buku:
"+judul+", nomor Bab: "+noBab;
}}private Bab bab = new Bab();public void setBab(int nomor,String judul,int noBab ) {
this.nomor = nomor;this.judul = judul;bab.noBab = noBab;
}public void cetak(){
System.out.println(bab.getBab());}
}
Contoh Inner kelas
Pemrograman Berorientasi Objek 1
class DemoBuku {public static void main(String[] args) {
Buku buku = new Buku();
buku.setBab(10,”PBO 1”,6) buku.cetak();
}}
Contoh Inner kelas
Pemrograman Berorientasi Objek 1
Suatu kelas yang dinyatakan abstract yang umumnya memiliki satu atau lebih abstract method
Abstract method adalah suatu method yang belum memiliki implementasi dan menggunakan modifier abstract.
Abstract class biasanya dijadikan parent atau super class dari kelas-kelas yang dapat membuat object. (tidak dapat membuat object dari abstrak class)
ABSTRACT CLASS
Pemrograman Berorientasi Objek 1
Suatu kelas dapat diinstansiasi menjadi objek, misal kelas Dosen dapat diinstansiasi menjadi wilis, bayu, lina, namun tidak mungkin dapat menginstansiasi kelas MahlukHidup, kelas Hewan, dan kelas Manusia, sebab kelas tersebut terlalu umum (abstract), kelas seperti inilah yang disebut kelas abstract. Dibutuhkan kelas turunan yang lebih khusus.
Analogi Kelas yang Abstract
Dosen wilis
bayu
lina
MakhlukHidup Hewan
Pemrograman Berorientasi Objek 1
Bila kelas MahlukHidup mempunyai method bernafas, maka tidak dapat ditentukan cara suatu mahluk hidup tersebut bernafas (dengan paru-paru, insang, atau stomata), method seperti inilah yang disebut method abstract. Dibutuhkan kelas turunan yang khusus dan method override dari method yang abstract
Analogi Method yang Abstract
Pemrograman Berorientasi Objek 1
abstract class A {abstract public void method2();//method konkrit yg memiliki implementasipublic void method1() {
System.out.println(”Method konkrit dari class A”);}
}class B extends A {
public void method2() {System.out.println(”Method abstrak yang sudah
menjadi konkrit dalam class B”);}
}class DemoAbstrak {
public static void main(String[] args) {B ob = new B();ob.method1();ob.method2();
}}
Contoh Abstract Class
Pemrograman Berorientasi Objek 1
kelas yang berisi method-method tanpa implementasi, namun tanpa modifier abstract, apabila suatu interface memiliki atribut, maka atributnya akan berlaku sebagai konstanta (static final).
INTERFACE
Pemrograman Berorientasi Objek 1
Interface dapat dianalogikan sebagai kontrak yang dapat dipakai oleh setiap kelas.
Dengan demikian untuk membuat objek seorang budi bekerja sebagai dosen, harus dibuat kelas yang merupakan turunan kelas manusia yang meng-implementasikan interface dosen.
Analogi Interface
Pemrograman Berorientasi Objek 1
Bentuk umum deklarasi:[modifier] interface NamaInterface { // deklarasi konstanta // deklarasi method}
Catatan : modifier static tidak boleh digunakan dalam interface
Deklarasi Interface
Pemrograman Berorientasi Objek 1
Bentuk umum implementasi :[modifier] class NamaKelas implements NamaInterface { // penggunaan konstanta // implementasi method}
Implementasi Interface
Pemrograman Berorientasi Objek 1
Interface vs Class komponen interface class
definisi daftar deklarasi method
model objek
kandunganinformasi
isi/implementasi semua methodnya berada di luar interface ini
mendefinisikan attribute dan method secara rinci dan konkret
instansiasi tidak boleh boleh
Pemrograman Berorientasi Objek 1
Inheritance adalah proses pewarisan attribute dan method dari satu kelas super kepada satu/lebih subkelas.Syntax kelas yang menggunakan lebih dari satu interface :[modifier] class NamaKelas implements NamaInterface1, NamaInterface2, … { //interfaceBody}
Interface vs Inheritance
Pemrograman Berorientasi Objek 1
Interface vs Abstract Classkomponen interface abstract class
attribute hanya berupa konstanta
bebas memilki tipe data apa saja
method berupa deklarasi boleh deklarasi, boleh berupa method lengkap
syntax seluruhnya abstract (berupa deklarasi)
sebagian abstract
Pemrograman Berorientasi Objek 1
interface Queue { public void push(int e);
public int pop();
public void printQ();}
Contoh Interface
Pemrograman Berorientasi Objek 1public class Fifo implements
Queue { int bucket[]; int max; int head;
public Fifo() { bucket = new int[10]; max = 10; head = -1; }
public Fifo(int size) { bucket = new int[size]; max = size; head = -1; }
public void push(int e) { if ( head == max - 1) { System.out.println("Queue
sudah penuh!"); } else { for (int i = head; i >= 0; i--) { bucket[i+1] = bucket[i]; } bucket[0] = e; head++; System.out.println("Nilai " + e
+ " dimasukkan ke queue"); } }
Pemrograman Berorientasi Objek 1
public class Lifo implements Queue { int bucket[]; int max; int head; public Lifo() { bucket = new int[10]; max = 10; head = -1; } public Lifo(int size) { bucket = new int[size]; max = size; head = -1; } public void push(int e) { if (head == max - 1) { System.out.println("Queue sudah
penuh!"); } else { bucket[++head] = e; System.out.println("Nilai " + e + "
dimasukkan ke queue"); } }
public int pop() { if (head == -1) { System.out.println("Queue sudah
kosong!"); return -1; } else { return bucket[head--]; } }
public void printQ() { System.out.print("Isi queue: "); for (int i = 0; i <= head; i++) { System.out.print(bucket[i] + " "); } System.out.println(); }}
Pemrograman Berorientasi Objek 1public class TestFifo {
public static void main(String argv[]) {
Fifo q = new Fifo(4); q.printQ(); q.push(1); q.push(2); q.push(3); q.push(4); q.push(5); q.printQ(); System.out.println(q.pop()); System.out.println(q.pop()); System.out.println(q.pop()); System.out.println(q.pop()); System.out.println(q.pop());
q.printQ(); q.push(1); q.push(2); System.out.println(q.pop()); q.push(3); q.printQ(); }}
Pemrograman Berorientasi Objek 1
public class TestLifo { public static void
main(String argv[]) { Lifo q = new Lifo(4); q.printQ(); q.push(1); q.push(2); q.push(3); q.push(4); q.push(5); q.printQ();
System.out.println(q.pop()); System.out.println(q.pop()); System.out.println(q.pop()); System.out.println(q.pop()); System.out.println(q.pop()); q.printQ(); q.push(1); q.push(2); System.out.println(q.pop()); q.push(3); q.printQ(); }}
Pemrograman Berorientasi Objek 1
abstract class Hewan { protected String nama; protected int jumKaki; protected boolean bisaTerbang = false; public Hewan(String nama, int kaki, boolean terbang) {
this.nama = nama; jumKaki = kaki; bisaTerbang = terbang; } public abstract void bersuara(); public static void makan() { System.out.println("nyam, nyam, nyam"); } public void isHewan() { System.out.println("nama : "+nama); System.out.println("jumlah kaki : "+jumKaki); System.out.println("bisa terbang : "+bisaTerbang);
}}
Contoh lain: Abstract ClassHewan.java
Pemrograman Berorientasi Objek 1
class Perkutut extends Hewan { public Perkutut() { super("perkutut",2,true); } public void bersuara() { System.out.println("\ncuit, cuit, cuit"); } public static void main(String[] args) { Perkutut p = new Perkutut(); p.isHewan(); p.bersuara(); }}
Output :
Perkutut.java
Pemrograman Berorientasi Objek 1
class Sapi extends Hewan { public Sapi() { super("sapi", 4, false); } public void bersuara() { System.out.println("\nemoh…,emoh.."); } public static void main(String[] args) { Sapi s = new Sapi(); s.isHewan(); s.bersuara(); }}
Output :
Sapi.java
Pemrograman Berorientasi Objek 1
interface Manusia { public void menyanyi(); public void ketawa();}
SpongeBob.javaclass SpongeBob extends Hewan implements Manusia { public SpongeBob() { super("sponge bob", 2, false);} public void bersuara() { System.out.println("\nhallo patrict..");} public void menyanyi() { System.out.println("nye, nye, nye, wik, wik, wik");} public void ketawa() { System.out.println("kek, kek, kek"); } public static void makan() { System.out.println("uenak tenan.."); } public void makan2() { super.makan(); }
Contoh lain: Interface
Manusia.java
Pemrograman Berorientasi Objek 1
public static void main(String[] args) { SpongeBob s= new SpongeBob(); s.isHewan(); s.bersuara(); s.menyanyi(); s.ketawa(); s.makan2(); Hewan.makan(); makan(); }}
Output :
Lanjutan SpongeBob.java