Minggu, 25 November 2012

Interface Pada Java


Pada proses pengembangan sistem sering kali kita dihadapkan kepada berbagai ragam teknologi atau berbagai jenis teknik pembuatan program. 
Misalnya dalam membuat aplikasi kita menggunakan berbagai jenis database dengan gaya pemograman yang berbeda.Java memberikan fasilitas untuk menjebatani perbedaan tersebut dengan apa yang di sebut interface
Misalkan dalam membuat sebuat aplikasi besar/ enterprise kita menggunakan berbagai jenis database seperti mysql, oracle dan sebagainya, kemudian dalam pembuatannya melibatkan team yang besar dengan teknik pemograman yang berbeda beda.  Tentu saja akan merepotkan untuk melakukan penelusuran jika da masalah dalam salah satu modul yang dibuat
Interface lebih mempermudah sistem analyst dalam membuat konsep aplikasi, interface mirip dengan pola atau bisa juga disebut cetak biru aplikasi.
Cara kerjanya adalah berdasarkan prinsip semua proses yang ada di java harus menggunakan object variabel dari java, jadi yang dikenal adalah object java bukan dari luar, misalnya seperti kita ketahui sql command akan berbeda dari database yang berbeda, bahkan bisa jadi tipe fieldnya juga berbeda.  Jadi syarat penggunaan interface harus menyamakan dahulu dengan melakukan Transfer Object(TO).
Interface tidak berisi perintah kepada system untuk melakukan sesuatu, interface hanya memetakan apa yang harus dikirimkan dan apa yang diharapkan untuk dikembalikan dan seperti yang di sampaikan di atas bahwa yang dikirimkan harus dalam bentuk object java begitu pula yang dikembalikannya.
Interface dalam kehidupan sehari hari ibarat sebuah clausul kontrak, yang berisi pasal pasal, namun pasal pasal tersebut masih kosong dan akan di isi pada saat kontrak tersebut digunakan.  Walaupun semua pasal harus tercantum, tidak berarti setiap pasal tersebut harus ada penjelasannya.

Apabila sebuah class java menggunakan interface maka class tersebut meng implementasikan interface.  Pada saat class mengimplementasikan interface walaupun semua yang ada di interface harus di cantumkan, namun tidak semuanya harus terisi dengan perintah atau proses.  Deklarasi interface harus public, karena memang fungsi class pengguna interface adalah untuk digunakan secara public

Bicara tentang bahasa pemrograman berorientasi objek, misalnya C++, membolehkan suatu kelas memiliki dua atau lebih kelas super. Hal ini disebut pewarisan ganda (multiple inheritance). Pada ilustrasi berikut, kelas E memiliki kelas super A dan B, sedangkan kelas F memiliki 3 kelas super.

Pewarisan ganda seperti ini tidak diperbolehkan pada Java. Desainer Java ingin menjaga agar bahasa Java tetap sederhana, dan mereka merasa pewarisan ganda ini sangat kompleks dengan keuntungan yang tidak begitu besar. Akan tetapi, Java memiliki fitur lain yang bisa digunakan seperti halnya pewarisan berganda, yaitu antar muka (interface).
Kita telah mengenal istilah "antar muka" sebelumnya, yaitu dalam konteks umum tentang kotak hitam dan subrutin. Antar muka suatu subrutin terdiri dari nama, jenis keluarannya, jumlah dan tipe parameternya. Informasi ini dibutuhkan jika kita ingin memanggi subrutin tersebut. Suatu subrutin juga memiliki implementasi : yaitu blok yang berisi perintah yang akan dijalankan ketika subrutin ini dipanggil.
Dalam Java, kata interface adalah kata kunci yang memiliki arti tambahan. Suatu interface dalam hal ini adalah antar muka yang terdiri dari subrutin tanpa implementasi apa-apa. Suatu kelas dapat mengimplementasi suatu interface dengan memberikan kode detail pada setiap subrutin yang ditulis pada interface tersebut
Contoh interface berisi metode CRUD (create, read, update, delet) Barang
public interface BarangInterface {
    public List<BarangTO> getBarangList(BarangTO barangTO);
    public int saveBarang(BarangTO barangTO);
    public int updateBarang(BarangTO barangTO);   
    public BarangTO getBarangByID(String kdBarang);
}


Contoh class yang meng implementasikan interface Barang
public class BarangDAOMySQL extends CustomerMySQL implements BarangInterface{

    public List<BarangTO> getBarangList(BarangTO barangTO) {
        List<BarangTO> listBarang=new ArrayList<BarangTO>();
        Connection conn=getDBConnection();
        StringBuffer sql=new StringBuffer();
        sql.append("select kd_barang,nm_barang from barang where left(kd_barang,1)='H' ");
        if(barangTO!=null){
            if(!"".equals(barangTO.getKdBarang()) || barangTO.getKdBarang()!=null){
                sql.append(" and( kd_barang like concat('%',?,'%') ");
                sql.append("or nm_barang like concat('%',?,'%')) ");
            }
        }       
        try{
            PreparedStatement pstmt=conn.prepareStatement(sql.toString());
            if(barangTO!=null){
                if(!"".equals(barangTO.getKdBarang()) || barangTO.getKdBarang()!=null){
                    pstmt.setString(1, barangTO.getKdBarang());
                    pstmt.setString(2, barangTO.getNmBarang());
                }
            }
            ResultSet rs=pstmt.executeQuery();
            while(rs.next()){
                barangTO=new BarangTO();
                barangTO.setKdBarang(rs.getString("kd_barang"));
                barangTO.setNmBarang(rs.getString("nm_barang"));
                listBarang.add(barangTO);
            }
        }catch(SQLException ex){
            Logger.getLogger(BarangDAOMySQL.class.getName()).log(Level.SEVERE, null, ex);
        }finally{
            try {
                conn.close();
            } catch (SQLException ex) {
                Logger.getLogger(BarangDAOMySQL.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return listBarang;
    }

    public int saveBarang(BarangTO barangTO) {
        int result=0;
        Connection conn=getDBConnection();
        StringBuffer sql=new StringBuffer();
        sql.append("insert into barang (kd_barang,nm_barang,jml_barang) ");
        sql.append("values (?,?,?) ");
        try{
            PreparedStatement pstmt=conn.prepareStatement(sql.toString());
            pstmt.setString(1, barangTO.getKdBarang());
            pstmt.setString(2, barangTO.getNmBarang());
            pstmt.setInt(3, barangTO.getJmlBarang());
            result=pstmt.executeUpdate();
        }catch(SQLException ex){
            Logger.getLogger(BarangDAOMySQL.class.getName()).log(Level.SEVERE, null, ex);
        }finally{
            try {
                conn.close();
            } catch (SQLException ex) {
                Logger.getLogger(BarangDAOMySQL.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return result;
    }

    public int updateBarang(BarangTO barangTO) {
         return 0;
    }
    public BarangTO getBarangByID(String kdBarang) {
         return null;
    }
}

Transfer object Barang (Beans)
public class BarangTO {
    private String kdBarang;
    private String nmBarang;
    private String merkBarang;
    private float hrgBarang;
    private int jmlBarang;
   
    public String getKdBarang() {
        return kdBarang;
    }

    public void setKdBarang(String kdBarang) {
        this.kdBarang = kdBarang;
    }

    public String getNmBarang() {
        return nmBarang;
    }

    public void setNmBarang(String nmBarang) {
        this.nmBarang = nmBarang;
    }

    public String getMerkBarang() {
        return merkBarang;
    }

    public void setMerkBarang(String merkBarang) {
        this.merkBarang = merkBarang;
    }

    public float getHrgBarang() {
        return hrgBarang;
    }

    public void setHrgBarang(float hrgBarang) {
        this.hrgBarang = hrgBarang;
    }

    public int getJmlBarang() {
        return jmlBarang;
    }

    public void setJmlBarang(int jmlBarang) {
        this.jmlBarang = jmlBarang;
    }
}

sumber :

Tidak ada komentar:

Posting Komentar