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() |
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 spesialisasiclass 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 |
Tags
PBTGM