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