Jumat, 01 November 2013

Pertemuan 4


ABSTRACT CLASS, INTERFACE, & INNER CLASS

      A.   ABSTRACT CLASS
            Abstact class adalah suatu kelas yang dinyatakan abstract, umumnya memiliki satu atau lebih abstract method. Abstract method adalah suatu method yang memiliki implementasi dan menggunakan modifier abstact. Abstact class biasanya dijadikan parent/super class dari kelas – kelas yang dapat membuat objek, abstract class tidak dapat di instansiasi.
Defenisi kelas diletakkan dalam masing – masing kelas turunan. Dalam hal ini setiap kelas turunan harus mendefenisikan metode – metode yang tergolong sebagai metode abstrak.

Karakteristik Abstract Class :
  • Abstract class adalah class yang mempunyai setidaknya satu abstract method.
  • Abstract method adalah method yang tidak memiliki body (hanya deklarasi method).
  • Implementasi dari isi abstract method tersebut dilakukan pada subclass.

Bila subclass method abstract tidak mengimplementasikan isi semua method maka subclass tersebut harus dideklarasikan abstract.
  • Abstract class tidak bisa dibuat objectnya.
  • Konsekuensinya, suatu abstract class haruslah diturunkan dimana pada subclass tersebut berisi implementasi dari abstract method yang ada di superclass.

     B.   INTERFACE

Interface adalah suatu kelas yang berisi method – method tanpa implementasi, namun tanpa modifier abstact, apabila suatu interface memiliki atribut, maka atributnya akan berlaku sebagai konstanta. Interface menyerupai kelas, perbedaannya kata kunci interface menggantikan kedudukan kata kunci class. 
Penentu akses public biasanya di gunakan dengan tujuan agar interface dapat diakses oleh kelas manapun. Jika tak ada penentu akses public, interface hanya dapat diakses oleh kelas yang berada dalam paket yang sama.
Interface mendefinisikan sebuah cara standar dan umum dalam menetapkan sifat-sifat dari class-class. Mereka menyediakan class-class, tanpa memperhatikan lokasinya dalam hirarki class. Untuk mengimplementasikan sifat-sifat yang umum. Dengan catatan bahwa interface-interface juga menunjukan polimorfisme, dikarenakan program dapat memanggil method interface dan versi yang tepat dari method yang akan dieksekusi tergantung dari tipe object yang melewati pemanggil method interface. 
Interface kita gunakan jika kita ingin class yang tidak berhubungan mengimplementasikan method yang sama. Melalui interface-interface, kita dapat menangkap kemiripan diantara class yang tidak berhubungan tanpa membuatnya seolah-olah class yang berhubungan

     C.   INNER CLASS
Inner class adalah kelas yang disisipkan kedalam kelas yang lainfungsi kelas sisipan ini adalah mendukung suatu proses yang akan dijalankan oleh kelas utamanya. Inner class bersifat tersarang oleh kelas – kelas utamanya.


LANGKAH – LANGKAH PRAKTIKUM :

      A.    PROGRAM  MakhlukHidup.java
 
public abstract class MakhlukHidup { 

             protected boolean BisaTerbang = false; 

             protected String Nama; 

             protected int JlhKaki; 


public MakhlukHidup (String Nama1, int JlhKaki1, boolean BisaTerbang1) { 

            this.Nama = Nama1;

            this.JlhKaki = JlhKaki1;

            this.BisaTerbang = BisaTerbang1;

         }

abstract void bernafas();

public void status() {

            System.out.println("Nama  : " +Nama);

            System.out.println("Jumlah Kaki  : " +JlhKaki);

            System.out.println("Bisa Terbang  : " +BisaTerbang);

         }

}

Hasil: 

        B.     PROGRAM  Manusia.java
public class Manusia extends MakhlukHidup {

 Manusia(String Nama) {

       super(Nama, 2,false); 

}

 public void bernafas() {

             System.out.println(Nama+" bernafas dengan menghirup O2");
             }
public static void main(String[] args) {
            Manusia m = new Manusia("Sayuti");
            m.status();
            m.bernafas();
}
}


Hasil:

 
       C.    PROGRAM  Tumbuhan.java

public class Tumbuhan extends MakhlukHidup {
            Tumbuhan(String Nama) {
            super(Nama, 0, false);
}
public void bernafas() {

            System.out.println(Nama+" bernafas dengan menghirup CO2");
            }
   public static void main(String [] args) {
            Tumbuhan t = new Tumbuhan("Bayam");
            t.status();
t.bernafas();
            }
}

Hasil:

     D.    PROGRAM  Pekerjaan.java

interface Pekerjaan {

 public void namaPekerjaan();

public void gaji();

}

Ket : program interface
Hasil:




E.   PROGRAM  Sasya.java

 public class Sasya extends Manusia implements Pekerjaan {

public Sasya() {

super("Sasya");

}

   public void namaPekerjaan() {

            System.out.println("Pekerjaan : Sekretaris");

             }

   public void gaji() {

            System.out.println("Gaji : Rp. 3000.000");

            }

   public static void main(String [] args) {

             Sasya s = new Sasya ();

            s.status();

            s.bernafas();

            s.namaPekerjaan();

            s.gaji();         

            }

}

Hasil :


    








      






    F.     PROGRAM  JantungManusia.java  

class Orang {

            private int JlhKaki = 2;

   public void dengarBunyiJantung() {

           Jantung j = new Jantung();

             j.bunyiJantung();

            }

   public void tahanNafas() {

             System.out.println("Jantung berhenti berdetak!");

            }

//inner class

  class Jantung {

            public void bunyiJantung() {

                        System.out.println("deg...deg...deg...");

            }

            public void istirahat() {

              System.out.println("Silangkan ke "+JlhKaki+" kaki.");

              tahanNafas();

             }

             }

}

  

class JantungManusia {

   public static void main(String [] args) {

            Orang o = new Orang ();

            Orang.Jantung p = o.new Jantung();

            o.dengarBunyiJantung();

            p.istirahat();

            }

}

Hasil :





Tidak ada komentar:

Posting Komentar