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.
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.