Tuesday, December 28, 2010

[OOP] Bagian 1 - Inheritance

Pemrograman berorientasi objek atau dalam bahasa Inggris disebut Object Oriented Programming merupakan paradigma pemrograman yang berorientasi pada objek. Semua data dan fungsi dibungkus dalam kelas. Instan dari sebuah kelas disebut dengan objek. Setiap objek dapat menerima pesan, memproses data, dan mengirim pesan ke objek lainnya. Pemrograman dengan pendekatan OOP dapat dengan mudah dikembangkan, dirawat dan dimodifikasi.

Salah satu ciri bahasa pemrograman berorientasi objek adalah Inheritance. Konsep ini mengijinkan sebuah kelas didefinisikan sebagai turunan dari kelas lain. Dengan cara ini sebuah kelas dapat dibuat sebagai penjabaran dari kelas lain (induk) tanpa harus mengimplementasikan ulang fungsi-fungsi pada kelas induknya.

Sebagai contoh sebuah kelas Mamalia mempunyai ciri-ciri:
  1. Berkembang biak dengan cara beranak
  2. Mempunyai rambut pada kulitnya
  3. Pada jenis betina menghasilkan susu
Dari kelas Mamalia tersebut dapat dibuat kelas turunan sebagai penjabaran dengan ciri-ciri yang lebih khusus, misalnya:

*) Kelas Harimau yang mempunyai ciri-ciri
  1. Pemakan daging
  2. Mempunyai gigi taring
*) Kelas Sapi yang mempunyai ciri-ciri
  1. Pemakan tumbuh-tumbuhan
  2. Mempunyai gigi geraham
Kedua kelas tersebut, baik Harimau maupun Sapi merupakan turunan dari kelas Mamalia sehingga memiliki ketiga ciri-ciri dari kelas Mamalia.

Contoh penerapan dalam bahasa pemrograman Java adalah sebagai berikut:
Misalnya dibuat kelas Matematika sebagai berikut:


package umar.faisol;

public class Matematika {
    public int tambah(int satu, int dua) {
        return (satu + dua);
    }

    public int kurang(int satu, int dua) {
        return (satu - dua);
    }

    public double bagi(double satu, double dua) {
        return (satu / dua);
    }

    public int kali(int satu, int dua) {
        return (satu * dua);
    }
}

Kelas tersebut mempunya method tambah, kurang, bagi dan kali. Dari kelas ini dapat dibuat kelas turunan misalnya kelas Kubus, dengan definisi sebagai berikut:



package umar.faisol;

public class Kubus extends Matematika {
    public int volume(int sisi) {
        return (sisi * sisi * sisi);
    }
}



Kelas Kubus tersebut didefinisikan sebagai kelas turunan dari kelas Matematika dengan keyword extends, sehingga kelas Kubus tersebut selain memiliki method volume, juga memiliki semua method publik dari kelas induknya yaitu: tambah, kurang, bagi dan kali.


Untuk uji coba dapat digunakan cara berikut:


package umar.faisol;

public class TestOOP {
    public static void main (String[] args) {
        Matematika mat = new Matematika();
        Kubus kb = new Kubus();

        System.out.println ("Menggunakan kelas Matematika\n==============================");
        System.out.println ("mat.kali(3, 16): " + mat.kali(3, 16));

        System.out.println ("\n");
        System.out.println ("Menggunakan kelas Kubus\n====================================");
        System.out.println ("kb.kali(3, 16): " + kb.kali(3, 16));
        System.out.println ("kb.volume(16): " + kb.volume(16));
    }
}



Keluarannya seperti gambar berikut:




Source code dapat didownload di sini.
Matematika.java
Kubus.java
TestOOP.java

Wednesday, June 2, 2010

Mendapatkan IP Address pada Komputer Jaringan


Mendapatkan IP address pada Komputer Jaringan

IP address atau alamat Internet Protocol merupakan pengenal sebuah komputer pada jaringan. Tidak ada IP address yang sama pada satu jaringan.

IP dapat digunakan untuk mengenali sebuah komputer yang mengakses data pada suatu jaringan. Misalnya pada sebuah aplikasi multiuser ada proses penghapusan data, maka dapat diketahui dari IP mana penghapusan itu dilakukan.

Contoh mendapatkan IP pada aplikasi Java:



public static String[] cariIP()
{
    String[] returnValue = new String[2];
    String networkIP = null;
    String internetIP = null;
    try
    {
        Enumeration interfaces = NetworkInterface.getNetworkInterfaces();
        while (interfaces.hasMoreElements())
        {
            NetworkInterface networkInterface = (NetworkInterface)
              interfaces.nextElement();

            Enumeration addresses = networkInterface.getInetAddresses();
            while (addresses.hasMoreElements())
            {
                InetAddress inetAddress = (InetAddress) addresses.nextElement();
                if (!inetAddress.getHostAddress().equals("127.0.0.1"))
                {
                     if (inetAddress.getHostAddress().startsWith("192.168") 
                        || inetAddress.getHostAddress().startsWith("10."))
                    {
                        networkIP = inetAddress.getHostAddress();
                    } else
                    {
                        internetIP = inetAddress.getHostAddress();
                    }
                }
            }
        }
    }
    catch (SocketException e)
    {
        e.printStackTrace();
    }
    
    returnValue[0] = networkIP;
    returnValue[1] = internetIP;
    return (returnValue);
}


Nilai balik dari fungsi itu berisi 2 jenis IP, yaitu IP lokal dan IP publik.

Wednesday, April 7, 2010

[Applet] - Pentol Silang (Tic Tac Toe)

Nyantai dulu aah.. Refreshing main game yuk! Ini ada game pentol silang atau Catur Jawa atau Tic Tac Toe.


Selamat Bermain ya... Kodenya dapat didownload di sini.

Tuesday, February 9, 2010

Membalik Kata dengan substring() Methode

Kelas java.lang.String memiliki banyak methode untuk mengolah string. Untuk membalik string dapat digunakan methode ini untuk memotong string dari belakang, kemudian menatanya kembali.

Contohnya seperti kode berikut:


private String balikkan(String kata)
{
    String hasil = "";

    int panjangString = kata.length();
    int batas = panjangString;
    for (int i = 0; i < panjangString; i++)
    {
        hasil += kata.substring(batas - 1, batas);
        batas--;
    }

    return (hasil);
}


Hasilnya adalah seperti berikut
Unlimited Free Image and File Hosting at MediaFire

Source lengkap dapat didownload di sini.

Monday, February 1, 2010

Animasi Background

Animasi menjadi bagian penting pada sebuah program, sebagaimana perhiasan yang melekat pada seseorang. Contoh berikut diperlihatkan bagaimana membuat animasi background. Kelas ini dapat diaplikasikan pada JPanel, JFrame maupun JDialog serta kelas turunannya.

Berikut ini contoh menampilkan background secara acak.


package umar.faisol;

import java.util.Random;
import javax.swing.JPanel;
import java.awt.Color;

public class Pengacak extends Thread
{
    private JPanel background;

    public Pengacak(JPanel background)
    {
        this.background = background;
        start();
    }

    public void run()
    {
        while(true)
        {
            Random randomMerah = new Random();
            Random randomHijau = new Random();
            Random randomBiru = new Random();

            int merah = randomMerah.nextInt(256);
            int hijau = randomHijau.nextInt(256);
            int biru = randomBiru.nextInt(256);

            Color warna = new Color(merah, hijau, biru);
            background.setBackground(warna);

            try
            {
                sleep(10);
            }
            catch(InterruptedException i)
            {
                System.out.println(i);
            }
        }
    }
}
Cara menggunakannya adalah sebagai berikut:

package umar.faisol;

import javax.swing.JFrame;
import javax.swing.JPanel;

import java.awt.EventQueue;
import java.awt.BorderLayout;

public class Background extends JFrame implements Runnable
{
    public Background()
    {
        super("Animasi Background");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public void run()
    {
        JPanel panel = new JPanel();
        getContentPane().setLayout(new BorderLayout());
        getContentPane().add(panel, BorderLayout.CENTER);

        Pengacak pengacak = new Pengacak(panel);

        setSize(400, 300);
        setVisible(true);
    }

    public static void main(String args[])
    {
        JFrame.setDefaultLookAndFeelDecorated(true);
        EventQueue.invokeLater(new Background());
    }
}

Jika dijalankan program tersebut akan menampilkan warna panel yang berubah secara acak.

Source code lengkap dapat didownload di sini.

Thursday, January 21, 2010

Membaca File Excel

Ada beberapa cara untuk membaca file dari Microsoft Excel. Cara paling mudah menurut saya adalah dengan menggunakan library JExcelApi. Library ini memungkinkan baca dan tulis file excel menjadi mudah.

Berikut ini contoh membaca file excel dengan menggunakan library JExcelApi:


private void bacaFile(File file)
{
    try
    {
        Workbook workbook = Workbook.getWorkbook(file);

        /* baca sheet 1 */
        Sheet sheet = workbook.getSheet(0);

        /* mendapatkan jumlah baris dan kolom */
        int banyakKolom = sheet.getColumns();
        int banyakBaris = sheet.getRows();

        /* deklarasi header tabel */
        String[][] data = new String[banyakBaris][banyakKolom];
        String[] kolom = new String[banyakKolom];

        /* ambil data */
        for (int i = 0; i < banyakBaris; i++)
        {
            for (int j = 0; j < banyakKolom; j++)
            {
                Cell cell = sheet.getCell(j, i);
                if (cell.getType()  == CellType.NUMBER)
                {
                    NumberCell numberCell = (NumberCell)cell;
                    int angka = Double.valueOf(numberCell.getValue()).intValue();
                    data[i][j] = Integer.toString(angka);
                }
                else if (cell.getType() == CellType.DATE)
                {
                    DateCell dateCell = (DateCell)cell;
                    Date date = dateCell.getDate();
                    data[i][j] = date.toString();
                }
                else
                {
                    data[i][j] = cell.getContents();
                }
            }
        }

        /* tampilkan data */
        DefaultTableModel tableModel = new DefaultTableModel(data, kolom);
        display.setModel(tableModel);
    }
    catch(Exception e)
    {
        JDialog.setDefaultLookAndFeelDecorated(true);
        JOptionPane.showMessageDialog(null, "Error: " + e, "Error!", JOptionPane.ERROR_MESSAGE);
    }
} 

Cara tersebut menurut saya yang paling mudah. Setelah menampilkannya pada JTable, maka selanjutkan data dapat digunakan sesuai kebutuhan, misalnya memasukkannya ke database.

Kode programnya dapat didownload di sini.

Thursday, January 7, 2010

Membatasi Jumlah Record pada ResultSet

Saat melakukan kueri dari database, banyaknya data yang diambil dari objek ResultSet sangat mempengaruhi kecepatan dalam menampilkan data. Secara default, objek Statement akan mengeksekusi dan mengambil semua hasil kueri, kemudian menampungnya pada objek ResultSet. Jika ingin membatasi jumlah data pada ResultSet, maka cara membatasinya adalah melalui objek Statement.

Interface Statement memiliki methode setMaxRows(int max) yang digunakan untuk membatasi jumlah data yang dihasilkan. Setiap objek ResultSet yang dihasilkan dari objek Statement ini akan memiliki jumlah data maksimum sebanyak max.

Contoh penggunaannya adalah sebagai berikut:

            Connection con = DriverManager.getConnection(koneksi, "sa", "faisol");
            Statement st = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);

            /* membatasi resultset */
            if (batasi)
            {
                int maxRow = Integer.parseInt(batas.getText());
                st.setMaxRows(maxRow);
            }

            ResultSet rs = st.executeQuery("SELECT * FROM Kabupaten");
  
Jika methode setMaxRows() tidak dipanggil, maka seluruh data dari kueri SELECT akan ditampilkan.

Kode selengkapnya dapat didownload di sini.