Download 6 INNER AND ABSTRACT CLASS

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Pemrograman Berorientasi Objek 1
Pemrograman Berorientasi Objek 1

Class yang dideklarasikan di dalam class
Outer class

class X {
…
[modifier akses ] class Y {
….
}
…
}
Inner class
Menghasilkan dua file *.class, yaitu
Outer.class dan Outer$Inner.class
X.class
X$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.
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());
}
}
Pemrograman Berorientasi Objek 1
class DemoBuku {
public static void main(String[] args) {
Buku buku = new Buku();
buku.setBab(10,”PBO 1”,6)
buku.cetak();
}
}
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)
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.
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
Pemrograman Berorientasi Objek 1
abstract class A {
abstract public void method2();
//method konkrit yg memiliki implementasi
public 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();
}
}
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).
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.
Pemrograman Berorientasi Objek 1
Bentuk umum deklarasi:
[modifier] interface NamaInterface {
// deklarasi konstanta
// deklarasi method
}
Catatan : modifier static tidak boleh
digunakan dalam interface
Pemrograman Berorientasi Objek 1
Bentuk umum implementasi :
[modifier] class NamaKelas implements
NamaInterface {
// penggunaan konstanta
// implementasi method
}
Pemrograman Berorientasi Objek 1
komponen
definisi
kandungan
informasi
instansiasi
interface
daftar deklarasi
method
isi/implementasi
semua
methodnya
berada di luar
interface ini
tidak boleh
class
model objek
mendefinisikan
attribute dan
method secara
rinci dan
konkret
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
}
Pemrograman Berorientasi Objek 1
komponen
interface
abstract class
attribute
hanya berupa
konstanta
bebas memilki tipe
data apa saja
method
berupa deklarasi
syntax
seluruhnya abstract
(berupa deklarasi)
boleh deklarasi,
boleh berupa
method lengkap
sebagian abstract
Pemrograman Berorientasi Objek 1
interface Queue {
public void push(int e);
public int pop();
public void printQ();
}
Pemrograman Berorientasi Objek 1
public 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");
}
}
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");
}
}
Pemrograman Berorientasi Objek 1
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 1
public 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
Hewan.java
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);
}
}
Pemrograman Berorientasi Objek 1
Perkutut.java
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 :
Pemrograman Berorientasi Objek 1
Sapi.java
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 :
Pemrograman Berorientasi Objek 1
Manusia.java
interface Manusia {
public void menyanyi();
public void ketawa();
}
SpongeBob.java
class 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(); }
Lanjutan SpongeBob.java
public static void main(String[] args) {
SpongeBob s= new SpongeBob();
s.isHewan();
s.bersuara();
s.menyanyi();
s.ketawa();
s.makan2();
Hewan.makan();
makan();
}
}
Output :
Pemrograman Berorientasi Objek 1