Sabtu, 29 September 2007

Susunan Kode Sumber .java

Dalam mengembangkan program Java, Anda menulis class dan class. Class ini ditulis dalam kode sumber yang disimpan sebagai file teks biasa berekstension .java.

Dalam file .java, dapat dideklarasikan :

  1. package
  2. import
  3. satu atau lebih class

Deklarasi Package

Deklarasi package digunakan untuk mengelompokkan class-class. Sebuah package dapat mempunyai satu atau lebih sub-package ini sehingga dapat menyusun sebuah hirarki.

Tata cara penulisan :

package ..;
Contoh deklarasi package adalah :
package java.awt;
atau
package org.apache.tomcat.core;
atau
package net.developerforce.relieve.dataaccess;
Deklarasi package bersifat opsional, tidak harus ada. Tanpa deklarasi package maka sebuah class dikelompokkan ke dalam default package.

Deklarasi Import

Deklarasi import, bersifat opsional, digunakan untuk menunjukkan package atau class yang digunakan dalam sebuah program Java.

Contohnya adalah :

import java.io.RandomAccessFile;
import java.net.*;
Deklarasi import tidak akan menjadikan class atau package yang Anda cantumkan digabungkan dengan program Anda saat kompilasi atau saat diluncurkan. Deklarasi import digunakan untuk menunjukkan java atau javac dalam menemukan class yang Anda gunakan.

Deklarasi Class

Deklarasi class merupakan kandungan utama sebuah file berekstension .java. Deklarasi class terutama memuat :

  1. nama class, bisa dilengkapi dengan kendali akses, deklarasi extends maupun deklarasi implements. Pola yang lumrah adalah :
    public class ClassName
    extends SuperClassName
    implements Interface1Name, Interface2Name, Interface3Name
  2. constructor, yang dipanggil pada saat dibuat instans dari class.
  3. deklarasi variabel-variabel
  4. deklarasi prosedur-prosedur, yang di dalam Java disebut method.

Contoh

Berikut adalah sebuah contoh sebuah kode sumber untuk class DataAccessPatient. Class ini bertanggung jawab untuk menyimpan obyek Patient ke sistem basis data.

package net.developerforce.relieve.dataaccess;

import java.sql.*;
import net.developerforce.relieve.value.Patient;

public class DataAccessPatient
{
private Connection conn;


public DataAccessPatient(Connection conn)
{
this.conn = conn;
}

public void insertPatient(Patient patient)
throws SQLException
{
String insertStr =
"INSERT INTO PATIENTTBL "
+ " VALUES("
+ "'" + patient.getId() + "'"
+ ","
+ "'" + patient.getName() + "'"
+ ","
+ "'" + patient.getIc() + "'"
+ ","
+ "'" + patient.getAddress() + "'"
+ ","
+ "'" + patient.getTelephone() + "'"
+ ","
+ "'" + patient.getEmail() + "'"
+ ")";
Statement stmt = conn.createStatement();
stmt.executeUpdate(insertStr);
}

public void updatePatient(Patient patient)
throws SQLException
{
String updateStr =
"UPDATE PATIENTTBL "
+ "SET "
+ "NAME = '" + patient.getName() + "',"
+ "IC = '" + patient.getIc() + "',"
+ "ADDRESS = '" + patient.getAddress() + "',"
+ "TELEPHONE = '" + patient.getTelephone() + "',"
+ "EMAIL = '" + patient.getEmail() + "' "
+ "WHERE "
+ "ID = '" + patient.getId() + "'";
Statement stmt = conn.createStatement();
stmt.executeUpdate(updateStr);
}

public Patient selectPatientWhereIdEquals(String id)
throws SQLException
{
String selectStr =
"SELECT ID, NAME, IC, ADDRESS, TELEPHONE, EMAIL "
+ "FROM PATIENTTBL "
+ "WHERE ID = '" + id + "'";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(selectStr);
if(rs.next())
{
return new Patient (
rs.getString("ID"),
rs.getString("NAME"),
rs.getString("IC"),
rs.getString("ADDRESS"),
rs.getString("TELEPHONE"),
rs.getString("EMAIL")
);
}
else
{
return null;
}
}
}

Dengan mengamati kode sumber DataAccessPatient, Anda dapat menemukan bahwa

  1. Package dari class ini adalah net.developerforce.relieve.dataaccess, sesuai dengan deklarasi package yang ada yaitu :
    package net.developerforce.relieve.dataaccess;
  2. Import yang dilakukan class ini adalah mencakup package java.sql dan sebuah class net.developerforce.relieve.value.Patient, sesuai dengan deklarasi import yang bisa ditemukan :
    import java.sql.*;
    import net.developerforce.relieve.value.Patient;
    Anda bisa saja membuang deklarasi import, dan sebagai penggantinya Anda menuliskan deklarasi class-class yang digunakan secara lengkap. Bandingkan perubahan yang terjadi dalam potongan berikut :
    package net.developerforce.relieve.dataaccess;

    public class DataAccessPatient
    {
    private java.sql.Connection conn;


    public DataAccessPatient(java.sql.Connection conn)
    {
    ...
    }

    public void insertPatient(net.developerforce.relieve.value.Patient patient)
    throws java.sql.SQLException
    {
    ...
    java.sql.Statement stmt = conn.createStatement();
    ...
    }

    public void updatePatient(net.developerforce.relieve.value.Patient patient)
    throws java.sql.SQLException
    {
    ...
    java.sql.Statement stmt = conn.createStatement();
    ...
    }

    public Patient selectPatientWhereIdEquals(String id)
    throws java.sql.SQLException
    {
    ...
    java.sql.Statement stmt = conn.createStatement();
    java.sql.ResultSet rs = stmt.executeQuery(selectStr);
    if(rs.next())
    {
    return new net.developerforce.relieve.value.Patient (
    ...
    );
    }
    ...

    }
    }
    Anda boleh membuang deklarasi import tetapi sebagai penggantinya Anda harus mendeklarasikan class-class yang digunakan secara lengkap : Connection sebagai java.sql.Connection, Statement sebagai java.sql.Statement, ResultSet sebagai java.sql.ResultSet dan Patient sebagai net.developerforce.relieve.value.Patient.
  3. Deklarasi class yang ada dalam kode sumber ini adalah :
    public class DataAccessPatient
    Menunjukkan bahwa class DataAccessPatient diturunkan dari java.lang.Object dan bukan dari class lain.
  4. Untuk meng-instatiate class DataAccessPatient dibutuhkan parameter bertipe java.sql.Connection, sebagaimana deklarasi constructor :
    public DataAccessPatient(Connection conn)
    {
    ...
    }
  5. Class ini mempunyai satu variable yang dideklarasikan sebagai :
    private Connection conn;
  6. Class DataAccessPatient mendeklarasikan tiga method :
    public void insertPatient(Patient patient)
    throws SQLException
    {
    ...
    }

    public void updatePatient(Patient patient)
    throws SQLException
    {
    ...
    }

    public Patient selectPatientWhereIdEquals(String id)
    throws SQLException
    {
    ...
    }