#02 KARAKTERISTIK METODOLOGI PBO

A. Abstraksi (Abstraction)

Abstraksi adalah proses menyembunyikan detail yang tidak penting dan hanya menampilkan fitur terpenting dari sebuah objek.

Abstraksi membantu programmer:
  • Memahami objek tanpa detail berlebihan
  • Fokus pada fungsi inti
  • Mengurangi kerumitan sistem besar

Contoh dalam dunia nyata

Ketika kamu menggunakan ATM, kamu cukup:
  • Masukkan kartu
  • Pilih menu
  • Masukkan PIN
Kamu tidak melihat proses di belakang:
  • Query SQL
  • Validasi server
  • Enkripsi PIN
Ini adalah abstraksi.

Contoh dalam kode (Java)

public class Produk {
    
    private String nama;
    private double harga;

    // Constructor
    public Produk(String nama, double harga) {
        this.nama = nama;
        this.harga = harga;
    }

    // Method untuk menampilkan informasi
    public void tampilInfo() {
        System.out.println(nama + " - Rp" + harga);
    }

    // Getter dan Setter (opsional)
    public String getNama() {
        return nama;
    }

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

    public double getHarga() {
        return harga;
    }

    public void setHarga(double harga) {
        this.harga = harga;
    }
}
Yang ditampilkan pada user → nama dan harga saja.
Detail seperti:
  • nomor batch
  • berat bersih
  • tanggal input database
tidak perlu ditampilkan → ini abstraksi.


B. Enkapsulasi (Encapsulation)

Enkapsulasi adalah pengamanan data dengan cara:
  • Menyembunyikan data (private)
  • Memberikan akses melalui method tertentu (getter/setter)

Tujuan:

  • Data tidak bisa diubah sembarangan
  • Struktur kode lebih rapi
  • Terhindar dari error akibat perubahan data langsung

Contoh Kasus

Dalam sistem kasir:
  • Harga produk tidak boleh diedit langsung oleh kasir
  • Perubahan harga hanya boleh oleh admin
Karena itu, field harga harus private.
public class Produk {
    
    private String nama;      // private
    private double harga;     // private

    // Constructor
    public Produk(String nama, double harga) {
        this.nama = nama;
        this.harga = harga;
    }

    // Getter untuk harga
    public double getHarga() {
        return harga;
    }

    // Setter untuk harga dengan validasi
    public void setHarga(double hargaBaru) {
        if (hargaBaru > 0) {
            this.harga = hargaBaru;
        } else {
            System.out.println("Harga tidak valid!");
        }
    }

    // Getter dan Setter untuk nama (opsional)
    public String getNama() {
        return nama;
    }

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


C. Inheritance (Pewarisan)

Inheritance adalah mekanisme me-warisi:
  • atribut
  • method
dari satu class ke class lain.
Class induk    = parent
Class turunan = child

Manfaat besar:

  1. Mengurangi duplikasi kode
  2. Membuat struktur sistem lebih berjenjang
  3. Memudahkan pengembangan fitur baru

Contoh dalam dunia nyata

Jenis produk:
  • Produk → induk
  • ProdukMakanan → child
  • ProdukElektronik → child
  • ProdukAksesoris → child
Semua “produk” pasti punya:
  • nama
  • harga
  • stok
Tetapi detail setiap jenis berbeda:
  • ProdukMakanan → tanggal kadaluarsa
  • Elektronik → garansi

Contoh Kode:

Class Produk (Indukclass)
public class Produk {
    
    protected String nama;
    protected double harga;

    // Constructor
    public Produk(String nama, double harga) {
        this.nama = nama;
        this.harga = harga;
    }

    public void tampilInfo() {
        System.out.println("Nama: " + nama);
        System.out.println("Harga: Rp" + harga);
    }
}
Class ProdukMakanan (Subclass)
public class ProdukMakanan extends Produk {

    private String expirate;

    // Constructor subclass memakai super()
    public ProdukMakanan(String nama, double harga, String expirate) {
        super(nama, harga);
        this.expirate = expirate;
    }

    public String getExpirate() {
        return expirate;
    }

    public void tampilInfo() {
        super.tampilInfo(); // ambil tampilan dari Produk
        System.out.println("Tanggal Expired: " + expirate);
    }
}
Class Main
public class Main {
    public static void main(String[] args) {

        ProdukMakanan mie = new ProdukMakanan("Indomie", 3500, "10-12-2025");

        mie.tampilInfo();
    }
}


D. Polimorfisme (Polymorphism)

Polimorfisme adalah kemampuan satu method memiliki banyak perilaku berbeda meskipun namanya sama.

Contoh sederhana

Method hitungDiskon():
  • Pada ProdukMakanan → diskon 5%
Pada ProdukElektronik → diskon 10%
Pemanggilan sama → output berbeda.

Contoh kode:

Class Produk (Indukclass)
public class Produk {

    public double hitungDiskon() {
        return 0;   // default tidak ada diskon
    }
}
Class ProdukMakanan (Subclass)
public class ProdukMakanan extends Produk {
    
    @Override
    public double hitungDiskon() {
        return 0.05;    // diskon 5%
    }
}
Class ProdukElektronik (Subclass)
public class ProdukElektronik extends Produk {

    @Override
    public double hitungDiskon() {
        return 0.10;    // diskon 10%
    }
}
Main Class
public class Main {
    public static void main(String[] args) {

        Produk p1 = new Produk();
        Produk p2 = new ProdukMakanan();
        Produk p3 = new ProdukElektronik();

        System.out.println("Diskon Produk Umum       : " + p1.hitungDiskon());
        System.out.println("Diskon Produk Makanan    : " + p2.hitungDiskon());
        System.out.println("Diskon Produk Elektronik : " + p3.hitungDiskon());
    }
}

 

E. Modularitas (Modularity)

Modularitas adalah kemampuan untuk membagi program menjadi modul atau bagian-bagian terpisah.

Manfaat:

  • Lebih mudah membaca kode
  • Lebih mudah mencari erro
  • Kerjasama tim lebih mudah
  • Sistem lebih scalable

Contoh modul dalam aplikasi kasir:

📦 src
├── Produk.java
├── Transaksi.java
├── Kasir.java
└── Laporan.java


F. Reusability (Dapat Digunakan Ulang)

Reusability adalah kemampuan untuk menggunakan kembali class atau kode yang sama untuk proyek lain atau bagian lain dari aplikasi.

Contoh Nyata

Class DatabaseConfig:
  • dipakai untuk sistem kasir
  • dipakai untuk sistem absensi
  • dipakai untuk sistem penjualan online

Dengan reusability:

  • Pekerjaan lebih cepat
  • Tidak perlu menulis dari awal
  • Kode lebih stabil


G. Interaksi Antar Objek (Object Collaboration)

Dalam PBO, objek jarang berdiri sendiri. Semua saling berinteraksi.
Contoh dalam aplikasi kasir:
  • Produk berinteraksi dengan Transaksi
  • Transaksi berinteraksi dengan Kasir
  • Struk berinteraksi dengan Printer
Objek bekerja seperti tim:
  • masing-masing punya tugas
  • saling memanggil method
Ini membuat program menjadi lebih realistis dan lebih mudah dipahami.

Posting Komentar

Lebih baru Lebih lama

Formulir Kontak