Selasa, 01 November 2011

LAPORAN V ABSTRACT, INTERFACE, INNER CLASS

1. Abstact Class
Abstract class adalah suatu class yang dinyatakan abstract, umumnya memiliki satu atau 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 objek, abstract class tidak dapat diinstanisasi.
            Analogi Inheritance dan Abstract Class :
Inheritence dapat dianalogikan seperti penggolongan kelas, ordo, phylum dalam biologi. Makhluk hidup dapat diturunkan atau diextend atau diperluas (di-inherit) menjadi burung, reptile, ikan dan lain – lain, jenjang penurunan tersebut disebut inheritance.
Kita mengetahui bahwa suatu kelas dapat diinstanisasi menjadi suatu objek, misal kelas manusia dapat diinstanisasi menjadi Joko, Susi, Ari, dan lain – lain, namun kita tidak mungkin dapat menginstanisasi kelas makhluk hidup, maupun kelas hewan, sebab kelas tersebut terlalu umum (abstract), kelas seperti inilah yang desebut sebagai abstract class, apabila class makhluk hidup mempunyai method bernafas, maka kita tidak dapat menentukan (meng-implementasikan) cara makhluk hidup tersebut bernafas, dengan paru – paru, insang atau stomata, dengan demikian kita dapat menyatakan bahwa di dalam kelas makhluk hidup, bernafas merupakan method yang abstract.
  1. Interface
Interface adalah suatu class yang berisi method – method tanpa imlementasi, namun tanpa modifier abstract, apabila suatu interface memiliki atribut, maka atributnya akan berlaku sebagai konstanta (static final).
*         Analogi Interface
Interface dapat dianaligikan sebagai kontrak yang dapat dipakai oleh setiap kelas. Dalam kehidupan nyata kita mengetahui bahwa ada yang bekerja sebagai penyayi, pengacara, pelawak, dsb, tentunya manusia –manusia tersebut selain harus memiliki method standar seorang manusia, juga harus memiliki method yang sesuai dengan pekerjaannya. Dengan demikian untuk membuat seorang objek Joko penyayi kita harus membuat kelas yang merupakan turunan kelas manusia yang mengimplementasikan interface penyayi.
  1. Inner Class
Inner Class adalah kelas yang disisipkan  di dalam kelas yang lain. Fungsi kelas sisipan ini adalah mendukung suatu proses yang akan dijalankan oleh kelas utamanya. Inner Class bersifat tersarang terhadap kelas – kelas utamanya, seperti halnya blok penyeleksian  (if, for) yang tersarang pada blok penyeleksian lainnya atau method yang tersarang pada method lainnya.
*         Analogi Inner Class
Inner Class dapat dianalogikan sebagi hubungan antara manusia dan paru – paru. Setipa manusia pasti bernafas dengan menggunakan paru – paru. Dalam hal ini berarti kinerja dari paru – paru turut mendukung/menetukan kinerja dari manusia. Dalam bahasa pemrograman berorientasi objek manusia dapat dikatakan sebagai outer class dan paru – paru sebagai inner  class-nya.
 Contoh Dalam Program Java.
Code Programnya: 
MakhlukHidup.Java   

abstract class MakhlukHidup {   //membuat kelas abstrak dengan nama MakhlukHidup
    protected boolean BisaTerbang = false; // mendeklarasikan atribut
    protected String Nama;  // mendeklarasikan atribut
    protected int JlhKaki;  // mendeklarasikan atribut
    public MakhlukHidup(String Nama1, int JlhKaki1, boolean BisaTerbang1) {   // mendeklarasikan        method dengan parameter Nama1, JlhKaji1, BiasTerbang1
        this.Nama = Nama1; // menyatakan bahwa nilai Nama = Nama1
        this.JlhKaki = JlhKaki1; //  menyatakan bahwa nilai JlhKaki = JlhKaki1
        this.BisaTerbang = BisaTerbang1; // menyatakan bahwa nilai BisaTerbang = BisaTerbang1
    }
   abstract void bernafas(); // mendeklarasikan method abstract dengan nama bernafas

    public void status() { // deklarasi method status
        System.out.println("Nama : "+Nama);  //mencetak nilai dari atribut Nama
        System.out.println("Jumlah kaki : "+JlhKaki);   //mencetak nilai dari atribut JlhKaki
        System.out.println("Bisa terbang : "+BisaTerbang);  //  mencetak nilai dari atribut BisaTerbang
    }
}
// Program diatas tidak dapat dirunkan karena tidak memiliki fungsi utama dan hanya dapat dicomfile 



Manusia.Java
public class Manusia extends MakhlukHidup {  // membuat class Manusia turunan dari class MakhlukHidup
    Manusia(String Nama){  //Construktor dari class Manusia
        super(Nama,2,false);  //method super  berisi nilai dari Nama,JlhKaki,BisaTerbang.
    }
    public void bernafas() { //deklarasi method bernafas
        System.out.println( Nama+ " bernafas dengan menghiruo O2");   //mencetak nilai dari Nama            ditambah kata ” bernafas dengan menghiruo O2”
    }
    public static void main(String[] args) { // fungsi utama
        Manusia m = new Manusia("Sayuti"); // membuat objek pada class Manusia dengan nama m dan mengirimkan nilai ”Sayuti “ pada parameter Nama di method Manusia
        m.status(); // memanggil dan mencetak isi dari method status pada class MakhlukHidup dan dengan parameter yang telah dikirimkan
        m.bernafas(); //mencetak isi dari method bernafas
    }
}
 Out Put :

Tumbuhan.Java

public class Tumbuhan extends MakhlukHidup { //deklarasikan class Tumbuhan turunan dari kelas MakhlukHidup
   Tumbuhan(String Nama){ //(Contruktor)deklarasi method Tumbuhan dengan parameter Nama
        super(Nama,0,false); // method super ,mengirimkan nilai dari Nama,JlhKaki,BisaTerbang pada kelas MaklukHidup.
    }
    public void bernafas() { // mendeklarasikan method abstract dengan nama bernafas
        System.out.println( Nama+ " bernafas dengan menghiruo CO2"); //mencetak nilai dari Nama            ditambah kata ” bernafas dengan menghiruo CO2”
    }
    public static void main(String[] args) { // fungsi utama
        Tumbuhan m = new Tumbuhan("Bayam"); // membuat objek pada class Tumbuhan dengan nama m dan mengirimkan nilai ”Bayam “ pada parameter Nama di method Tumbuhan
        m.status(); //mencetak isi dari method status pada class MakhlukHidup berdasarkan parameter yang telah dikirimkan
        m.bernafas();//mencetak isi dari method bernafas
    }
}
Out Put :
Pekerjaan.Java

interface Pekerjaan { // mendeklarasikan interface Pekerjaan
public void namaPekerjaan(); // mendeklarasikan method namaPekerjaan
public void gaji();// mendeklarasikan method gaji.
}
// Program diatas adalah Interface jadi tidak dapat dirunkan
.

Sasya.Java

public class  Sasya extends Manusia implements Pekerjaan { //mendeklarasikan class Sasya turunan dari class Manusia dan mengimplementasikan pada interface Pekerjaan.
public Sasya() { //Construktor Sasya
                super("Sasya");// method super dengan parameter Sasya
                }
public void namaPekerjaan() { // memanggil method namaPekerjaan pada interface Pekerjaan
                System.out.println("Pekerjaan :Sekretaris");  // menjetak ("Pekerjaan :Sekretaris")
}
public void gaji() { // memanggil method gaji pada interface Pekerjaan
                System.out.println("Gaji : Rp. 3.000.000"); // mencetak  ("Gaji : Rp. 3.000.000")
}
public static void main(String[] args) { // Fungsi Utama
Sasya s=new Sasya(); //membuat objek dengan nama s pada class Sasya
s.status () ; //memanggil dan mencetak isi dari method status pada class MakhlukHidup  berdasarkan parameter yang telah dikirimkan
s.bernafas();  //memanggil dan mencetak isi dari method bernafas pada class MakhlukHidup  dengan parameter yang telah dikirimkan
s.namaPekerjaan() ; // mencetak isi dari method namaPekerjaan
s.gaji(); // mencetak isi dari method namaPekerjaan
}
}
Out Put :
JantungManusia.Java

class Orang { // membuat class dengan nama Orang pada class JantungManusia
private int jumlKaki =2; // atribut jumlKaki dengan nilai 2
public void dengarBunyiJantung() { // mendeklarasikan method dengarBunyiJantung
                Jantung j=new Jantung(); //membuat objek baru dengan nama j pada method jantung
                j.bunyiJantung();  // objek j dari method bunyijantung
                }
public void tahanNafas() {  //mendeklarasikan method tahanNafas
System.out.println("Jantung berhenti berdetak!");  //mencetak ("Jantung berhenti berdetak!")
}
//inner class
                class Jantung { // membuta kelas baru dengan nama Jantung pada class JantungManusia
                public void bunyiJantung() { //memanggil method bunyiJantung
                System.out.println("deg...deg...deg.."); // mencetak  ("deg...deg...deg..")
}
                public void istirahat() {  // method istirahat
                System.out.println("Silahkan ke "+jumlKaki+" kaki."); // mencetak ("Silahkan ke "+jumlKaki+" kaki.")
                tahanNafas(); // memanggil method tahanNafas
}
}
}
class JantungManusia { // merupakan class utama dengan nama JantungManusia
                public static void main(String[] args){ //Fungsi Utama
                Orang o = new Orang(); // membuta objek baru dengan nama o pada method Orang
                Orang.Jantung p = o.new Jantung();// membuta objek baru dengan nama p pada method jantung pada class Orang.
                o.dengarBunyiJantung(); // mencetak nilai dari method dengar BunyiJantung pada class Orang
                p.istirahat(); // mencetak nilai dari method istirahat pada class Jantung
                }
                }
Out Put :

Tidak ada komentar:

Posting Komentar