Blogroll

Kamis, 11 Juni 2015

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 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 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
/*
 * 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.

0 komentar:

Posting Komentar