Memahami Pewarisan di Java

Memahami Pewarisan di Java

Pendahuluan Berbicara mengenai Java,  Anda akan disuguhkan dengan sebuah bahasa pemrograman yang dapat berjalan di berbagai platform dan dengan gaya pemrograman berorientasi objek. Perlu…

Pendahuluan

Berbicara mengenai Java,  Anda akan disuguhkan dengan sebuah bahasa pemrograman yang dapat berjalan di berbagai platform dan dengan gaya pemrograman berorientasi objek. Perlu diketahui dan dipahami dengan baik konsep objek, kelas, pewarisan, hak akses, polimorfisme, dan sebagainya, yang membedakan antara pemrograman struktural dan pemrograman berbasis objek.

Artikel ini terlalu sederhana untuk bisa mengupas tuntas mengenai Pemrograman Java secara utuh. Selain karena materi yang padat, Java sendiri terbagi atas tiga bagian, yaitu J2EE (Java 2 Enterprise Edition) yang berjalan di sisi server, J2SE (Java 2 Standard Edition) yang bisa Anda coba di komputer (PC, laptop, netbook), dan J2ME (Java 2 Mobile Edition) yang umumnya dijalankan di perangkat mobile (HP, smartphone, PC tablet) namun bisa juga dijalankan di komputer melalui emulator yang disediakan, misalkan emulator Symbian dan Android. Untuk IDE penulis menyarankan di Eclipse, Netbeans, atau Geany, dan terdapat di semua platform baik Linux, Windows, maupun Mac.

Kembali mengenai pewarisan (inheritance), ingat kembali mengenai kelas seperti yang penulis sampaikan di paragraf di atas. Sebuah kelas dapat menurunkan kelas lainnya, sehingga kelas turunannya tersebut memiliki struktur dan sifat (perilaku, dalam hal ini methode) seperti kelas induknya. Meski demikian, kelas anak tetap bisa memiliki perilaku tersendiri (tambahan) di luar yang diwarisi oleh kelas induknya. Sebuah kelas induk (kemudian akan disebut kelas super) dapat menurunkan beberapa kelas anak.

OK, kita langsung saja ke tahap studi kasus, untuk lebih mempertajam sedikit penjelasan di atas.

Studi Kasus : Kelas Sistem Operasi

Di sini Penulis akan membuat sebuah kelas super bernama kelas SistemOperasi.java, yang akan menurunkan 2 buah kelas anak yaitu kelas MSWindows dan kelas Unix. masing-masing kelas anak ini akan menurunkan lagi kelas anak di bawahnya. yaitu kelas MSWindows akan menurunkan kelas Vista serta kelas Unix akan menurunkan kelas Linux, BSD, MacOS, dan Solaris.

Jika dibuatkan dalam bentuk diagram sebagai berikut (via Dia Diagram) :

 

Kelas Sistem Operasi

Tampak pada gambar di atas bahwa kelas SistemOperasi (teratas) adalah kelas induk untuk semua kelas di bawahnya (setiap kelas ditandai dengan kotak berisi nama kelas bersangkutan). Misalkan salah satu anaknya adalah kelas Unix yang salah satu anaknya adalah kelas Linux, Kelas Linux menurunkan kelas Ubuntu. Setiap anak atau cucu mewarisi perilaku orang tua dan kakek/neneknya di atas, namun tetap dapat ditambahkan perilaku lainnya, dalam hal ini penambahan methode yang diinginkan.

Dalam dunia pemrograman, tentu saja keberadaan sebuah pewarisan ini akan menghemat waktu, karena kita cukup menurunkan kelas yang sudah ada menjadi sebuah kelas yang baru, untuk kemudian menambahkan methode yang diperlukan secara spesifik di kelas tersebut.

Memulai Pemrograman

Setelah ditampilkan bagan diagram di atas yang dikerjakan di Dia Diagram, kini saatnya mengimplementasikannya dalam sebuah kode Java sederhana. Silahkan copy script sederhana berikut ke dalam editor/IDE favorit Anda. Dalam hal ini penulis menggunakan Geany di Linux Ubuntu 11.04.

Kode :

/*
 * Program Sistem Operasi
 * Untuk menunjukkan pewarisan, hak akses
 * I Putu Agus Eka Pratama, ST
 * MTI ITB
 */
//kelas MSWindows
//super kelas untuk kelas anak : Vista
class MSWindows {
	int ID;
	String Nama;
	String Keterangan;
	//konstruktor
	public MSWindows (int id, String nama, String keterangan) {
		ID = id;
		Nama = nama;
		Keterangan = keterangan;
	}

	//methode
	public void TampilkanRincian() {
		System.out.println("ID = " +ID);
		System.out.println("Nama Sistem Operasi = " + Nama);
		System.out.println("Keterangan = " + Keterangan);
	}
}

//kelas Vista
//Turunan dari kelas MSWindows, menggunakan "extends" dan "super"
class Vista extends MSWindows {
	int Versi;

	//konstruktor
	public Vista (int wID, String nama, String keterangan, int versi) {
		super (wID, nama, keterangan);
		Versi = versi;
	}

	//methode
	public void TampilkanRincian() {
		System.out.println("ID = " + ID);
		System.out.println("Nama Sistem Operasi = " + Nama);
		System.out.println("Keterangan = " + Keterangan);
		System.out.println("Versi = " + Versi);
	}
}

// kelas Unix
//super kelas untuk kelas anak : Linux, BSD, MacOS, Solaris.
class Unix {
	int ID;
	String Nama;
	String Keterangan;

	//konstructor
	public Unix (int id, String nama, String keterangan) {
		ID = id;
		Nama = nama;
		Keterangan = keterangan;
	}

	//methode
	public void TampilkanRincian() {
		System.out.println("ID = " +ID);
		System.out.println("Nama Sistem Operasi = " + Nama);
		System.out.println("Keterangan = " + Keterangan);
	}
}

//kelas Linux
//Turunan dari kelas Unix, menggunakan "extends" dan "super"
class Linux extends Unix {
	int Versi;

	//konstructor
	public Linux (int uid, String nama, String keterangan, int versi) {
		super (uid, nama, keterangan);
		Versi = versi;
	}

	//methode
	public void TampilkanRincian() {
		System.out.println("ID = " + ID);
		System.out.println("Nama Sistem Operasi = " + Nama);
		System.out.println("Keterangan = " + Keterangan);
		System.out.println("versi = " + Versi);
	}
}

//kelas Ubuntu
//Turunan dari kelas Linux, menggunakan "extends" dan "super"
class Ubuntu extends Linux {

	//konstructor
	public Ubuntu (int lid, String nama, String keterangan, int versi) {
		super (lid, nama, keterangan, versi);
	}

	//methode
	public void TampilkanRincian() {
		System.out.println("ID = " + ID);
		System.out.println("Nama Sistem Operasi = " + Nama);
		System.out.println("Keterangan = " + Keterangan);
		System.out.println("versi = " + Versi);
	}
}

//kelas MacOS
//Turunan dari kelas Unix, menggunakan "extends" dan "super"
class MacOS extends Unix {
	int Versi;

	//konstructor
	public MacOS (int uid, String nama, String keterangan, int versi) {
		super (uid, nama, keterangan);
		Versi = versi;
	}

	//methode
	public void TampilkanRincian() {
		System.out.println("ID = " + ID);
		System.out.println("Nama Sistem Operasi = " + Nama);
		System.out.println("Keterangan = " + Keterangan);
		System.out.println("versi = " + Versi);
	}
}

//kelas SnowLeopard
//Turunan dari kelas MacOS, menggunakan "extends" dan "super"
class SnowLeopard extends MacOS {

	//konstructor
	public SnowLeopard (int mid, String nama, String keterangan, int versi) {
		super (mid, nama, keterangan, versi);
	}

	//methode
	public void TampilkanRincian() {
		System.out.println("ID = " + ID);
		System.out.println("Nama Sistem Operasi = " + Nama);
		System.out.println("Keterangan = " + Keterangan);
		System.out.println("versi = " + Versi);
	}
}

//kelas BSD
//Turunan dari kelas Unix, menggunakan "extends" dan "super"
class BSD extends Unix {
	int Versi;

	//konstructor
	public BSD (int uid, String nama, String keterangan, int versi) {
		super (uid, nama, keterangan);
		Versi = versi;
	}

	//methode
	public void TampilkanRincian() {
		System.out.println("ID = " + ID);
		System.out.println("Nama Sistem Operasi = " + Nama);
		System.out.println("Keterangan = " + Keterangan);
		System.out.println("versi = " + Versi);
	}
}

//kelas FreeBSD
//Turunan dari kelas BSD, menggunakan "extends" dan "super"
class FreeBSD extends BSD {

	//konstructor
	public FreeBSD (int fid, String nama, String keterangan, int versi) {
		super (fid, nama, keterangan, versi);
	}

	//methode
	public void TampilkanRincian() {
		System.out.println("ID = " + ID);
		System.out.println("Nama Sistem Operasi = " + Nama);
		System.out.println("Keterangan = " + Keterangan);
		System.out.println("versi = " + Versi);
	}
}

//kelas Solaris
//Turunan dari kelas Unix, menggunakan "extends" dan "super"
class Solaris extends Unix {
	int Versi;

	//konstructor
	public Solaris (int uid, String nama, String keterangan, int versi) {
		super (uid, nama, keterangan);
		Versi = versi;
	}

	//methode
	public void TampilkanRincian() {
		System.out.println("ID = " + ID);
		System.out.println("Nama Sistem Operasi = " + Nama);
		System.out.println("Keterangan = " + Keterangan);
		System.out.println("versi = " + Versi);
	}
}

//kelas OpenSolaris
//Turunan dari kelas Solaris, menggunakan "extends" dan "super"
class OpenSolaris extends Solaris {

	//konstructor
	public OpenSolaris (int sid, String nama, String keterangan, int versi) {
		super (sid, nama, keterangan, versi);
	}

	//methode
	public void TampilkanRincian() {
		System.out.println("ID = " + ID);
		System.out.println("Nama Sistem Operasi = " + Nama);
		System.out.println("Keterangan = " + Keterangan);
		System.out.println("versi = " + Versi);
	}
}

//Kelas utama
//Perhatikan kata "main"
public class SistemOperasi {
	public static void main(String[] args) {

	//instansiasi kelas
	//menggunakan "new"
	 System.out.println("Berikut daftar sistem operasi beserta salah satu turunannya :");
	 System.out.println("");
	 MSWindows mswindows = new MSWindows(111, "Microsoft Windows", "Sistem operasi komersil produksi perusahaan Microsoft.");
	 Vista vista = new Vista(121, "Windows Vista", "Salah satu turunan Windows. Komersil.", 2007);
	 Unix unix = new Unix(222, "UNIX", "Nenek moyang mayoritas sistem operasi di dunia. Komersil.");
	 Linux linux = new Linux(211, "Linux", "Sistem operasi open source. Kernelnya diciptakan oleh Linus Torvald.", 1991);
	 Ubuntu ubuntu = new Ubuntu(212, "Ubuntu", "Salah satu turunan Linux. Free and Open Source (FOSS).", 1998);
	 BSD bsd = new BSD(221, "BSD", "Salah satu turunan UNIX. Free and Open Source (FOSS).", 1977);
	 FreeBSD freebsd = new FreeBSD(222, "Free BSD", "Salah satu turunan BSD. Free and Open Source (FOSS).", 1993);
	 Solaris solaris = new Solaris(231, "Solaris/Sun Solaris", "Salah satu turunan UNIX. Free and Open Source (FOSS).", 1992);
	 OpenSolaris opensolaris = new OpenSolaris(232, "Open Solaris", "Salah satu turunan Solaris. Free and Open Source (FOSS).", 2004);
	 MacOS macos = new MacOS(241, "Mac OS", "Salah satu turunan UNIX. Komersil. Diproduksi oleh Apple.", 1984);
	 SnowLeopard snowleopard = new SnowLeopard(242, "Mac OS Snow Leopard", "Salah satu turunan Mac OS. Komersil. Diproduksi oleh Apple.", 2009);

	//Pemanggilan konstruktor masing - masing
	//Catatan : penambahan System.out.println("") untuk memberikan ruang kosong 1 baris, biar ga sepet liatnya
	 mswindows.TampilkanRincian();
	 System.out.println("");
	 vista.TampilkanRincian();
	 System.out.println("");
	 unix.TampilkanRincian();
	 System.out.println("");
	 linux.TampilkanRincian();
	 System.out.println("");
	 ubuntu.TampilkanRincian();
	 System.out.println("");
	 bsd.TampilkanRincian();
	 System.out.println("");
	 freebsd.TampilkanRincian();
	 System.out.println("");
	 solaris.TampilkanRincian();
	 System.out.println("");
	 opensolaris.TampilkanRincian();
	 System.out.println("");
	 macos.TampilkanRincian();
	 System.out.println("");
	 snowleopard.TampilkanRincian();
	 System.out.println("");
	 System.out.println("");
	 System.out.println("==============");
	 System.out.println("Oleh : I Putu Agus Eka Pratama, ST");
	 System.out.println("MTI ITB");
	 System.out.println("Sumber : Wikipedia.");
	}
}

Jika sudah, lakukan proses compile dan make, sehingga terbentuk file .class. Di Geany dapat dilakukan dengan  klik menu Build > Compile atau tekan F8. Lakukan hingga proses compile sukses (lihat keterangan di bagian bawahnya).

Tampilan Compile

 

Tampilan Compile Sukses

Kemudian jalankan dengan klik menu Build > Execute atau tekan F5.

Tampilan Execute

Sampai di sini tutorial berakhir, Anda dapat melihat program yang dijalankan atau memahami script yang diberikan di atas beserta keterangan masing – masing.

Penutup

Keindahan dalam dunia pemrograman bukan saja bagaimana anda memahami konsep pemrograman, algoritma, dan syntaks dari bahasa pemrograman yang Anda gunakan, namun bagaimana Anda bisa menyadari bahwa open source adalah tambang emas untuk belajar pemrograman. Anda tidak perlu menghabiskan banyak waktu untuk membuat sendiri karena ada banyak library yang bebas digunakan/dipanggil. Dan keterbukaan kode adalah salah satu tambang emas lainnya dalam pendidkan, sehingga melatih kita untuk berpikir, ngoprek, belajar ke dalam sistem, bukan lagi diam, terikat, dan menurut kepada vendor tanpa memiliki kebebasan di dalamnya. Belajarlah untuk menghargai setiap hasil karya orang lain.

Dunia Linux dan FOSS dengan kemerdekaan perangkat lunak di dalamnya memberikan banyak nilai positif dibandingkan sekedar gratis saja. Dengan open source, kita tidak terikat pada suatu vendor sehingga bebas menentukan pilihan, menggunakan dan memodifikasi sesuai keperluan.

Demikian juga untuk dunia pendidikan (sekolah, kuliah), Linux dan FOSS dapat digunakan dengan baik oleh siapapun juga. Dan seharusnya wajib dikenalkan ke anak didik, sehingga sejak dini mereka tahu bagaimana untuk tidak terikat dalam ikatan vendor closed source. Mengapa? Hal ini melatih generasi muda untuk berpikir kreaktif, bukan lagi berwatak konsumerimse dengan menuruti semua keinginan vendor dalam melakukan lock in ke konsumennya. Tidak harus menjadi seorang expert user untuk bisa menggunakan Linux dan FOSS. Seringlah menggunakannya, maka anda akan terbiasa. Salam.

 

Tag:

2 Comments

Leave Comment
  1. Saatul Ihsan ihsan says:

    Ini baru namanya tutorial…….

  2. Barayuda says:

    Wahh.. pass bgt.. :D
    baru kemarin saya ujian praktek di kampus soal pewarisan.. :D
    sayang ndak kepikiran tentang sistem operasi.. :D

    Makasi tutornya Agan..
    langsung saya praktekkan.. :D

    Pemanasan seblum PBO2 :D

Write Comment

Your email will not be published. The marked label is required.