KONSEP OBJEK

Ada banyak perbédaan mendasar antara Pemrograman Prosédural dengan Pemrograman Beroriéntasi Objék. Pemrograman Prosédural memecah program besar dan rumit menjadi beberapa fungsi atau prosédur (métode), kemudian dipecah lagi dan terus begitu sampai didapat suatu fungsi dan prosédur sederhana. Ini dinamakan pendekatan Top Down. Sedangkan pemrograman Beroriéntasi Objék justru membuat fungsi atau métode sederhana, kemudian digabung menjadi lebih kompléks dan terus begitu sampai akhirnya didapat satu program utama yang paling rumit. Ini dinamakan pendekatan Bottom Up.

Misalkan saja: Saya hendak membuat program untuk menghitung volume.
Bila menggunakan pendekatan Top Down, maka saya akan membuat prosédur untuk menghitung volume, yaitu luas alas dikali tinggi. Luas alas adalah panjang dikali lébar. Variabel panjang, lébar, dan tinggi dikirim dalam bentuk paraméter. Untuk program-program sederhana, pemrograman prosédural lebih cepat dibuat dan lebih ringkas. Tapi semakin besar programnya, akhirnya makin rumit dikendalikan.

Bila menggunakan pendekatan Bottom Up, maka saya akan membuat prosédur untuk menghitung luas alas terlebih dulu, yaitu panjang dikali lébar. Setelah itu baru membuat prosédur untuk menghitung volume yaitu luas alas dikali tinggi. Pada OOP / PBO, variabel-variabel melekat pada objék. Bila tidak dibutuhkan, bisa disembunyikan sehingga program tetap mudah dikendalikan dan lebih mudah dipahami.

Gambaran OOP seperti ini.
Sepéda motor adalah Kelas. Masih berupa konsép. Belum ada wujud nyata. Vario adalah objek, perwujudan dari Sepéda motor. Pada Vario ada tombol starter untuk menghidupkan mesin. Bagaimana cara kerjanya sehingga mesin bisa hidup? Pengendara tidak perlu tahu. Semua itu telah dibungkus dan disembunyikan oléh montir / téknisi. Pengendara hanya perlu tahu bahwa untuk menghidupkan mesin, cukup menekan tombol warna kuning pada setang sebelah kanan. Bila masalahnya diperbesar lagi, maka pemboncéng tidak perlu tahu bagaimana cara menghidupkan sepéda motor. Itu urusan si pengendara. Dia hanya perlu tahu cara memboncéng.

Bingung?
Oké, mari kita membuat program untuk menghitung luas suatu persegi.

Ketik kode di bawah ini, lalu simpan dengan nama Persegi.java

/* --------------------------------
   Program penghitung luas persegi.
   Dibuat oleh Mawan A. Nugroho.
   Tanggal 21 Februari 2017.

   Nama file: Persegi.java
   -------------------------------- */

class Persegi {
	private int panjang, lebar;

	public void setPanjang(int panjang) {
		this.panjang = panjang;
	}

	public void setLebar(int lebar) {
		this.lebar = lebar;
	}

	public int getLuas() {
		int luas;

		luas = this.panjang * this.lebar;
		return(luas);
	}
}

Ketik kode di bawah ini, lalu simpan dengan nama Utama.java

/* --------------------------------
   Program penghitung luas persegi.
   Dibuat oleh Mawan A. Nugroho.
   Tanggal 21 Februari 2017.

   Nama file: Utama.java
   -------------------------------- */
class Utama {

	public static void main(String[] args) {
		Persegi kertas;
		kertas = new Persegi();

		kertas.setPanjang(10);
		kertas.setLebar(4);
		System.out.println("Luas = " + kertas.getLuas());
	}
}

Untuk menjalankan, ketik:

  • javac Utama.java
  • java Utama

Compiler Java akan mengcompile Persegi.java dan Utama.java. Hasilnya adalah Persegi.class dan Utama.class. Persegi.class tidak bisa dijalankan secara langsung, karena dia adalah bagian dari Utama.class.

PEWARISAN

Pada bagian sebelumnya, kita telah membuat program untuk menghitung luas persegi. Misalkan satu bulan kemudian kita diminta membuat program untuk menghitung volume kotak. Proyék lebih besar nih. Kita tahu bahwa volume adalah luas alas dikali tinggi. Nah, bukankah program penghitung luas sudah pernah dibuat sebelumnya? Jadi kita tak perlu membuat lagi, tapi cukup konséntasi ke masalah berikutnya yaitu menghitung volume.

Ketik program di bawah ini, lalu simpan dengan nama Kotak.java

/* --------------------------------
   Program penghitung volume kotak.
   Dibuat oleh Mawan A. Nugroho.
   Tanggal 21 Februari 2017.

   Nama file: Kotak.java
   -------------------------------- */

class Kotak extends Persegi {
	private int tinggi;

	public void setTinggi(int tinggi) {
		this.tinggi = tinggi;
	}

	public int getVolume() {
		int volume;

		volume = getLuas() * this.tinggi;
		return(volume);
	}
}

Perhatikan baris ke 9. Ada kata kunci extends. Maksudnya adalah, kelas Kotak merupakan perluasan dari kelas Persegi. Dengan demikian, kelas Kotak mewarisi semua yang dimiliki kelas Persegi. Di kelas Kotak otomatis ada métode SetPanjang, setLebar, dan fungsi getLuas. Kita tidak usah membuat kode untuk menghitung luas alas. Yang harus dibuat hanyalah setTinggi dan getVolume.

Kelas Persegi disebut Super Class atau leluhur. Kelas Kotak disebut Sub Class atau turunan.

Silakan modifikasi program Utama.java menjadi seperti di bawah ini:

/* --------------------------------
   Program penghitung volume kotak.
   Dibuat oleh Mawan A. Nugroho.
   Tanggal 21 Februari 2017.

   Nama file: Utama.java
   -------------------------------- */
class Utama {

	public static void main(String[] args) {
		Persegi kertas = new Persegi();
		kertas.setPanjang(10);
		kertas.setLebar(4);
		System.out.println("Luas = " + kertas.getLuas());

		Kotak bakMandi = new Kotak();
		bakMandi.setPanjang(10);
		bakMandi.setLebar(4);
		bakMandi.setTinggi(6);
		System.out.println("Volume = "+ bakMandi.getVolume());
	}
}

Lakukan kompilasi dengan perintah javac Utama.java
Lalu jalankan dengan perintah java Utama

Sekian pembahasan singkat tentang OOP / PBO. Semoga bermanfaat.

Tugas untuk mahasiswa tanggal 5 Januari 2021:

  • Salin semua program di atas, lalu screen shot laptop anda sehingga tampak source code Utama.java dan hasil eksekusi Utama.class (Java Utama).
  • Kirim screenshot ke Moodle.

Tugas untuk mahasiswa tanggal 12 Januari 2021:

  • Buat folder bernama Lingkaran.
  • Di dalam folder Lingkaran, buat program java:
    • Lingkaran.java = Untuk menghitung luas lingkaran. Ada dua métode yaitu setJariJari dan setDiameter, serta satu fungsi yaitu getLuas. Diaméter adalah dua kali jari-jari, atau jari-jari adalah setengah dari diaméter. Mengesét jari-jari berarti mengesét diaméter. Demikian pula sebaliknya.
      Rumus luas lingkaran adalah π * r * r di mana π = 22/7 dan r = jari-jari.
    • Luas.java = Program utama untuk menghitung luas lingkaran. Program ini memakai kelas Lingkaran.
    • Tabung.java = Untuk menghitung volume tabung. Kelas ini adalah perpanjangan dari kelas Lingkaran. Tambahkan métode baru yaitu setTinggi dan satu fungsi yaitu getVolume.
      Rumus volume tabung adalah a * t di mana a = luas alas dan t = tinggi tabung.
    • Volume.java = Program utama untuk menghitung volume tabung. Program ini memakai kelas Tabung.
  • Gunakan tipe variabel pecahan (bukan integer atau bilangan bulat).