Thursday, December 6, 2012

Pemahaman OOP (Object Oriented Programming) pada JAVA



Untuk memahami OOP, pada dasarnya terdapat 2 hal yang mendasar yang harus dipahami, yaitu :
1. Konsep Dasar : tentang Class, Object, Attribute, Method, Constructor; dan
2. Karakteristiknya, yaitu Encapsulation, Inheritance, Polymorphisme.

Mari kita kupas lebih dalam . . .

KONSEP DASAR OOP


A. CLASS, adalah konsep dan deskripsi dari sesuatu, merupakan Blue Print atau cetakan dari sebuah program. Jika kita ingin mendeskripsikan tentang KUE, berarti kita harus membuat Class Kue. Begitu pula jika kita ingin mendiskripsikan tentang MANUSIA, berarti kita harus membuat Class Manusia.

 Public class Kue {
     }
 
atau

Public class Manusia {
     }

B. Sedangkan OBJECT, adalah segala sesuatu yang bisa dideskripsikan. Merupakan hasil cetakan dari class. Sehingga Object dari Manusia, adalah segala sesuatu yang bisa dideskripsikan dari manusia itu sendiri, misalkan nama, umur, jenis kelamin, dan sebagainya. Maka pengimplementasiannya adalah sebagai berikut :

public class Manusia {

    private String nama;
    private int umur;
    private String jenisKelamin;

    public Manusia() {
    }


C. ATTRIBUT, bisa disebut juga VARIABLE atau STATE, berguna untuk menyimpan nilai yang nantinya akan digunakan pada program. Sehingga suatu Class pasti memiliki Attribut untuk menyimpan nilainya. Ilustrasi misalkan kita terapkan pada Class Manusia yaitu, siapa nama manusia itu, berapakah umurnya, apa jenis kelaminnya. Jawaban dari ketiga pertanyaan tersebutlah yang dimaksud dengan ATTRIBUT.

D. METHOD, atau disebut BEHAVIOUR adalah urutan instruksi yang mengakses data dari objek. Dengan kata lain, method merupakan kegiatan yang dapat dilakukan oleh Class. Dalam hal ini, method berfungsi untuk memanipulasi data, melakukan perhitungan matematika, dan memonitor kejadian dari suatu event.
Berdasarkan nilai yang dihasilkan ketika menjalankan atau mengakses method, jenis method dibedakan menjadi 2 macam, yaitu :

(1) Method dengan return value, dan
(2) Method tanpa return value

E. CONSTRUCTOR - Method, adalah method yang identifier atau namanya sama dengan nama Class. merupakan method yang pertama kali dipanggil pada proses instansiasi atau pembuatan object.

public class Manusia {

    public Manusia() {

    }


KARAKTERISTIK OOP


A. ENCAPSULATION, adalah mekanisme untuk menyembunyikan suatu proses dan data dalam sistem, selain untuk menghindari interferensi, juga berfungsi untuk menyederhanakan penggunaan proses itu sendiri. Dengan kata lain, berfungsi untuk membungkus attribut agar terhindar dari akses ilegal. Pada tahap awal pengenalan OOP, kita diharuskan memahami 2 macam enkapsulasi, yaitu :
(1) Private, untuk mendeklarasikan instance variabel;
(2) Public, untuk mendeklarasikan method yang akan diakses variabelnya.

B. INHERITANCE, disebut juga pewarisan. Untuk mewariskan atribut dan method dari sebuah Class, kepada Class lain atau Subclass, atau membentuk class hierarchy. Pewarisan ini bertujuan untuk Reusability dan perluasan attitude. Keywordnya pada java adalah extends.

C. POLYMORPHISME,adalah kemampuan untuk memperlakukan object yang memiliki perilaku atau bentuk yang berbeda. Terdapat 2 macam pada implementasinya, yaitu :
(1) Overloading : Kemampuan untuk menggunakan nama yang sama untuk beberapa method yang berbeda parameter (tipe dan atau jumlahnya);
(2) Overriding : Kemampuan subclass untuk menimpa method dari superclass, yaitu dengan menggunakan nama dan parameter yang sama pada method.

Adapun contoh implementasinya adalah sebagai berikut :

1. Membuat Class Manusia sebagai Parent Class (Class Induk);

public class Manusia {

    private String nama;
    private int umur;
    private String jenisKelamin;

    public Manusia() {
    }

    public Manusia(String nama, int umur, String jK) {
        this.nama = nama;
        this.umur = umur;
        this.jenisKelamin = jK;
    }

    public String getJenisKelamin() {
        return jenisKelamin;
    }

    public void setJenisKelamin(String jenisKelamin) {
        this.jenisKelamin = jenisKelamin;
    }

    public String getNama() {
        return nama;
    }

    public void setNama(String nama) {
        this.nama = nama;
    }

    public int getUmur() {
        return umur;
    }

    public void setUmur(int umur) {
        this.umur = umur;
    }

    public static void tertawa(String tawa) {
        System.out.println(tawa);
    }

    public void status() {
    }
   
}

2. Membuat Class Siswa sebagai pewaris Class Manusia;
 
public class Siswa extends Manusia{
    private String nis, kelas, walikelas;

    public Siswa() {
    }

    public Siswa(String nis, String kelas, String walikelas) {
        this.nis = nis;
        this.kelas = kelas;
        this.walikelas = walikelas;
    }

    public String getKelas() {
        return kelas;
    }

    public void setKelas(String kelas) {
        this.kelas = kelas;
    }

    public String getNis() {
        return nis;
    }

    public void setNis(String nis) {
        this.nis = nis;
    }

    public String getWalikelas() {
        return walikelas;
    }

    public void setWalikelas(String walikelas) {
        this.walikelas = walikelas;
    }
   
    @Override
    public void status(){
        System.out.println("Sedang Belajar");
    }
}

3. Membuat Class Mahasiswa sebagai pewaris Class Manusia;


public class Mahasiswa extends Manusia {
    private String nim, jurusan;

    public Mahasiswa() {
    }

    public Mahasiswa(String nim, String jurusan) {
        this.nim = nim;
        this.jurusan = jurusan;
    }

    public String getJurusan() {
        return jurusan;
    }

    public void setJurusan(String jurusan) {
        this.jurusan = jurusan;
    }

    public String getNim() {
        return nim;
    }

    public void setNim(String nim) {
        this.nim = nim;
    }
    public void status (String Status){
        System.out.println(Status);
    }
   
}

4. Membuat Class Pegawai sebagai pewaris Class Manusia;
 
public class Pegawai extends Manusia{
    String nip, bidangBagian, gaji;

    public Pegawai() {
    }

    public Pegawai(String nip, String bidangBagian, String gaji) {
        this.nip = nip;
        this.bidangBagian = bidangBagian;
        this.gaji = gaji;
    }

    public String getBidangBagian() {
        return bidangBagian;
    }

    public void setBidangBagian(String bidangBagian) {
        this.bidangBagian = bidangBagian;
    }

    public String getGaji() {
        return gaji;
    }

    public void setGaji(String gaji) {
        this.gaji = gaji;
    }

    public String getNip() {
        return nip;
    }

    public void setNip(String nip) {
        this.nip = nip;
    }
   
    public void Status (String Status){
        System.out.println(Status);              
    }
}
 
5. Membuat Main Class;

public class MainTestClass {
  
    public static void main(String[] args) {
        Siswa siswaErfan = new Siswa();
        siswaErfan.setNama("Erfan Febriantoro");
        siswaErfan.setUmur(25);
        siswaErfan.setJenisKelamin("Laki-laki");
        siswaErfan.setNis("1210652040");
        siswaErfan.setKelas("11a");
        siswaErfan.setWalikelas("Wildan Firaz Adinata, S.Kom, M.Kom");
        String infoSiswa = "     INFO SISWA"
                + "\nNama          :" + siswaErfan.getNama()
                + "\nUmur          :" + siswaErfan.getUmur()
                + "\nJenis Kelamin :" + siswaErfan.getJenisKelamin()
                + "\nNIS           :" + siswaErfan.getNis()
                + "\nKelas         :" + siswaErfan.getKelas()
                + "\nWali Kelas    :" + siswaErfan.getWalikelas();
      
        System.out.println(infoSiswa);
      
        siswaErfan.status();
        System.out.println("Mempunyai Kemampuan untuk tertawa : ");
        Siswa.tertawa("he . . . he . . .");
    }
}


Maka jika kita run, akan menghasilkan output sebagaimana gambar berikut :


Semoga bermanfaat.

4 comments:

  1. kita juga punya nih jurnal mengenai object oriented programming, silahkan dikunjungi dan dibaca , berikut linknya
    http://repository.gunadarma.ac.id/bitstream/123456789/3407/1/Rancang%20Bangun%20Program%20Aplikasi%20Kamus%20Elektronik%20Untuk%20Perangkat%20Sistem%20Komputasi%20Bergerak%20berbasiskan%20Java%20MIDP.pdf

    ReplyDelete
  2. saya coba contohnya kok eror ya mas bro

    ReplyDelete
    Replies
    1. run:
      java.lang.NoClassDefFoundError: secret/oop/MainTestClass
      Caused by: java.lang.ClassNotFoundException: secret.oop.MainTestClass
      at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
      at java.security.AccessController.doPrivileged(Native Method)
      at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
      at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
      Could not find the main class: secret.oop.MainTestClass. Program will exit.
      Exception in thread "main" Java Result: 1
      BUILD SUCCESSFUL (total time: 0 seconds)

      Delete