#13 GENERALISASI

 A. Pengantar Konsep

Dalam dunia nyata, kita sering melihat objek-objek berbeda tetapi memiliki kesamaan. Misalnya:

  • Mobil, Motor, dan Bus → semuanya adalah Kendaraan
  • Guru, Siswa, dan Karyawan Tata Usaha → semuanya adalah Warga Sekolah
  • Ayam, Sapi, Kucing semuanya adalah Hewan

Kemampuan untuk mengelompokkan objek-objek yang berbeda tetapi memiliki karakteristik umum inilah yang disebut Generalisasi


B. Definisi Generalisasi

Proses menarik karakteristik umum dari beberapa objek atau kelas untuk membentuk kelas yang lebih umum (general). Dalam PBO, generalisasi menghasilkan sebuah Superclass dari beberapa Subclass yang memiliki kesamaan atribut dan perilaku.

Generalization hampir sama dengan inheritance namun fokusnya adalah dari bawah ke atas (bottom-up thinking).

Contoh Sederhana (Konsep)

Sebelum generalisasi:

Class Atribut Method
Siswa nama, umur, NIS belajar(), makan()
Guru nama, umur, NIP mengajar(), makan()
Keduanya punya kesamaan:

  • nama, umur
  • method makan()

Maka terbentuk kelas baru yaitu: Manusia (Superclass) 


C. Contoh Program Generalisasi dengan Java

Versi Sebelum Generalisasi (Tidak Efisien)

class Siswa {
    String nama;
    int umur;
    int nis;

    void makan() {
        System.out.println("Siswa sedang makan.");
    }
}

class Guru {
    String nama;
    int umur;
    String nip;

    void makan() {
        System.out.println("Guru sedang makan.");
    }
}
 Kode berulang → atribut nama, umur, dan method makan() terdapat di kedua kelas.


Versi Setelah Generalisasi (Lebih Efektif dan Rapi)

// Superclass (hasil generalisasi)
class Manusia {
    String nama;
    int umur;

    void makan() {
        System.out.println(nama + " sedang makan.");
    }
}

// Subclass hasil spesialisasi
class Siswa extends Manusia {
    int nis;

    void belajar() {
        System.out.println(nama + " sedang belajar.");
    }
}

class Guru extends Manusia {
    String nip;

    void mengajar() {
        System.out.println(nama + " sedang mengajar.");
    }
}

public class Main {
    public static void main(String[] args) {
        Siswa s = new Siswa();
        s.nama = "Budi";
        s.umur = 16;
        s.nis = 123;
        s.makan();
        s.belajar();

        Guru g = new Guru();
        g.nama = "Pak Wahyu";
        g.umur = 40;
        g.nip = "19821010";
        g.mengajar();
        g.makan();
    }
}

 

D. Tujuan dan Manfaat Generalisasi

Manfaat Penjelasan
Mengurangi duplikasi kode Atribut dan method umum cukup ditulis sekali
Membuat struktur kode lebih mudah dibaca Kode lebih terorganisir karena kesamaan ditempatkan di kelas induk
Mempermudah pengembangan sistem Ketika ada fitur baru untuk semua objek, cukup tambahkan di superclass
Memudahkan maintainability Perubahan di superclass otomatis berlaku untuk semua subclass


E.  Hubungan Generalisasi dengan Inheritance

Perbandingan Inheritance Generalisasi
Arahnya Penurunan sifat dari superclass ke subclass Pengelompokan subclass menjadi superclass
Cara berpikir Top → Down Bottom → Up
Fokus Penggunaan kembali fitur Penyederhanaan struktur data

Posting Komentar

Lebih baru Lebih lama

Formulir Kontak