12 Januari, 2010

Interface

       Adalah semacam blok spesial yang hanya berisi tanda tangan method (dan mungkin konstan).
       Menggambarkan tandatangan dari seperangkat method, tanpa body
       Menggambarkan cara standard dan publik penetapan behavior class
       Mengijinkan class,dengan mengabaikan lokasi mereka di dalam hirarki class untuk menerapkan behavior.
       CATATAN: Interface memperlihatkan polymorphism juga, sejak program diperbolehkan memanggil sebuah method interface, dan versi yang sesuai dari method tersebut akan dieksekusi tergantung pada jenis object yang dilewatkan kepada pemanggilan method interface

Mengapa menggunakan interface?
       Untuk memiliki class yang tidak berhubungan yang mengimplementasikan method yang sama.
       Contoh:
   Class Line dan MyInteger
       Tidak berhubungan
       Keduanya mengimplementasikan method perbandingan
   isGreater
   isLess
   isEqual
       Untuk mengungkapkan sebuah interface pemrograman object tanpa pernyataan classnya
       Untuk model multi inheritance yang mengijinkan sebuah class untuk memiliki lebih dari satu superclass.

Membuat interface
       Untuk membuat sebuah interface, kita tulis:
public interface [InterfaceName] {
     //beberapa method tanpa body
}

       Sebagai contoh, mari buat sebuah interface yang mendefinisikan hubungan antara dua object sesuai dengan pesanan dari object.
public interface Relation
{
public boolean isGreater( Object a, Object b);
public boolean isLess( Object a, Object b);
public boolean isEqual( Object a, Object b);
}

       Untuk menggunakan interface, kita gunakan keyword implements
       Sebagai contoh,
/**
 * Class ini menjelaskan segment garis
 */
public class Line implements Relation {
   private double x1;
   private double x2;
   private double y1;
   private double y2;
public Line(double x1, double x2, double y1, double y2){
        this.x1 = x1;  
        this.x2 = x2;  
        this.y1 = y1;       
        this.y2 = y2;  
   }

public double getLength(){
           double length = Math.sqrt((x2-x1)*(x2-x1) +
                                (y2-y1)* (y2-y1));  
           return length;
     }
    
     public boolean isGreater( Object a, Object b){
           double aLen = ((Line)a).getLength();
           double bLen = ((Line)b).getLength();
           return (aLen > bLen);
     }
    
     public boolean isLess( Object a, Object b){
           double aLen = ((Line)a).getLength();
           double bLen = ((Line)b).getLength();
           return (aLen < bLen);
          
     }
    
     public boolean isEqual( Object a, Object b){
           double aLen = ((Line)a).getLength();
           double bLen = ((Line)b).getLength();
           return (aLen == bLen);
     }         
}

       Ketika class Anda mencoba untuk mengimplementasikan sebuah interface, pastikan selalu bahwa Anda mengimplementasikan semua method dari interface tersebut, jika tidak, Anda akan mendapatkan kesalahan ini.
Line.java:4: Line is not abstract and does not override abstract method isGreater(java.lang.Object,java.lang.Object) in Relation
public class Line implements Relation
       ^
1 error

0 komentar:

Posting Komentar