Dasar Pemrograman Berorientasi Objek (PBO)

By: Johan Supriyanto, S.Kom. - April 16, 2013
Pada artikel sebelumnya saya telah menyampaikan mengenai perulangan (loop) , kali ini saya akan menyampaikan materi dasar pemrograman berorentasi objek.
Apa yang di maksud dengan Pemrograman Berorientasi Objek?
•Pemrograman Beroroentasi Objek adalah sebuah paradigma pemrograman yang berorientasikan kepada objek.
•Semua atribut, prosedur dan fungsi dibungkus dalam objek.
•Interaksi tiap data, prosedur dan fungsi dilakukan melalui objek.

Kelas
Pengenalan Kelas
•Kelas merupakan kerangka kode yang berisikan struktur atribut, struktur prosedur dan struktur fungsi yang digunakan untuk membuat objek.
•Sebuah kelas dapat menghasilkan lebih dari satu objek.
Membuat Kelas
•Nama kelas harus sama dengan nama File.
•Nama kelas tidak boleh mengandung huruf unik (@, #, $, %, &, dll) dan huruf whitespace (spasi, enter, tab, dll)
class NamaKelas {
   
    // isi kelas
   
}

Objek
Pengenalan Objek
Objek merupakan hasil instansiasi dari kelas.
•Untuk membuat objek, di Java dapat menggunakan perintah new.
•Atribut, metode dan fungsi yang dimiliki oleh objek, hanya yang dideklarasikan dalam kelas.
Membuat Objek
•Objek merupakan variabel yang memiliki tipe data Kelas
•Kriteria pembuatan objek sama seperti pembuatan variabel.
NamaKelas object = new NamaKelas();

Atribut
•Atribut merupakan data atau sifat yang dimiliki oleh sebuah kelas.
•Atribut dibuat layaknya sebuah variabel.
Membuat Atribut
class NamaKelas {
    TipeData namaAtribut;
   
}
Manipulasi Atribut
•Atribut dapat diakses lewat kelas.
•Untuk mengakses atribut, dapat menggunakan tanda . (titik)
    NamaKelas objek = new NamaKelas();
    objek.namaAtribut = …;

Konstanta
•Sebuah atribut dapat dijadikan sebagai konstanta.
•Caranya sama dengan membuat variabel konstanta, yaitu dengan menambahkan perintah final.
Membuat Konstanta
class NamaKelas {
    TipeData namaAtribut;
    final TipeData namaKonstanta = …;
}

Prosedur
•Prosedur merupakan sebuah kode program yang dapat digunakan untuk menjalankan instruksi program dalam sebuah kelas.
•Sebuah kelas dapat memiliki lebih dari satu prosedur.
•Nama prosedur tidak boleh sama dengan prosedur lain.
Membuat Prosedur
class NamaKelas {
    void namaProsedur(){
        // isi prosedur
    }
}
Menggunakan Prosedur
NamaKelas objek = new NamaKelas();
objek.namaProsedur();

Fungsi
•Fungsi merupakan kode program yang digunakan untuk menghasilkan sesuatu.
•Untuk mengembalikan hasil, dapat menggunakan perintah return diikuti dengan data yang dihasilkan.
•Fungsi hanya dapat menghasilkan sebuah nilai.
•Sebuah kelas dapat memiliki lebih dari satu fungsi.
•Nama fungsi tidak boleh sama dengan fungsi yang lain.
Membuat Fungsi
class NamaKelas {
    TipeData namaFungsi(){
        // kode program
        return hasil;
    }
}
Menggunakan Fungsi
NamaKelas objek = new NamaKelas();
TipeData hasil = objek.namaFungsi();

Parameter
•Parameter merupakan data yang dapat disisipkan ke dalam prosedur dan fungsi.
•Jumlah parameter dalam prosedur dan fungsi dapat lebih dari satu.
Membuat Parameter
class NamaKelas {
    void NamaProsedur(TipeData parameter){
        // kode program
    }
    TipeData namaFungsi(TipeData param1,             TipeData param2){
        // kode program
        return hasil;
    }
}
Menggunakan Parameter
NamaKelas objek = new NamaKelas();
objek.namaProsedur(“String”);
TipeData hasil = objek.namaFungsi(100, 300);
TIpeData variabel = …;
objek.namaProsedur2(variabel);

this
Kata Kunci this
•Kata kunci this digunakan untuk mengakses kelas itu sendiri.
•Biasanya kata kunci this digunakan ketika mengakses sebuah sebuah atribut kelas, dimana nama atribut tersebut sama dengan nama parameter.
Menggunakan this
class NamaKelas {
    String nama;
    void ubahNama(String nama){
        this.nama = nama;
    }
}

Overloading
•Overloading merupakan kemampuan membuat prosedur dan fungsi dengan nama yang sama, namun berbeda jumlah parameter.
•Parameter dengan jumlah yang sama diperbolehkan dengan ketentuan tipe data parameternya harus berbeda.
Membuat Overloading (1)
class NamaKelas {
    void NamaProsedur(){
    }
    void NamaProsedur(TipeData param){
    }
    void NamaProsedur(TipeData param1,
        TipeData param2){
    }
}
Membuat Overloading (2)
class NamaKelas {
    TipeData namaFungsi(){
        return hasil;
    }
    TipeData namaFungsi(TipeData param){
        retur hasil;
    }
    TipeData namaFungsi(TipeData param1,
        TipeData param2){
        return hasil;
    }
}
Menggunakan Overloading
NamaKelas objek = new NamaKelas();
objek.namaProsedur();
objek.namaProsedur(“String”);
objek.namaProsedur(100, 200);
TipeData hasil1 = objek.namaFungsi();
TipeData hasil2 = objek.namaFungsi(“String”);
TipeData hasil3 = objek.namaFungsi(100, 200);

Konstruktor
•Konstruktor merupakan prosedur yang diakses secara langsung ketika membuat sebuah objek dibuat.
•Konstruktor dapat memiliki parameter dan juga dapat di overloading.
•Nama konstruktor harus sama dengan nama kelas.
Membuat Konstruktor
class NamaKelas {
    NamaKelas(){
    }
    // overloading konstruktor
    NamaKelas(TipeData parameter){
    }
}
Menggunakan Konstruktor
NamaKelas objek1 = new NamaKelas();
NamaKelas objek2 = new NamaKelas(“parameter”);

Paket
•Paket merupakan fitur yang dapat digunakan untuk memanajemen file Kelas.
•Biasanya kelas-kelas yang sejenis dikumpulkan dalam sebuah paket, misal kelas-kelas data disimpan dalam paket data, kelas-kelas form disimpan dalam paket gui, dan sebagainya.
Membuat Paket
•Membuat paket dilakukan pada kelas, dan dapat menggunakan perintah package diikuti dengan nama paket nya.
package namapaket;
class NamaKelas {
   
}
Paket Bertingkat
•Sebuah paket dapat dibuat didalam paket lagi dengan menggunakan tanda . (titik).
package paket.subpaket;
class NamaKelas {
   
}
Mengakses Kelas dari Luar Paket
•Secara default, sebuah kelas tidak dapat menggunakan kelas yang berada dalam luar paket.
•Untuk menggunakan kelas di luar paket, perlu menggunakan perintah import diikuti dengan nama paket dan kelasnya.
import namapaket.subpaket.NamaKelas;
NamaKelas objek = new NamaKelas();

Visibility
•Visibility merupakan kemampuan untuk mengontrol sebuah akses ke kelas, atribut, prosedur dan fungsi.
•Java mendukung beberapa visibility, yaitu :
- Default
- Public
- Private, dan
- Protected
Hak Akses Visibility
Visibility
Kelas
Paket
Sub Kelas
Umum
Private
Y



Default
Y
Y


Protected
Y
Y
Y

Public
Y
Y
Y
Y

Visibility Public
Membuat Public
public class NamaKelas {
    public TipeData namaAtribut;
    public void namaProsedur(){
    }
    public TipeData namaFungsi(){
        return hasil;
    }
}
Visibility Private
Membuat Private
public class NamaKelas {
    private TipeData namaAtribut;
    private void namaProsedur(){
    }
    private TipeData namaFungsi(){
        return hasil;
    }
}

Static
Kata Kunci static
•Kata kunci static dapat digunakan untuk membuat sebuah atribut, fungsi dan prosedur dapat diakses secara langsung tanpa membuat objek.
•Atribut, fungsi dan prosedur yang telah diberi kata kunci static, tidak akan dapat mengakses data pada kelas tersebut secara langsung.
Membuat static
public class NamaKelas {
    public static TipeData namaAtribut;
    public static void namaProsedurStatic(){
    }
    public static TipeData namaFungsiStatic(){
        return hasil;
    }
}
Menggunakan static
// atribut static
NamaKelas.namaAtributStatic;
// prosedur static
NamaKelas.namaProsedurStatic();
// fungsi static
TipeData hasil = NamaKelas.namaFungsiStatic();

Enum
•Enum merupakan jenis kelas yang hanya memiliki atribut dia sendiri.
•Enum digunakan sebagai pengganti konstanta.
Membuat Enum
public enum NamaEnum{
    ENUM_SATU,
    ENUM_DUA,
    ENUM_TIGA,
    ENUM_EMPAT
   
}
Menggunakan Enum (1)
public class NamaKelas {
    public NamaEnum atribut;
}
Menggunakan Enum (2)
NamaKelas objek = new NamaKelas();
// mengubah atribut enum
objek.atribut = NamaEnum.ENUM_SATU;

Enkapsulasi
•Memastikan atribut objek tidak dapat diubah dan diakses secara langung.
•Hanya prosedur dan fungsi tertentu yang diberi izin untuk mengakses dan mengubah atribut objek.
Contoh Enkapsulasi
public class Orang {
    private String nama;
    public void ubahNama(String nama){
        this.nama = nama;
    }
    public String tanyaNama(){
        return this.nama;
    }
}

Java Beans
•Java Beans merupakan implementasi dari enkapsulasi.
•Dalam Java Beans semua atribut dibuat menjadi private.
•Untuk mengakses atribut dibuat fungsi getNamaAtribut.
•Untuk mengubah atribut dibuat prosedur setNamaAtribut.
•Untuk nilai boolean, fungsi yang dibuat adalah isNamaBoolean.
Contoh Java Beans (1)
public class Orang {
    private String nama;
    public String getNama(){
        return this.nama;
    };
    public void setNama(String nama){
        this.nama = nama;
    }
}
Contoh Java Beans (2)
public class Orang {
    private boolean menikah;
    public boolean isMenikah(){
        return this.menikah;
    }
    public void setMenikah(boolean menikah){
        this.menikah = menikah;
    }
}

Inner Class
•Inner Class merupakan kelas yang terdapat dalam sebuah kelas.
•Cara membuat inner class sama seperti membuat kelas biasa, yang membedakan adalah kelas tersebut berada dalam blok kelas yang sudah ada.
Membuat Inner Class
public class NamaKelas {
    // isi kelas
    public class NamaInnerClass{
        // isi inner class
    }
}
Menggunakan Inner Class
NamaKelas o1 = new NamaKelas();
NamaInnerClass o2 = o1.new NamaInnerClass()

Static Inner Class
•Kata kunci static dapat juga digunakan untuk sebuah inner class.
•Dengan menggunakan kata kunci static, maka inner class tidak akan bergantung lagi pada outer class.
Membuat Static Inner Class
public class NamaKelas {
    // isi kelas
    public static class NamaInnerClass{
        // isi inner class
    }
}
Menggunakan Static Inner Class
NamaKelas.NamaInnerClass objek =
    new NamaKelas.NamaInnerClass(); 

Demikian Pembahasan kali ini mengenai dasar pemrograman beroriantasi objek. Semoga penjelasan di atas bisa membantu anda.

Artikel Terkait