0
Modul Praktikum
Pemrograman
Berorientasi
Objek Saiful Nur Budiman S.kom.,
M.kom
UNIVERSITAS ISLAM BALITAR
DAFTAR ISI
i
3.5 Conditional Switch .......................................................................................... 21
3.6 Latihan............................................................................................................ 24
3.7 Tugas.............................................................................................................. 24
MODUL IV Perulangan ................................................................................................ 26
4.1 Tujuan Pembelajaran...................................................................................... 26
4.2 Looping........................................................................................................... 26
4.3 Perulangan for ................................................................................................ 26
4.4 Perulangan while ............................................................................................ 28
4.5 Perulangan do…while..................................................................................... 30
4.6 Perulangan Nested For................................................................................... 32
4.7 Analisa............................................................................................................ 33
4.8 Tugas.............................................................................................................. 33
MODUL V String dan Array.......................................................................................... 34
5.1 Tujuan Pembelajaran...................................................................................... 34
5.2 String .............................................................................................................. 34
5.2.1 String Length............................................................................................ 34
5.2.2 String Concat............................................................................................ 34
5.2.3 String Equal Compare .............................................................................. 34
5.2.4 String Index .............................................................................................. 35
5.2.5 Change Case dan Join String................................................................... 37
5.2.6 Substring .................................................................................................. 38
5.3 Array ............................................................................................................... 39
5.3.1 Array Length............................................................................................. 39 5.4
Analisa............................................................................................................ 41 5.5
Tugas.............................................................................................................. 41 MODUL
VI Konsep Object Oriented Programming ...................................................... 42 6.1
Tujuan Pembelajaran...................................................................................... 42 6.2
Pengantar Pemrograman Berorientasi Objek.................................................. 42 6.3
Class dan Object............................................................................................. 43 6.4
Cara Mendefinisikan Class dan Object ........................................................... 43 6.5
Constuctor ...................................................................................................... 46
ii
6.6 Method............................................................................................................ 47
6.7 Modifier Public, Private, Protected .................................................................. 48
6.8 Analisa............................................................................................................ 50
6.9 Tugas.............................................................................................................. 50
Modul VII Inheritance ................................................................................................... 52
7.1 Tujuan Pembelajaran...................................................................................... 52
7.2 Inheritance atau Pewarisan............................................................................. 52
7.3 Extends........................................................................................................... 53
7.4 Virtual Method Invocation................................................................................ 55
7.5 Single Inheritance ........................................................................................... 57
7.6 Multiple Inheritance......................................................................................... 59
7.7 Analisa............................................................................................................ 61
7.8 Tugas.............................................................................................................. 61
Modul VIII Polimorfisme ............................................................................................... 64
8.1 Tujuan Pembelajaran...................................................................................... 64
8.2 Konsep Polimorfisme ...................................................................................... 64
8.3 Binding Dynamic dan Static ............................................................................ 66
8.3.1 Dynamic Binding ...................................................................................... 66 8.3.2
Static Binding ........................................................................................... 68 8.4 Class
Casting.................................................................................................. 69 8.4.1 Down
Casting........................................................................................... 70 8.4.2 Up Casting
............................................................................................... 72 8.5
Analisa............................................................................................................ 73 8.6
Tugas.............................................................................................................. 73 Modul
IX Abstract dan Interface................................................................................... 74 9.1
Tujuan Pembelajaran...................................................................................... 74 9.2
Abstract .......................................................................................................... 74 9.3
Interface.......................................................................................................... 75 9.4
Hubungan Class dan Interface........................................................................ 76 9.5
Abstract Class dan Concrete Class................................................................. 78 9.6
Analisa............................................................................................................ 80
iii
9.7 Tugas.............................................................................................................. 81
Modul X Swing............................................................................................................. 82
10.1 Tujuan Pembelajaran................................................................................... 82 10.2
GUI.............................................................................................................. 82 10.2.1
AWT...................................................................................................... 82 10.2.2
SWING.................................................................................................. 82 10.3
Jtable........................................................................................................... 83 10.3.1
AbstractTableModel .............................................................................. 85 10.4
Analisa......................................................................................................... 89 10.5
Tugas .......................................................................................................... 89
iv
Daftar Tabel
vii
Gambar 6.1 Pembuatan Objek dari Class.................................................................... 45
Gambar 6.2 Penggunaan Constructor ......................................................................... 46
Gambar 6.3 Penggunaan Method Void dan Return ..................................................... 48
Gambar 6.4 Penggunaan Modifier ............................................................................... 49
Gambar 7.1 Class Diagram Contoh Penggunaan Inheritance...................................... 53
Gambar 7.2 Class Main Kendaraan Extend ke Kendaraan .......................................... 54
Gambar 7.3 Memanggil Method yang di Override di Subclass .....................................
55 Gambar 7.4 Contoh Penggunaan VMI .........................................................................
56 Gambar 7.5 Class Diagram Single Inheritance ............................................................
57 Gambar 7.6 Source Code Contoh Single Inheritance...................................................
58 Gambar 7.7 Konsep Multiple Inheritance .....................................................................
59 Gambar 7.8 Penggunaan Multiple Inheritance yang Salah...........................................
60 Gambar 7.9 Penggunaan Multiple Inheritance .............................................................
61 Gambar 8.1 Konsep Polimorfisme ...............................................................................
64 Gambar 8.2 Polymorfisme Pada Constructor...............................................................
65 Gambar 8.3 Class MainPenyanyi.................................................................................
66 Gambar 8.4 Penggunaan Dynamic Binding .................................................................
67 Gambar 8.5 Penggunaan Static Binding ......................................................................
68 Gambar 8.6 Class Casting ...........................................................................................
70 Gambar 8.7 Penambahan Method Ngebut dan Pemanggilannya ................................
70 Gambar 8.8 Menambahkan Method di Superclass agar di Override di Subclass
......... 71 Gambar 8.9 Downcasting
Class................................................................................... 71 Gambar 8.10 Upcasting
Class ..................................................................................... 72 Gambar 9.1 Abstarct
diturunkan dengan keyword Extends.......................................... 75 Gambar 9.2
Hubungan Class dan Interface ................................................................. 76 Gambar 9.3
Abstract dan Interface digunakan Secara Bersamaan.............................. 76 Gambar 9.4
Abstract Pegawai dan Interface Pajak...................................................... 77 Gambar 9.5
Class Gaji................................................................................................. 78 Gambar 9.6
Class TestGaji.......................................................................................... 78 Gambar 9.7
Contoh Abstract Class.............................................................................. 79 Gambar 9.8
Contoh Interface....................................................................................... 79 Gambar 9.9
Contoh Concrete Class ............................................................................ 80 Gambar
10.1 Hirarki Java Swing.................................................................................. 83 Gambar
10.2 TableModel Properties ........................................................................... 84 Gambar
10.3 Set Value dari Jtable Secara Manual ..................................................... 84 Gambar
10.4 Class Biodata ......................................................................................... 86 Gambar
10.5 Class ModelBiodata ............................................................................... 86 Gambar
10.6 Layout LoadDatakeJFrame .................................................................... 87 Gambar
10.7 Variable Penampung Data ..................................................................... 87 Gambar
10.8 Method Baca .......................................................................................... 88
viii
Gambar 10.9 Hasil Ouptut Load Data ke JFrame ........................................................ 88
ix
x
MODUL I
Installasi Netbeans dan Setting Path
1.1 Tujuan Pembelajaran
1) Praktikan dapat melakukan instalasi dan setting Java Development Kit. 2)
Praktikan dapat menggunakan Netbeans sebagai editor pemrograman. 3) Praktikan
dapat menjalankan (eksekusi) program Java sederhana yang ditulis dengan editor
Netbeans.
1.2 Java
Untuk menulis program JAVA dapat digunakan berbagai editor, bahkan editor paling
sederhana, seperti Notepad pun dapat digunakan. Namun pada umumnya, agar
penulisan program lebih terarah, beberapa editor telah disediakan untuk membantu para
programmer yang dilengkapi dengan auto complete. Editror tersebut dinamakan IDE
(Integrated Development Environment) dan berikut adalah contohnya:
a) NetBeans, open source Common Development and Distribution License (CDDL).
NetBeans yang disponsori Sun Microsystems, dilengkapi juga dengan GUI Editor. b)
Eclipse JDT, open source- Eclipse Public License
Eclipse dibuat dari kerja sama antar perusahaan-perusahaan anggota 'Eclipse
Foundation' beserta individu-individu lain. Banyak nama besar yang ikut dalam
'Eclipse Foundation', termasuk IBM, BEA, Intel, Nokia, Borland. Eclipse bersaing
langsung dengan Netbeans IDE. Plugin tambahan pada Eclipse jauh lebih
banyak dan bervariasi dibandingkan IDE lainnya.
c) IntelliJ IDEA (commercial, free 30-day trial)
d) Oracle JDeveloper (free)
e) Xinox JCreator (ada versi berbayar maupun free)
JCreator ditulis dalam C/C++ sehingga lebih cepat dan menggunakan memori
lebih sedikit dari kebanyakan IDE lain.
Installer yang mengekstrak file JDK akan membuat direktori yang diperlukan, dan
sekaligus menyalin file-file ke dalam direktori tersebut. Installshield Wizard memberikan
tampilan bahwa Java siap diinstalasi.
1
1.3.1 Setting Variabel Path
Pada saat program MS DOS dieksekusi, secara otomatis mencari direktori yang ada
untuk file target. Jika program atau file batch tidak tersedia dalam direktori yang ada,
maka akan mencari semua drive dan direktori lainnya dalam variable path system.
Dalam pengembangan Java, tidak diperlukan variable path jika semua software yang
diperlukan terdapat dalam direktori yang ada. Namun akan lebih mudah apabila
dilakukan setting variable path agar sistem secara otomatis mencari file yang
diperlukan. Dalam hal ini, path adalah drive dan direktori dimana java.exe, javac.exe,
dan aplikasi pengembangan lain ditempatkan. Apabila tidak dipilih direktori default,
maka path adalah direktori yang dipilih pada saat instalasi. Perintah path sistem DOS
biasanya terdapat dalam file autoexec.bat, yang dieksekusi selama sistem startup.
Alternatif lain adalah, path dapat dimasukkan dari baris perintah MS DOS dengan
sintaks sebagai berikut:
PATH = [drive:][path];[drive:][path]…]
Apabila digunakan sistem operasi windows dengan JDK versi 1.5 atau yang lebih baru,
maka setting variabel path tidak diperlukan lagi. Untuk pelaksanaan praktikum
Pemrograman Berorientasi Objek nanti, digunakan JDK versi 1,8 sehingga proses
setting path tidak akan dilakukan. Namun apabila digunakan versi lama, maka
diperlukan langkah-langkah setting sebagai berikut:
1) Klik kanan pada “My Computer” lalu klik properties. Kemudian klik “Advanced” lalu
klik “Environment Variables”, ditunjukkan gambar 1.1.
2
2) Pada System Variables, pilih ”New…”, ditunjukkan pada gambar 1.2. 3) Pada
“Variable name dan Variable Value” tambahkan Path dimana direktori bin dari JDK
Java diletakkan. Lalu klik OK. Seperti yang ditunjukkan pada gambar 1.3.
Gambar 1.2 Setting JDK pada Windows
3
Gambar 1.4 Tampilan Awal Netbeans
4
4) Selanjutnya masukkan Project Name dan Project Location seperti terlihat pada
gambar 1.7. Sebagai latihan berikan nama project dengan project1. Pada bagian
create main class, dapat diberikan nama yang berbeda dari Project Name-nya,
misalkan kita beri nama HelloWorld, tidak perlu menambahkan .Main atau .Java,
NetBeans akan secara otomatis memberikan ekstensi-nya. Setelah selesai, klik
Finish. Project yang telah kita setup hasil akhirnya seperti ditunjukkan pada
gambar 1.8.
5
Dengan demikian sebuah project baru telah berhasil dibuat. Untuk pembuatan class
baru, akan dijelaskan lebih lanjut pada praktikum berikutnya yang membahas khusus
tentang pembuatan class.
1.5 Membuat Program sederhana
Pada Class HelloWorld.java yang dibuat tambahkan perintah sebagai berikut:
System.out.println("Hello Dunia");
Pada baris ke-18. Sehingga program yang terbentuk seperti pada gambar 1.9.
6
keterangan:
a. Syntax utama untuk program yang ditulis dengan JAVA adalah:
[modifier][class] NamaClass {
...
}
Ada beberapa modifier pada JAVA, yaitu public, private dan protected. Modifier
public diperlukan agar program dapat dikompilasi dengan baik.
b. Bagian ini merupakan bagian utama yang ditempatkan pada bagian awal pada
program JAVA. static menunjukkan tipe method. void menunjukkan bahwa
method tidak mengembalikan nilai atau objek. Main merupakan nama method
utama program JAVA. String merupakan tipe argumen yang akan diterima
sebagai parameter dari command JAVA. Args merupakan array argumen yang
dapat ditambahkan pada saat mengunakan command JAVA untuk menjalankan
program JAVA.
c. Perintah untuk mencetak pada console yaitu “Hello Dunia”.
Selanjutnya, program dapat dieksekusi dengan klik tombol Run Main Project (F6) atau
Run File (Shift+F6). Hasilnya dapat dilihat pada window output dengan hasil
sebagaimana terlihat pada gambar 1.10.
7
Gambar 1.11 Penambahan Comment pada Source Code
1.7 Tugas
1) Lakukan proses instalasi Netbeans dan JDK disertai dengan screenshot dan
penjelasannya.
2) Buatlah sebuah project untuk menampilkan data KRS (NIM Ganjil) atau KHS (NIM
Genap), disertai penggunaan Util.Scanner. Berikan penjelasan untuk source code
nya di laporan.
8
9
MODUL 2
Variabel, Tipe Data, dan Operator
2.2 Variabel
Variabel adalah nama dari suatu lokasi di memori yang digunakan untuk menyimpan
data sementara. Variabel diberi nama tertentu yang menunjukkan domain yang
diwakilinya. Dalam memberikan nama variabel, ada beberapa ketentuan yang harus
diperhatikan yaitu:
1. Panjang karakter nama variabel tidak dibatasi.
2. Nama variabel diawali dengan huruf, tanda garis bawah (underscore) atau tanda
dolar ($). Selanjutnya dapat diikuti oleh karakter lain, selain operator (*, -, +). 3.
Bersifat case sensitive (membedakan antara huruf kapital dan huruf kecil). 4. Tidak
diperbolehkan menggunakan kata-kata kunci yang digunakan pada java, seperti: if,
for, while, dll.
Data yang tersimpan dalam variabel memiliki tipe tertentu. Sebelum digunakan dalam
aplikasi, suatu variabel harus dideklarasikan terlebih dahulu. Sintaks:
[tipe_data] [nama_variabel]
Beberapa tipe data yang dapat digunakan pada praktikum kali ini akan dibahas pada
subbagian berikutnya.
10
2.3.2 Integer
Tipe data integer merupakan bilangan bulat (positif, nol, atau negatif).
Contoh:
int x = 2;
int y = 4;
int z = x+y;
Selain int, bilangan integer juga dapat memiliki tipe data byte, short atau long yang
masing-masing dibedakan oleh panjang memori yang ditempatinya. • Byte menempati
lokasi sebesar 1 byte.
• Short menempati lokasi memori sebesar 2 byte
• Int menempati lokasi memori sebesar 4 byte
• Long menempati lokasi memori sebesar 8 byte
2.3.4 Boolean
Tipe data boolean hanya memiliki dua kemungkinan nilai yaitu true atau false.
Contoh:
boolean isDone = false;
2.4 Operator
2.4.1 Operator Aritmetik
Operator-operator aritmetik di Java seperti pada umumnya terdiri-dari: penjumlahan (+),
pengurangan (-), pembagian (/), perkalian (*), dan modulo (%). Source code pada
gambar 2.1 menunjukkan operasi dasar aritmatika, dimana hasil outputnya ditunjukkan
pada gambar 2.1 (a).
11
Gambar 2.1 Operasi Dasar Aritmatika
12
Analisa:
• Tunjukkanlah hasil output-nya jika pernyataan pada baris ke-22 diganti menjadi:
double bagi = a/b;
• Tunjukkanlah hasil output-nya jika pernyataan pada baris ke-22 diganti menjadi:
double bagi = (double) a/b;
Tulislah source code seperti yang ditunjukkan gambar 2.3, kemudian lakukan eksekusi
dan jelasakan hasilnya!
== Sama Dengan
14
2.4.3 Operator Logika
Operator logika digunakan juga dalam ekspresi boolean yang akan menghasilkan nilai
boolean guna menentukan langkah eksekusi blok pernyataan tertentu. Beberapa
operator logika seperti AND (&&), OR (||) atau NOT (!). Source code pada gambar 2.5
menunjukkan penggunaan oprasi logika. Lakukan eksekusi, dan jelaskan hasilnya!
Gambar 2.4 Penggunaan Operator Logika
2.5 Analisa
Lakukan ujicoba pada program diatas sebagai bentuk latihan kemudian lakukan analisa
2.6 Tugas
1) Buatlah sebuah program untuk menghitung keliling dan luas lingkaran. Inputan
menggunakan Scanner untuk variabel diameter dan jari-jari lingkaran. 2) Buatlah
sebuah program untuk menghitung nilai akhir dari gerbang OR, XOR, AND
15
MODUL III
Penyeleksian Kondisi
3.3 Conditional If
Pengkondisian dengan if digunakan untuk mengeksekusi blok pernyataan, dimana yang
dibutuhkan hanyalah kondisi benar saja.
Sintaks:
If (<ekspresi_boolean>){
<block pernyataan>
}
Pada gambar flowchart 3.2 diberikan contoh penggunaan conditional if, dimana untuk
mengetahui status tekanan darah seseorang. Dikatakan mengalami hipertensi jika darah
sistolik lebih dari 140 mmHg. Source code untuk permasalah tersebut ditunjukkan pada
gambar 3.2 berikut hasil dari running source code-nya (a) input dan (b) hasil output.
16
mulai > 140
Ya
tekanan_darah
tampilkan
Hipertensi
tekanan_darah
Selesai
Tidak
mulai
nilai, hasil
Analisa:
• Sekarang cobalah lakukan percobaan untuk inputan jika nilainya adalah -1,
bagaiman hasilnya? Lakukan analisa!
• Apa yang terjadi jika pada baris 20 tidak dilakukan parsing, melainkan dilakukan
casting ke (double) input? Lakukan analisa!
19
Diketahui pembagai umur manusia ditunjukkan pada tabel 3.1 sebagai
Analisa:
• Sekarang cobalah lakukan percobaan untuk inputan umur 40, bagaimana
hasilnya? Lakukan analisa!
• Kemudian lakukan percobaan kembali jika input umur 18.5, bagaimana
hasilnya, lakukan analisa!
……
default: <block pernyataan>
break;
}
Ekspresi_integer yang dapat digunakan adalah byte, short, int, dan char. Char dapat
digunakan karena char sebenarnya merupakan unicode yang bernilai antara 0 – 65535.
Sedangkan tipe long tidak dapat digunakan untuk ekspresi_integer ini. Berikut akan
dilakukan operasi aritmetik untuk dua bilangan integer A dan B, dengan a=100 dan
b=25. Ada 2 operasi yang dapat dipilih, yaitu penjumlahan dan pengurangan.
21
Gambar 3.7 menunjukkan flowchart untuk permasalahan ini. Sedangkan untuk souce
codenya ditunjukan pada gambar 3.8 disertai dengan input (a) dan hasil output (b).
mulai
a = 100
b = 25
hasil = 0
tampilkan
menu pilihan
input pilihan
tidak
tidak
ya Gambar 3.7 Flowchart
Contoh Switch-Case
tampilkan Selesai
pilihan anda salah
22
Analisa:
• Bagaimana jika inputan yang digunakan adalah 3, seperti apa hasilnya?
Lakukan analisa!
• Kemudian lakukan percobaan kembali jika inputnya adalah “satu”, bagaimana
hasilnya?lakukan analisa!
23
3.6 Latihan
Lakukan percobaan pada contoh source code diatas dan lakukan analisa.
3.7 Tugas
1) Buatlah program untuk conditional switch dalam menentukan volume dari balok,
kubus dan tabung.
2) Buatlah conditional if untuk menentukan bilangan ganjil yang merupakan kelipatan
3 antara bilangan 1 sampai 50.
24
25
MODUL IV
Perulangan
Misal, for (int i=0; i<=10; i++), berarti proses perulangan akan berjalan mulai dari 0
sampai 10, dimana counter i akan naik secara otomatis (i++) hingga i mencapai angka
10. Sebagai contoh akan dihitung nilai n! (n faktorial). Besarnya nilai n ditentukan
melalui input data. Flowchartnya ditunjukkan pada gambar 4.1 dan source code
ditunjukkan pada gambar 4.2 beserta input (a) dan hasil output (b).
mulai
n
faktorial += faktorial * i
26
Gambar 4.2 Source Code For Untuk Program Faktorial
Analisa:
• Sekarang cobalah lakukan percobaan untuk for (int i = 0; i <= n ; i ++), bagaimana
hasilnya apakah sama atau beda! Jelaskan!
27
4.4 Perulangan while
Pernyataan while digunakan untuk melakukan perulangan terhadap sejumlah
pernyataan dalam blok selama kondisi bernilai benar (dinyatakan dengan ekspresi
boolean). Sintaks:
while (<ekspresi boolean){
<block pernyataan>
}
Sebagai contoh akan dibuat program untuk menghitung banyaknya bilangan ganjil dan
genap sampai nilai ke n. Flowchartnya ditunjukkan pada gambar 4.3 dan source code
ditunjukkan pada gambar 4.4 beserta input (a) dan hasil output (b).
mulai
i=1
ganjil = 0 genap = 0 ya
i < =n i % 2 == 0 ya genap = genap + 1
tidak
tampilkan genap
Selesai
tidak
ganjil = ganjil +1 i = i+1
tampilkan ganjil
28
Gambar 4.4 Souce Code Hitung Bil. Ganjil Genap
Analisa:
• Sekarang cobalah lakukan percobaan untuk menghitung total nilai genap dan
ganjilnya. Misalkan nilai n = 10
Maka nilai total ganjil = 25 diperoleh dari ( 1+3+5+7+9 )
nilai total genap = 30 diperoleh dari ( 2+4+6+8+10)
29
4.5 Perulangan do…while
Blok pernyataan pada do-while dieksekusi hingga suatu kondisi yang dinyatakan oleh
ekspresi logika pada while bernilai salah. Berbeda dengan pernyataan while yang baru
akan dieksekusi blok pernyataanya setelah diketahui kondisi benar, pada do-while blok
ini akan dieksekusi setidaknya satu kali sebelum kondisi bernilai salah. Sintaks:
do {
<block pernyataan>
}
while (<ekspresi boolean
Berikutnya akan dibuat program untuk perulangan do-while untuk terus menampilkan
inputan dan akan berhenti jika nilai yang diinputkan adalah 0. Supaya mudah
memahami program tersebut pada gambar 4.5 ditunjukkan flowchartnya. Pada gambar
4.6 ditunjukkan source code beserta input (a) dan hasil output (b). Untuk input cobalah
masukkan angka 4, 10, 15, dan 0.
mulai
tampilkan
jumlah
number number ya
jumlah = 0
selesai
jumlah = jumlah tidak
+ number
30
Gambar 4.6 Souce Code Hitung Total Suatu Inputan
Analisa:
• Sekarang cobalah lakukan percobaan jika user memasukkan angka kelipatan 5
maka jumlahnya akan dikurangi dengan 2. Contoh:
User memasukkan angka berikut = 1 12 20 5
maka nilai Total = (1 + 12 – 2 – 2) = 9
31
4.6 Perulangan Nested For
Sebuah program mengizinkan blok perulangan di dalam blok perulangan lainnya
(bersarang). Misalkan saja di dalam blok perulangan for terdapat perulangan for lagi.
Sebagai contoh berikut merupakan sintaks dari nested loop for:
for (<inisialisasi>; <ekspresi boolean>; <iterasi>){ <block
pernyataanA>
for (<inisialisasi>; <ekspresi boolean>; <iterasi>){ <block pernyataanB>
}
}
Contohnya adalah penjumlahan dua buah matrik. Source code untuk permasalah
tersebut ditunjukkan pada gambar 4.7 Misalkan nilai matriknya sebagai berikut:
7 1] + [1 2
[2 5
9 1] = [3 7 16 2]
32
4.7 Analisa
Berdasarkan source pada masing-masing penjelasan sebelumnya, lakukan analisa
sesuai dari yang diperintahkan, kecuali untuk subbab 4.6.
4.8 Tugas
1. Buatlah sebuah program menggunakan perulangan untuk menampilkan hasil
output seperti gambar dibawah ini:
33
MODUL V
String dan Array
String dapat dioperasikan dengan menggunakan beberapa fungsi atau method yang
bisa digunakan. Fungsi tersebut antara lain dijelaskan di subbab 5.3 sampai 5.6
34
nama_var_string_a = “value A”;
nama_var_string_b = “value B”;
nama_var_string_c = nama_var_string_a.compareTo(b);
• int indexOf(String str): Mengembalikan indeks dalam string yang ditentukan pada
kejadian pertama dari substring yang ditentukan. Jika tidak terjadi sebagai
substring, akan memberikan nilai -1.
• int indexOf(String str, int fromIndex): Mengembalikan indeks dalam string yang
ditentukan pada kejadian pertama dari substring yang ditentukan, mulai dari
indeks tertentu. Jika tidak ditentukan akan dikembalikan -1.
Supaya lebih jelas mengenai penggunaan indexOf perhatikanlah gambar 5.1 dibawah
ini. Untuk melakukan pencarian huruf “T bisa menggunakan indexOf(“T”) sehingga
hasilnya adalah 0. Jika dilakukan pencarian huruf “T” sekaligus dimulai pada index ke-n
bisa menggunakan indexOf(“T”, 1) maka hasilnya adalah 3 dikarenakan indexnya
dimulai dari 1 sampai n, dimana huruf “T” ditemukan kembali di index yang ke-3. Ingat,
proses pembacaan disebelah kanan dari caret (tanda garis kedip pada string).
Contoh dari penggunaan method string dari subbab 5.3 sampai dengan 5.6 lebih
detailnya penggunaannya ditunjukkan pada gambar 5.2 beserta hasil outputnya (a)
35
Gambar 5.2 Penggunaan Beberapa Method String
36
Analisa:
• Berapa panjang total jika pengarang_1 ditambahakn pengarang_2? Tunjukkan lah
source codenya disertai penjelasannya!
• Perhatikan source code pada baris 42, jika diubah jadi buku_3.indexOf(sub, 4)
bagaimana hasilnya! Jelaskan!
37
Analisa:
• Carilah method untuk mereplace value dari var_b, yang semula memiliki value
“minumnya Cola” diganti menjadi “minumnya Aqua”. Tunjukkan source codenya
dan jelaskan!
• Carilah mengenai method trim() disertai contohnya! Tunjukkan source codenya
dan jelaskan!
5.2.6 Substring
Pemenggalan (substring) bisa digunakan juga di Java. Misalkan seperti gambar 5.4
dibawah ini. Jika dilakukan perintah substring(var_a, 1, 4) maka hasilnya adalah “all”.
Contoh dari souce code penggunaan substring ditunjukkan pada gambar 5.5. Sintaks
dari substring sebagai berikut:
substring(var_string_a, int awal, int akhir);
38
5.3 Array
Array merupakan suatu data yang disajikan secara berurutan. Setiap elemen memiliki
tipe data yang sama. Array menggunakan sekelompok lokasi memori yang berurutan
dengan nama dan tipe data yang berbeda. Sintaks:
tipe_data nama_variabel_array[ ]
Array menggunakan index untuk memudahkan akses terhadap data yang disimpannya,
seperti yang ditunjukkan pada gambar 5.6. Proses pembacaan array dimulai dari index 0
sampai n-1.
Gambar 5.6 Index Pada Array
Besarnya alokasi memori yang akan digunakan perlu diberikan sebelum variabel bertipe
array tersebut digunakan. Apabila alokasi memori tidak diberikan secara eksplisit, maka
Java akan memberikannya secara implisit. Setiap elemen data disebut dengan
nama_variabel_array yang diikuti dengan indeks penomorannya. Sebagai contoh,
apabila akan dibuat variabel penjualan bertipe array dengan alokasi memori sebesar 11,
dan akan diberikan value 125 untuk penjualan ke-11, maka dapat dituliskan sebagai
berikut:
int penjualan[ ];
penjualan = new int [12];
penjualan[12] = 125;
Sebagai contoh, berikut merupakan contoh penggunaan array untuk menentukan harga
barang ke-i, yang mana i digunakan sebagai index. Souce codenya ditunjukkan pada
gambar 5.7 disertai dengan input dan hasil outputnya.
39
Gambar 5.7 Pengisian dan Pengaksesan Array
40
5.4 Analisa
Lakukan analisa pada gambar source code 5.2, 5.3 berikut disertai penjelasannya!
5.5 Tugas
1. Diketahui daftar nilai matakuliah PBO untuk 3 mahasiswa sebagaimana
ditunjukkan pada tabel dibawah ini:
Ani 50 60 70
Tono 70 75 87
Budi 89 90 90
Selanjutnya akan dicari nilai akhir untuk setiap mahasiswa yang merupakan nilai
rata-rata dari ketiga komponen penilaian (rata-rata tugas, UTS, dan UAS).
Selanjutnya, pemberian nilai dengan huruf diberikan sebagai berikut :
Buatlah programmnya:
- Masukkan semua nilai kedalam array int
- Lakukan perulangan untuk menghitung nilai akhir
- Di dalam perulangan, gunakan conditional if untuk pengecekan
41
MODUL VI
Konsep Object Oriented Programming
6.1 Tujuan Pembelajaran
1. Praktikan mampu memahami konsep dasar pemrograman Java. 2. Praktikan
dapat membedakan arti dan pemakaian class, objek, referensi objek, method,
constructor, dan beberapa modifier dalam pemrograman Java.
Pada model pemrograman prosedural, alur kerja program berorientasi pada proses
(process-oriented). Program merupakan gabungan dari data dan kode dengan struktur
program yang berupa urutan proses. Pendekatan semacam ini memiliki kelemahan,
yaitu akan menemui banyak kesulitan ketika menangani kasus-kasus yang kompleks,
membutuhkan ribuan baris kode. Kondisi seperti itu akan menyulitkan programmer
dalam melacak kesalahan (debugging), menyisipkan modul baru dalam program, dan
sebagainya.
42
• Faster Development: Metode ini didukung oleh banyak library objek, sehingga
mempercepat penyelesaian program dan juga projek berikutnya.
• Lower Cost of Development: Faster development tentu akan mengurangi biaya
pengembangan pembuatan program
• Higher Quality Software: Faster developmentpun akan memberikan lebih banyak
waktu dan sumberdaya untuk proses verifikasi software.
Class memiliki beberapa karakteristik, diantaranya: anggota class terdiri dari atribut dan
method. Tiap-tiap anggota class memiliki control pengaksesan tersendiri, maksudnya
adalah apakah anggota class tersebut dapat diakses dengan bebas (dengan tipe public)
atau hanya dapat diakses melalui sebuah interface. Dalam hal ini, interface adalah
device yang digunakan untuk komunikasi antar object berbeda yang tidak memiliki
hubungan apapun. Interface bisa dikatakan sebagai protokol komunikasi antar object
tersebut.
...
return tipedata;
}
...
}
}
43
Data atau variabel yang didefinisikan di dalam sebuah class sering disebut dengan
instance variable yang selanjutnya akan diakses melalui method-method yang ada. Data
dan method yang tergabung dalam suatu class sering dinamakan sebagai class
members. Perhatikanlah contoh sederhana berikut untuk membuat class Mobil.
Class Mobil{
String warna;
int roda;
}
Melalui sourcecode tersebut telah didefinisikan sebuah tipe data baru dengan nama
warna dan roda. Penting untuk diingat bahwa pendefinisian class hanya akan membuat
sebuah pola atau template, bukan membuat objek. Suatu objek bisa dibuat dari class
dengan menggunakan keyword “new”. Ada tiga langkah dalam membuat objek dari
class:
Berdasarkan class Mobil yang telah dibuat, maka untuk membuat objek baru yaitu
dengan cara seperti berikut:
Mobil toyota = new Mobil();
toyota.warna = “kuning”;
toyota.rota = 4;
Mobil sebagai class, sedangkan toyota dan honda sebagai objek atau instance dari
class Mobil. Dari objek yang telah dibentuk dapat diakses dan dimanupulasi data-data
yang terdapat pada class Mobil dengan menggunakan operator “.” atau dot. Supaya
lebih memahami penggunaan objek, pada gambar 6.1 ditunjukkanlah source code-nya,
outputnya ditunjukkan pada gambar 6.1 (a).
44
Gambar 6.1 Pembuatan Objek dari Class
Perlu diketahui bahwa setiap objek atau instance dari suatu class akan memiliki salinan
data sendiri-sendiri. Ini artinya, antara objek yang satu dengan yang lainnya, nilai data
datanya bisa berbeda. Pada gambar 6.1 walaupun kedua objek dari class Mobil memiliki
data warna dan roda, namun valuenya berbeda-beda.
Analisa:
• Tambahkan satu tipe data integer dengan nama variable tahun. Berikutnya
panggillah method terserbut! dan tampilkan hasilnya!
45
6.5 Constuctor
Constructor merupakan sesuatu yang mirip seperti method yang namanya sama persis
dengan nama class-nya. Constructor sendiri berfungsi untuk memberikan nilai awal
pada sebuah class ketika class tersebut dibuat dalam bentuk objek pada class lain
(instance). Consturctor secara default tidaklah memiliki parameter, namun dapat
ditambahkan parameter jika dibutuhkan. Perlu diingat, tidak diperbolehkan
menggunakan void pada constructor.Sintaks:
class NamaClass{
NamaConstuctor(){
...
}
NamaConstuctot(tipeData namaVar){
...
}
}
Misalkan terdapat class bernama Bangunan, dimana jika objek persegi dipanggil akan
menampilkan luas dari persegi. Objek persegi_panjang jika dipanggil akan menampilkan
luas persegi panjang. Berikut contoh sourcecode-nya yang ditunjukkan pada gambar 6.2
disertai hasil outputnya 6.2 (a).
6.6 Method
Method adalah sarana bagi programmer untuk memodularisasi, artinya membreak atau
memecah program kompleks menjadi bagian yang kecil-kecil sehingga nantinya dapat
digunakan berulang-ulang, daripada menulis beberapa baris kode yang sama. Method
dalam Java mirip dengan fungsi atau procedure dalam bahasa pemrograman yang lain.
Pada konsep Object Oriented Programming, function lebih dikenal dengan istilah
Method dimana merupakan suatu bagian dari objek yang mendefinisikan apa yang bisa
objek tersebut lakukan.
Terdapat dua macam method di Java yaitu void dan return. Penamaan method
mengikuti kaidah penamaan seperti pada penamaan variabel. Bagian parameter pada
method diisi dengan parameter-parameter fungsi yang diperlukan. Passing Parameter
dilakukan dengan cara pass by value dan pass by reference. Ingat, jika bentuknya
return, maka tipe data returnya harus sama dengan tipe data pada penyebutan
methodnya. Sintaks:
class NamaClass{
void namaMethod(){
...
}
Pada gambar 6.3 ditunjukkan contoh penggunaan dari method void dan return.
Perhatikan baris 19, dimana pada method tersebut harus mengembalikan tipe data
47
berupa double karena penyebutan methodnya menggunakan tipe data double. Akan
terjadi error code jika tipe datanya diubah menjadi yang lain misalkan saja tipe integer.
Gambar 6.3 Penggunaan Method Void dan Return
Analisa:
• Bagaimana cara membuat variable yang ada didalam parameter method
namaBarang dan hargaBarang bisa diakses di method main? SOP hasilnya di
main!
48
bisa diberikan kepada member saja. Tapi juga bisa diberikan kepada interface dan class
itu sendiri. Terdapat 4 macam modifier pada java seperti yang ditunjukkan pada tabel
6.1.
public Y Y Y
protected Y Y Y
default Y Y N
Keterangan:
Modifier
• Y artinya bisa diakses
• N artinya tidak bisa diakses
• Subclass artinya class anak
Apabila tidak menggunakan alias default, maka class dan member hanya bisa diakses
dari class itu sendiri dan di dalam package itu saja (class yang berada satu package
dengannya). Sebagai contohnya, ditunjukkan pada gambar 6.4 dan hasil outputnya 6.4
(a).
6.8 Analisa
Lakukan analisa pada setiap source code yang sudah dijelaskan disertai dengan
screenshot dan penjelasannya!
6.9 Tugas
1. Buatlah program untuk memasukkan 1 data mahasiswa menggunakan scanner
kemudian tampilkan hasilnya. Berikut ketentuan yang harus ada di programmnya:
• Buat class dengan nama DataPerson()
• Buat variable instance dengan atribut: nama, nim, prodi, alamat, no_telpon
(sesuaikan dengan data personil masing-masing).
• Buatlah method dengan nama FillData() untuk mengisi data mahasiswa •
Buatlah method dengan nama ShowData() untuk menampilkan data
mahasiswa
50
51
Modul VII
Inheritance
Konsep inheritance membuat sebuah struktur atau ‘hierarchy’ class dalam kode
program. Class yang akan ‘diturunkan’ bisa disebut sebagai class induk (parent class),
superclass, atau base class. Sedangkan class yang ‘menerima penurunan’ bisa disebut
sebagai class anak (child class), subclass, derived class atau heir class. Tidak semua
property dan method dari class induk akan diturunkan. Property dan method dengan
hak akses private, tidak akan diturunkan kepada class anak. Hanya property dan
method dengan hak akses protected dan public saja yang bisa diakses dari class anak.
Suatu class yang mempunyai class turunan dinamakan parent class atau base class.
Sedangkan class turunan itu sendiri seringkali disebut subclass atau child class. Suatu
subclass dapat mewarisi apa-apa yang dipunyai oleh parent class. Dikarenakan suatu
subclass dapat mewarisi apa apa yang dipunyai oleh parent class-nya, maka member
dari suatu subclass adalah terdiri dari apa-apa yang ia punyai dan juga apa-apa yang ia
warisi dari class parent-nya. Keuntungan menggunakan inheritance antara lain:
52
7.3 Extends
Extends merupakan keyword yang harus ditambahkan pada definisi class yang menjadi
subclass. Perhatikan gambar 7.1 untuk mempermudah pehamanan mengenai
penggunaan extends pada inheritance. Class MainKendaraan merupakan child dari
class Kendaraan, hal ini bisa dilihat dari class diagram dimana terdapat tanda anak
panah “is” menuju class parent yaitu Kendaraan. Keyword extends harus diletakkan
pada child class dimana pada kasus ini adalah MainKendaraan. Jadi semua atribute
dan method yang public dan protected dimiliki oleh Kendaran bisa diakses oleh class
MainKendaraan. Sintaks:
Class SubClass extends ParentClass{
...
}
Source code-nya ditunjukkan pada gambar 7.2 disertai dengan hasil outputnya (a).
53
Gambar 7.2 Class Main Kendaraan Extend ke Kendaraan
Analisa:
• Tambahkan method setMesin dan getMesin di class MainKendaraan seperti
coding pada gambar 7.3. Run kembali, bagaimana hasilnya! Jelaskan!
54
Gambar 7.3 Memanggil Method yang di Override di Subclass
7.4 Virtual Method Invocation
Virtual Method Invocation (VMI) bisa dilakukan jika terjadi polimorfisme dan overriding.
Pada saat obyek dibuat tersebut memanggil overridden method pada superclass,
kompiler java akan melakukan invocation (pemanggilan) terlebih dahulu terhadap
overriding method yang ada pada subclass. Sintaks:
Superclass namaObjek = new Subclass();
namaObject.namaMethod();
Pada gambar 7.4 ditunjukkan contoh dari VMI. Setelah selesai, cobalah run, bagaimana
hasilnya!
55
VMIGambar 7.4 Contoh Penggunaan VMI
56
Pada saat object hitungLuas dibuat maka kompiler java akan melakukan invocation
terhadap overriding method pada subclass. Atribut panjang dan lebar dari superclass
akan menutupi (hide) atribut dari subclass. Sedangkan method luas() yang dijalankan
merupakan method yang di override oleh subclass PersegiPanjang.
57
Gambar 7.6 Source Code Contoh Single Inheritance
Jika diperhatikan pada class Kucing tidak ada method makan dan variable nama
melainkan hanya method speak, tetapi pada class MainMamalia, object cat dari class
Kucing bisa mengaksesnya. Ini terjadi karena class Kucing turunan dari Mamalia,
sehingga variable nama dengan modifier protected bisa diakses oleh Kucing begitu juga
dengan method makan.
Analisa:
• Bagaimana hasilnya jika pada class Mamalia, modifier variable nama diubah
menjadi private?jelaskan!
• Cobalah melakukan VMI pada object cat, dan lakukan override untuk method
speak sehingga menjalakan method speak tersebut dari parent-nya.
58
7.6 Multiple Inheritance
Jika pada single inheritance setiap subclass mewarisi atribut ataupun method dari super
class, sedangkan multiple inheritance memungkinkan suatu class mewarisi atribute
maupun method lebih dari satu superclass. Prinsip dari multiple inheritance di java
menggunakan interface. Interface berupa kumpulan memuat deklarasi dan struktur
method tanpa detail implementasinya. Contoh dari class diagram penggunaan multiple
inheritance ditunjukkan pada gambar 7.7. Toni merupakan turunan dari Ayah dan Ibu
dimana Ibu dan Ayah merupakan turunan dari Kakek. Source code-nya ditunjukkan
pada gambar 7.8.
Kakek
Ayah Ibu
Toni
59
Gambar 7.8
Penggunaan Multiple Inheritance yang Salah
Perhatikan class Toni, terlihat bawha class Ayah dan Ibu tidak boleh diturunkan secara
bersamaan. Java tidak menginjinkan multiple inheritance dari class. Jadi untuk
mengatasi hal tersebut, java menyediakan interface. Interface merupakan kumpulan
method yang memuat deklarasi dan struktur method tanpa detail implementasinya,
kecuali dengan menambahkan keyword default. Source code yang benar untuk
permasalahan di atas ditunjukkan pada gambar 7.9.
60
Gambar 7.9 Penggunaan Multiple Inheritance
7.7 Analisa
Lakukan analisa pada setiap source code yang sudah dijelaskan disertai dengan
screenshot dan penjelasannya!
7.8 Tugas
1. Buatlah aplikasi toko buku dengan ketentuan sebagai berikut:
Masukkan data buku sebanyak 3 kali, dimana tiap data isinya harus meliputi:
61
Design aplikasi toko buku tersebut dengan konsep inheritance dan tentukan
parent class serta child class-nya. Setelah itu implementasikan class-class yang
teladh didesign dengan membuat program sederhana yang memiliki fasilitas entri
data buku dan melihat isi buku yang telah dientrikan.
62
63
Modul VIII
Polimorfisme
8.1 Tujuan Pembelajaran
1. Praktikan mampu memahami konsep dari polimorfisme.
2. Praktikan dapat mengenal dan menggunakan beberapa polimorfisme yang ada
pada JAVA
64
Gambar 8.2 Polymorfisme Pada Constructor
65
Sekarang buatlah main class dan buat objek untuk memanggil constructor di class
Penyanyi baik yang tanpa parameter maupun menggunakna parameter. Source code
nya ditunjukkan pada gambar 8.3 dan hasil output (a).
Gambar 8.3 Class MainPenyanyi
Keterangan:
66
(dynamic bidning)Gambar 8.4 Penggunaan Dynamic Binding
67