Selasa, 10 September 2013

Interface

Bab kali ini saya akan membahas tentang Interface pada java. Penggunaan interface pada java sangatlah penting. Pada pembuatan sebuah program, penggunaan interface sangat dianjurkan pada layer dalam aplikasi. Interface juga digunakan dalam best practice yang sering disebut dengan “code to interface” yang mana best practice menganjurkan dveloper untuk menggunakannya.

Interface adalah jenis khusus dari blok yang hanya berisi method signature (atau constant). Interface mendefinisikan sebuah (signature) dari sebuah kumpulan method tanpa tubuh. Interface mendefinisikan sebuah cara standar tentang sifat-sifat dari class-class. Mereka menyediakan class-class tanpa memperhatikan lokasinya dalam hirarki class, untuk mengimplementasikan sifat-sifat yang umum. Dengan catatan-catatan bahwa interface-interface juga menunjukan polymorfisme, dikarenakan program dapat memanggil method interface dan versi yang tepat dari method yang dieksekusi dari tipe object yang melewati pemanggil method interface – J.E.N.I.

Secara teknis bisa dikatakan bahwa interface adalah class yang bersifat abstract, semua method yang adalah public dan abstract. Berikut adalah aturan-aturan tentang interface :
  1. modifier default yatu public atau tidak ada sama sekali. Jika tidak menggunakan modifier maka interface tersebut hanya dapat diakses dalam package yang sama.
  2. Semua variabel yang didefinisikan dalam interface secara otomatis adalah static final. Karena itu dalam proses pendefinisiannya harus diberikana nilai.
  3. Semua method dalam interface bersifat (default) abstract. Adapun bedanya dengan class abstract adalah kita tidak perlu menuliskan keyword abstract pada saat pendeklarasian method dalam interface.
  4. Kita dapat mengimplementasikan lebih dari satu interface (multiple inheritance) dengan memisahkan nama dari setiap interface dengan tanda koma.
  5. Semua method yang diimplementasikan haruslah public
  6. jika suatu class tidak mengimplementasikan semua method yang ada dalam interface, maka class tersebut harus dideclarasikan sebagai absract class.
  7. Class yang mengimplementasikan sebuah interface haruslah menggunakan keyword “implements”
Lalu bagaimana kita membuat sebuah interface ? Pada proses pembuatan interface, kita hanya harus menggunakan keyword “interface” diikuti dengan nama interface. Adapun contohnya  yaitu :


interface Supplier {}

Interface biasanya digunakan sebagai “kontrak” agar class yang mengimplementasikan interface dapat memiliki semua method yang didefinisikan dalam interface tersebut, tetapi kita tidak ingin mengekspos implementasinya.

Untuk lebih jelasnya saya akan mengambil contoh pada dunia nyata. Misalkan pembuat remote control dan pembuat tv. Seorang pembuat remote control tersebut tidak perlu tahu merk tv dan siapa yang membuat tv tersebut untuk dikontrol menggunakan remote control tersebut. Yang perlu diketahui adalah interface apa yang digunakan oleh TV tersebut agar dapat dikontrol. Demikian pulu si pembuat TV tidak perlu tahu bagaimana remote control tersebut dibuat. Pembuat TV hanya perlu tahu interface apa yang digunakan agar TV nya itu dapat dikontrol oleh remote control tersebut.

package ten.tutorInterface;

/**
 *
 * @author Teten
 */
public interface Control {

    void pindahChannel(int channel);

    void perbesarVolume(int volume);

    void perkecilVolume(int volume);
}



package ten.tutorInterface.impl;

import ten.tutorInterface.Control;

/**
 *
 * @author Teten
 */
public class TVPolytron implements Control {

    String[] channel = {"RCTI","SCTV","INDOSIAR","ANTV","TV7"};

    public void pindahChannel(int d) {
        System.out.println("TVPolytron pindah ke channel : "+channel[d]);
    }

    public void perbesarVolume(int volume) {
        System.out.println("TVPolyton diperbesar sebanyak : "+volume);
       
    }

    public void perkecilVolume(int volume) {
        System.out.println("TVPolyton diperkecil sebanyak : "+volume);
    }

}


package ten.tutorInterface.impl;

import ten.tutorInterface.Control;

/**
 *
 * @author Teten
 */
public class TVSamsung implements Control{

    String[] channel = {"RCTI","SCTV","INDOSIAR","ANTV","TV7"};

    public void pindahChannel(int d) {
        System.out.println("TVSamsung pindah ke channel : "+channel[d]);
    }

    public void perbesarVolume(int volume) {
        System.out.println("TVSamsung diperbesar sebanyak : "+volume);
    }

    public void perkecilVolume(int volume) {
        System.out.println("TVSamsung diperkecil sebanyak : "+volume);
    }

}

package ten.control;

import ten.tutorInterface.Control;

/**
 *
 * @author Teten
 */
public class RemoteControl {

    public void kirimPerintahKeTV(int aksi, Control tv, int tombol) {
        switch (aksi) {
            case 1:
                tv.pindahChannel(tombol);
                break;
            case 2:
                tv.perbesarVolume(tombol);
                break;
            case 3:
                tv.perkecilVolume(tombol);
                break;
        }
    }
}


import ten.control.RemoteControl;
import ten.tutorInterface.impl.TVPolytron;
import ten.tutorInterface.impl.TVSamsung;
/**
 *
 * @author Teten
 */
public class MainControl {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        TVPolytron polytron=new TVPolytron();
        TVSamsung samsung=new TVSamsung();
       
        RemoteControl remoteControl=new RemoteControl();
       
        remoteControl.kirimPerintahKeTV(2, samsung, 2);
    }

}

Source dari kode diatas dapat Anda download di sini

#Code sumber dari : sinau-java.blogspot.com







0 komentar:

Posting Komentar