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) :
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." ) ; } } |
Kemudian jalankan dengan klik menu Build > Execute atau tekan F5.
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