Disusun Oleh :
NAMA : NUR MUHAMMAD SYAIFUDDIN
NIM : 32601900026
Hari :
Tanggal :
1. Sigit Ardianto 1.
Mengetahui,
ii
KATA PENGANTAR
Puji syukur penulis panjatkan kepada Allah SWT, yang telah memberikan
rahmat, taufik serta hidayah-Nya, sehingga laporan Pemrograman Berorientasi
Objek dapat terselesaikan.
iii
DAFTAR ISI
iv
3.2.1 Array ............................................................................................... 30
3.2.2 String ............................................................................................... 32
3.3 Latihan .................................................................................................... 35
3.4 Tugas ...................................................................................................... 54
3.5 Kesimpulan ............................................................................................. 61
BAB IV KONSEP DASAR PEMROGRAMAN JAVA ................................... 62
4.1 Tujuan ..................................................................................................... 62
4.2 Dasar Teori ............................................................................................. 62
4.2.1 Pengantar Pemrograman Berorientasi Objek .................................. 62
4.2.2 Apa Itu Kelas? ................................................................................. 63
4.2.3 Mendefinisikan Kelas...................................................................... 64
4.2.4 Contoh Kasus Sederhana................................................................. 65
4.2.5 Instansiasi Objek ............................................................................. 66
4.2.6 Mengisi Nilai Pada Referensi Objek ............................................... 66
4.2.7 Method............................................................................................. 67
4.2.8 Mendefinisikan Method .................................................................. 67
4.2.9 Pengembalian Nilai di Dalam Method ............................................ 68
4.2.10 Method Berparameter ...................................................................... 68
4.2.11 Constructor ..................................................................................... 69
4.2.12 Kata Kunci This .............................................................................. 70
4.2.13 Melakukan Overload Terhadap Method ......................................... 71
4.2.14 Overload Pada Constructor ............................................................ 72
4.2.15 Menentukan Tingkat Akses Data dan Method ................................ 72
4.2.16 Kata Kunci Static ............................................................................ 73
4.2.17 Kata Kunci Final ............................................................................. 74
4.2.18 Kelas di Dalam Kelas (inner class)................................................. 74
4.3 Latihan .................................................................................................... 75
4.4 Tugas .................................................................................................... 104
4.5 Kesimpulan ........................................................................................... 110
BAB V PEWARISAN (INHERITANCE) ........................................................ 111
5.1 Tujuan ................................................................................................... 111
v
5.2 Dasar Teori ........................................................................................... 111
5.2.1 Pewarisan ...................................................................................... 111
5.2.2 Overriding ..................................................................................... 113
5.2.3 Overloading .................................................................................. 113
5.3 Latihan .................................................................................................. 114
5.4 Tugas .................................................................................................... 124
5.5 Kesimpulan ........................................................................................... 129
BAB VI POLIMORFISME .............................................................................. 130
6.1 Tujuan ................................................................................................... 130
6.2 Dasar Teori ........................................................................................... 130
6.3 Latihan .................................................................................................. 130
6.4 Tugas .................................................................................................... 135
6.5 Kesimpulan ........................................................................................... 139
BAB VII PENANGANAN EKSEPSI .............................................................. 140
7.1 Tujuan ................................................................................................... 140
7.2 Dasar Teori ........................................................................................... 140
7.2.1 Eksepsi .......................................................................................... 140
7.2.2 Menggunakan Kata Kunci Try dan Catch..................................... 141
7.2.3 Penjebakan Beberapa Tipe Eksepsi .............................................. 141
7.2.4 Menggunakan Kata Kunci Throw ................................................. 142
7.2.5 Menggunakan Kata Kunci Throws................................................ 142
7.2.6 Menggunakan Kata Kunci Finally ................................................ 143
7.3 Latihan .................................................................................................. 143
7.4 Tugas .................................................................................................... 152
7.5 Kesimpulan ........................................................................................... 154
BAB VIII INPUT DAN OUTPUT .................................................................... 155
8.1 Tujuan ................................................................................................... 155
8.2 Dasar Teori ........................................................................................... 155
8.2.1 Pengertian Stream ......................................................................... 155
8.2.2 Tipe Stream ................................................................................... 155
8.2.3 Melakukan Input ........................................................................... 156
vi
8.2.4 Membaca Input Data Karakter ...................................................... 157
8.2.5 Membaca Input Data String .......................................................... 157
8.2.6 Membaca Input Data Numerik ...................................................... 157
8.2.7 Dasar – dasar Baca Tulis File ....................................................... 157
8.3 Latihan .................................................................................................. 158
8.4 Tugas .................................................................................................... 166
8.5 Kesimpulan ........................................................................................... 177
DAFTAR PUSTAKA
LAMPIRAN
vii
DAFTAR GAMBAR
viii
Gambar 3. 8 Output latihan 8 ................................................................................ 47
Gambar 3. 9 Output latihan 9 ................................................................................ 49
Gambar 3. 10 Output latihan 10 ............................................................................ 50
Gambar 3. 11 Output latihan 11 ............................................................................ 51
Gambar 3. 12 Output latihan 12 ............................................................................ 53
Gambar 3. 13 Output tugas 1 ................................................................................ 55
Gambar 3. 14 Output tugas 2 ................................................................................ 57
Gambar 3. 15 Output tugas 2 ................................................................................ 60
Gambar 4. 1 Output latihan 1 ................................................................................ 76
Gambar 4. 2 Output latihan 2 ................................................................................ 78
Gambar 4. 3 Output latihan 3 ................................................................................ 79
Gambar 4. 4 Output latihan 4 ................................................................................ 82
Gambar 4. 5 Output latihan 5 ................................................................................ 84
Gambar 4. 6 Output latihan 6 ................................................................................ 86
Gambar 4. 7 Output latihan 7 ................................................................................ 88
Gambar 4. 8 Output latihan 8 ................................................................................ 90
Gambar 4. 9 Output latihan 9 ................................................................................ 92
Gambar 4. 10 Output latihan 10 ............................................................................ 94
Gambar 4. 11 Output latihan 11 ............................................................................ 96
Gambar 4. 12 Output latihan 12 ............................................................................ 98
Gambar 4. 13 Output latihan 13 ............................................................................ 99
Gambar 4. 14 Output latihan 14 .......................................................................... 101
Gambar 4. 15 Output latihan 15 .......................................................................... 102
Gambar 4. 16 Output latihan 16 .......................................................................... 104
Gambar 4. 17 Output tugas 1 .............................................................................. 108
Gambar 4. 18 Output tugas 1 .............................................................................. 109
Gambar 5. 1 Hirarki class dosen ......................................................................... 112
Gambar 5. 2 Class diagram untuk hirarki dosen ................................................. 112
Gambar 5. 3 Output latihan 1 .............................................................................. 117
Gambar 5. 4 Output latihan 2 .............................................................................. 120
Gambar 5. 5 Output latihan 3 .............................................................................. 122
ix
Gambar 5. 6 Output latihan 4 .............................................................................. 123
Gambar 5. 7 Output tugas 1 ................................................................................ 128
Gambar 6. 1 Output latihan polimorfisme .......................................................... 134
Gambar 6. 2 Output tugas 1 ............................................................................... 138
Gambar 7. 1 Output latihan 1 .............................................................................. 144
Gambar 7. 2 Output latihan 2 .............................................................................. 145
Gambar 7. 3 Output latihan 3 .............................................................................. 146
Gambar 7. 4 Output latihan 4 .............................................................................. 148
Gambar 7. 5 Output latihan 5 .............................................................................. 150
Gambar 7. 6 Output latihan 6 .............................................................................. 151
Gambar 7. 7 Output tugas 1 ................................................................................ 153
Gambar 8. 1 Output latihan 1 .......................................................................................... 159
Gambar 8. 2 Output latihan 2 .......................................................................................... 160
Gambar 8. 3 Output latihan 3 .......................................................................................... 162
Gambar 8. 4 Output latihan 4 .......................................................................................... 163
Gambar 8. 5 Isi file input.txt ........................................................................................... 163
Gambar 8. 6 Isi file output.txt yang telah dibuat ............................................................ 165
Gambar 8. 7 Membuat file input.txt, mengecek, mengisi, dan menampilkan file .......... 174
Gambar 8. 8 File input.txt ............................................................................................... 174
Gambar 8. 9 Merename nama file input.txt .................................................................... 174
Gambar 8. 10 Nama file yang telah direname ................................................................ 174
Gambar 8. 11 Menghapus file inputUser.txt ................................................................... 175
Gambar 8. 12 File inputUser.txt berhasil dihapus........................................................... 175
Gambar 8. 13 Membuat file output.dat, mengecek, mengisi, dan menampilkan file ..... 175
Gambar 8. 14 File output.dat .......................................................................................... 176
Gambar 8. 15 Merename file output.dat ......................................................................... 176
Gambar 8. 16 Nama file yang telah direname ................................................................ 176
Gambar 8. 17 Menghapus file outputUser.dat ................................................................ 176
Gambar 8. 18 File outputUser.dat berhasil dihapus ........................................................ 176
x
DAFTAR TABEL
xi
BAB I
INSTALASI JDK DAN NETBEANS
1.1 Tujuan
1. Prakikan dapat melakukan instalasi dan setting Java Development Kit
(JDK).
2. Praktikan dapat menggunakan Netbeans IDE sebagai editor
pemrograman.
3. Praktikan dapat menjalankan (eksekusi) program java sederhana yang
ditulis dengan Netbeans IDE.
1
2
1.3 Latihan
1.3.1 Instalasi JDK 8
Sebelum memulai pemrograman Java, kita harus menginstal Java
Development Kit (JDK) dan Netbeans IDE yang disediakan secara gratis
oleh Oracle. Java Development Kit tersedia dan dapat didownload pada
situs:
http://www.oracle.com/technetwork/java/javase/downloads/index.ht
ml.
JDK 8 untuk berbagai platform tersedia pada situs tersebut. Installer
yang mengekstrak file JDK akan membuat direktori yang diperlukan dan 4
sekaligus menyalin file - file ke dalam direktori tersebut. Installshield
Wizard memberikan tampilan bahwa Java siap diinstalasi.
1.3.2 Instalasi Netbeans IDE
Netbeans versi terbaru dapat didownload secara gratis pada situs
Netbeans yaitu : https://netbeans.org/downloads/. Untuk memulai instalasi
Netbeans, jalankan aplikasi file netbeans yang sudah Anda download
sebelumnya dan lanjutkan langkah instalasi.
3
3. Kemudian pada saat bagian choose project category pilih java dan pada
bagian project pilih java application.
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 menggunakan command JAVA untuk
menjalankan program JAVA.
C. Perintah untuk menampilkan “Hello_World!” pada layer monitor.
Selanjutnya program dapat dieksekusi dengan klik tombol play atau
tekan shift+F6.
1.4 Tugas
1. Buatlah sebuah program yang mencetak data berikut!
Nama : Nur Muhammad Syaifuddin
NIM : 32601900026
Alamat : Desa Sembaturagung rt 04 rw 02
No. Telepon : 085747450205
Email : nurmuhammadsyaifuddin@std.unissula.ac.id
Data bisa diganti dengan data Anda.
Jawab:
a. Kode program
package com.prak.pbo;
import java.util.Scanner;
System.out.print("Nama\t: ");
String nama = input.nextLine();
System.out.print("NIM\t: ");
String nim = input.nextLine();
System.out.print("Alamat\t: ");
String alamat = input.nextLine();
System.out.print("Telp\t: ");
String telepon = input.nextLine();
System.out.print("Email\t: ");
String email = input.nextLine();
}
}
10
b. Output program
c. Penjelasan
Program di atas adalah program untuk menampilkan biodata
mahasiswa. Dimana untuk setiap data yaitu nama, nim, alamat,
nomor telepon, dan email diinputkan oleh user.
java.util.Scanner adalah library untuk memanggil fungsi input
di java. Fungsi nextLine() adalah untuk menginputkan value
apabila kata yang diinputkan mengandung spasi atau lebih dari satu
kata.
1.5 Kesimpulan
Pada BAB I ini kita telah melakukan instalasi JDK dan Netbeans IDE
untuk membuat projek dengan bahasa pemrograman java. Kita juga telah
berhasil membuat projek pertama kita di Netbeans IDE yaitu hello_word.
Pada struktur kode program terdapat sintaks public static void
main(String [] args), sintaks tersebut adalah method utama di java,
dimana segala jenis perintah akan dieksekusi di blok state method main.
Untuk penambahan komentar yaitu dengan tanda // jika hanya satu baris,
jika lebih gunakan /* dan */ di awal dan akhir kalimat. Sintaks
System.out.println(); adalah perintah untuk menampilkan sesuatu di
console dan memberi satu baris baru.
BAB II
VARIABEL, TIPE DATA, DAN OPERATOR
2.1 Tujuan
1. Praktikan dapat membuat variabel dengan benar.
2. Praktikan dapat menggunakan berbagai tipe data dalam berbagai
kepentingan.
3. Praktikan mampu menggunakan berbagai operator dan
mengimplementasikannya dalam pemrograman.
11
12
D. Boolean
Tipe data Boolean hanya memiliki 2 kemungkinan nilai yaitu true
dan false.
Contoh:
boolean selesai;
selesai = true;
2.2.3 Operator
A. Operator aritmatika
Operator aritmatika di JAVA seperti pada umumnya terdiri dari
penjumlahan (+), pengurangan (-), pembagian (/), perkalian (*), dan
modulo (%).
Disamping operator – operator dasar tersebut, ada beberapa cara
singkat untuk menuliskan operator aritmatika seperti:
- x = x + 1, dapat disingkat menjadi x++
- x = x – 1, dapat disingkat menjadi x—
- x = x + 3, dapat disingkat menjadi x += 3
- x = x – 3, dapat disingkat menjadi x -= 3
B. Operator relasi
Operator relasi digunakan dalam ekspresi boolean yang akan
menghasilkan nilai boolean guna menentukan langkah eksekusi blok
pernyataan tertentu. Berikut adalah simbol dari operator relasi:
Tabel 1. 1 Operator relasi
Simbol Keterangan
> Lebih dari
< Kurang dari
>= Lebih dari sama dengan
<= Kurang dari sama dengan
== Sama dengan
!= Tidak sama dengan
14
C. 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 (!).
2.3 Latihan
1. Operator aritmatika
a. Kode program
package com.prak.pbo;
b. Output program
c. Penjelasan
Program di atas adalah program untuk melakukan operasi
aritmatika yaitu +, -, *, /, dan modulo. Pada program di atas kita
melakukan operasi aritmatika dengan 2 nilai yaitu 100 dan 30.
Maka, hasil dari penjumlahan, penguranganm, perkalian,
pembagian, dan modulo dari 2 nilai tersebut, akan seperti gambar
output di atas.
2. Operator relasi
a. Kode program
package com.prak.pbo;
public class Main {
public static void main(String[] args) {
c. Penjelasan
Program di atas adalah program dari penggunaan operator relasi
yaitu >, <, >=, <=, ==, dan !=. pada program di atas kita
membandingkan 2 nilai yaitu 100 dan 30, maka setelah dilakukan
perbandingan 2 nilai tersebut, hasilnya akan seperti pada gambar
output di atas.
17
3. Operator logika
a. Kode program
package com.prak.pbo;
public class Main {
public static void main(String[] args) {
System.out.println("Nama\t: Nur Muhammad Syaifuddin");
System.out.println("NIM\t: 32601900026\n");
boolean A = true, B = false;
boolean o_and = A && B;
boolean o_or = A || B;
boolean o_notA = !A;
boolean o_notB = !B;
System.out.println(A + " AND " + B + " => " + o_and);
System.out.println(A + " OR " + B + " => " + o_or);
System.out.println("NOT " + A + " => " + o_notA);
System.out.println("NOT " + B + " => " + o_notB);
}
}
b. Output program
c. Penjelasan
Program di atas adalah program dari penggunaan operator
logika, dimana kita memiliki 2 variabel boolean, A bernilai true dan
B bernilai false. Kemudian dilakukan operasi AND, OR, dan NOT
pada kedua variabel tersebut, sehingga menghasilkan output seperti
gambar di atas.
18
2.4 Tugas
1. Buatlah program kalkulator sederhana yang mengimplementasikan
beberapa operator yang sudah dijelaskan.
Jawab:
a. Kode program
package com.prak.pbo;
import java.util.Scanner;
float hasil;
switch (operator){
case "+":
hasil = a + b;
displayHasil(a, operator, b, hasil);
break;
case "-":
hasil = a - b;
displayHasil(a, operator, b, hasil);
break;
case "*":
hasil = a * b;
displayHasil(a, operator, b, hasil);
break;
case "/":
hasil = a / b;
displayHasil(a, operator, b, hasil);
break;
default:
System.out.println("\noperator tidak ditemukan");
}
19
System.out.print("nilai a = ");
a = udin.nextFloat();
System.out.print("operator = ");
operator = udin.next();
System.out.print("nilai b = ");
b = udin.nextFloat();
b. Output program
c. Penjelasan
Program di atas adalah program untuk membuat kalkulator
sederhana, yaitu menggunakan operator tambah, kurang, kali, dan
bagi. Masing – masing gambar di atas menunjukan output dari
masing – masing operator. Jika operator yang kita inputkan salah,
maka program akan menampilkan pesan di console “operator tidak
ditemukan”.
2. Buatlah sebuah program untuk menampilkan hasil operasi dasar logika
AND, OR, dan NOT.
Jawab:
a. Kode program
package com.prak.pbo;
import java.util.Scanner;
if(operator.equals("or") || operator.equals("OR")){
operasiOr(true, true);
operasiOr(true, false);
23
operasiOr(false, true);
operasiOr(false, false);
}else if(operator.equals("and") ||
operator.equals("AND")){
operasiAnd(true, true);
operasiAnd(true, false);
operasiAnd(false, true);
operasiAnd(false, false);
}else if(operator.equals("not") ||
operator.equals("NOT")){
operasiNot(true);
operasiNot(false);
}else{
System.out.println("\noperator Logika tidak
ditemukan");
}
}
displayOperasiLogika(operator);
}
b. Output program
c. Penjelasan
Program di atas adalah program untuk menampilkan hasil dari
operasi logika AND, OR, dan NOT. Untuk AND, jika semua true
maka hasilnya true, satu saja bernilai false, maka hasilnya false.
Untuk OR, jika semua atau salah satu saja true maka hasilnya true,
jika semua false hasilnya false. Dan untuk NOT, jika true maka
hasilnya false dan jika false maka hasilnya true.
3. Buatlah sebuah program yang melibatkan proses casting nilai pada
sebuah variabel!
Jawab:
a. Kode program
package com.prak.pbo;
import java.util.Scanner;
int bagiInt = a / b;
float bagiFloat = (float) a / b;
System.out.println("Hasil bagi int = " + bagiInt);
System.out.println("Hasil bagi float = " + bagiFloat +
"\n");
}
System.out.print("Nilai a = ");
int a = input.nextInt();
System.out.print("Nilai b = ");
int b = input.nextInt();
castingValue(a, b);
}
28
b. Output program
c. Penjelasan
Program di atas adalah program untuk menampilkan casting
nilai dari tipe data integer ke tipe data float. Dimana user
menginputkan nilai a dan b bertipe integer, kemudian nilai a dan b
akan di konversi ke tipe data float. Dan kedua nilai akan dibagi.
Hasil baginya berupa nilai bertipekan integer dan float.
29
2.5 Kesimpulan
Pada BAB II ini kita telah mempelajari apa itu variabel, tipe data, dan
operator di bahasa pemrograman java. Variabel tersebut diantaranya
integer, short, byte, long, float, double, char, dan string. Kita sudah tahu
bagaimana cara penulisan variabel dan tipe data yang benar. Bagaimana
fungsi dari penggunaan operator aritmatika, relasi, dan logika. Kita juga
telah tahu bagaimana cara mengkonversi tipe data ke tipe data lain.
Sehingga diharapkan setelah ini kita mampu menerapkannya pada projek
java kita nanti.
BAB III
ARRAY DAN STRING
3.1 Tujuan
1. Praktikan mengerti dan memahami penggunaan array dan string
2. Praktikan mampu menggunakan operator dan method yang menyertai
penerapan array dan string
30
31
- Untuk membuat string baru dari string yang telah ada mulai dari
karakter awal hingga karakter akhir string dapat menggunakan
method substring(int awal, int akhir).
j. Melakukan modifikasi string
Untuk melakukan modifikasi string, dapat dilakukan dengan cara
sebagai berikut:
- Untuk me replace karakter pada string dengan karakter baru dapat
menggunakan method replace(char karakterLama, char
karakterBaru).
3.3 Latihan
1. Array satu dimensi
a. Kode program
package com.prakpbo;
System.out.println("Penjualan ke-"+i+" =
"+penjualan[i]);
}
}
}
36
b. Output program
}
System.out.println("Nilai mahasiswa ke-"+i+" =
"+rata2+" ("+huruf+")");
}
}
b. Output program
int nA = A.length();
int nB = B.length();
int nC = C.length();
}
}
40
b. Output program
tes3 = A.equals(E);
}
b. Output program
String sementara;
int N = nama.length;
System.out.println((i+1)+". "+nama[i]);
}
}
}
b. Output program
import java.util.Random;
System.out.println(A);
for (int i=0; i<=10; i++){
int ke = rand.nextInt(A.length());
System.out.println("Karakter ke-" + ke + " = " +
A.charAt(ke));
}
}
}
45
b. Output program
System.out.println(A);
46
}
b. Output program
String A;
String B;
String C;
A = "Laboratorium ";
B = "Komputasi ";
C = "Sistem Cerdas";
System.out.println(A);
System.out.println(B);
System.out.println(C);
System.out.println("============SETELAH
DIGABUNG============");
System.out.println(Lab);
}
}
49
b. Output program
}
}
b. Output program
c. Penjelasan
Program di atas adalah program untuk melakukan memodifikasi
string. Dengan cara me-replace karakter pada string dengan
karakter baru menggunkan method replace(char karakter
import java.util.Arrays;
b. Output program
3.4 Tugas
1. Buatlah program antrian FIFO!
Jawab:
a. Kode program
package tugas.prak.pbo;
import java.util.LinkedList;
import java.util.Queue;
addUser(listAntrianUser, "udin");
55
addUser(listAntrianUser, "eko");
addUser(listAntrianUser, "supar");
addUser(listAntrianUser, "jatmiko");
addUser(listAntrianUser, "wagiyo");
System.out.println();
removeAntrian(listAntrianUser);
removeAntrian(listAntrianUser);
removeAntrian(listAntrianUser);
removeAntrian(listAntrianUser);
}
b. Output program
c. Penjelasan
Program di atas adalah program antrian FIFO(first in first out)
yang menggunakan interface queue. Jadi, kita harus instansiasi
terlebih dahulu interface queue. Baru setelah itu kita bisa
memanipulasi objeknya untuk menambah atau menghapus data.
Metode FIFO akan menambahkan dan meanghapus data dari depan.
56
import java.util.ArrayDeque;
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedList;
import java.util.Queue;
Queue<String> listAntrianUser =
Collections.asLifoQueue(new ArrayDeque<>());
addUser(listAntrianUser, "udin");
addUser(listAntrianUser, "eko");
addUser(listAntrianUser, "supar");
addUser(listAntrianUser, "jatmiko");
addUser(listAntrianUser, "wagiyo");
System.out.println();
removeAntrian(listAntrianUser);
removeAntrian(listAntrianUser);
removeAntrian(listAntrianUser);
removeAntrian(listAntrianUser);
}
b. Output program
c. Penjelasan
Program di atas adalah program antrian LIFO(last in first out)
yang menggunakan interface queue. Jadi, kita harus instansiasi
terlebih dahulu interface queue. Baru setelah itu kita bisa
memanipulasi objeknya untuk menambah atau menghapus data.
Metode LIFO akan menambahkan data dari belakang dan
meanghapus data dari depan.
3. Buatlah program searching dan sorting pada sebuah elemen array!
Jawab:
a. Kode program
package com.prak.pbo;
import java.util.Arrays;
import java.util.Scanner;
}
}
if (!nilai){
System.out.println("nilai " + cari + " tidak ada");
}
b. Output program
c. Penjelasan
Program di atas adalah program untuk mencari indeks dari
data yang ada di dalam elemen array yang telah disediakan. Jika
data yang dicari tidak ada, maka akan muncul pesan di console
“nilai yang dicari tidak ada”. Kemudian data akan diurutkan dari
yang erkecil dan terbesar seperti pada gambar di atas.
61
3.5 Kesimpulan
Pada BAB III ini dapat disimpulkan bahwa array merupakan tipe data
yang digunakan unutuk menampung kumpulan data yang disajikan secara
berurutan. Setiap elemen data memiliki tipe data yang sama. Array
menggunakan sekelompok lokasi memori yang berurutan dengan nama dan
tipe data yang berbeda. 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. Kemudian, setiap elemen data disebut
dengan nama_variabel_array yang diikuti dengan indeks penomorannya.
Sedangkan String merupakan deretan karakter. Pada java, string
merupakan objek dari kelas String. Penulisan string dilakukan dengan
mengapit data menggunakan tanda petik (ganda). String dapat dioperasikan
dengan menggunakan beberapa operator atau method untuk beberapa
kepentingan yang berbeda.
BAB IV
KONSEP DASAR PEMROGRAMAN JAVA
4.1 Tujuan
1. Praktikan mampu memahami konsep dasar pemrograman java.
2. Praktikan dapat membedakan arti dan pemakaian kelas objek, referensi
objek, method, constructor, dan beberapa kata kunci dalam
pemrograman java.
62
63
tabung dengan ukuran tersebut. Untuk mengatasi hal semacam ini, maka
Java mengizinkan kita untuk menempatkan parameter di dalam sebuah
method agar method di atas dapat digunakan untuk segala ukuran tabung.
Berikut ini kode yang seharusnya dituliskan untuk mendefinisikan method
di atas.
double volumeTabung(int jejari, int tinggi) {
return (3.14 * jejari * jejari * tinggi);
}
Melalui cara seperti ini, kita dapat memasukan nilai berapapun ke dalam
method tersebut. Sebagai contoh, perhatikan kode berikut :
int volume1, volume2, volume3;
//menghasilkan nilai 1538.6
volume1 = volumeTabung(7, 10);
//menghasilkan nilai 3768
volume2 = volumeTabung(10, 12);
//menghasilkan nilai 4019.2
volume3 = volumeTabung(8, 20);
Seperti kita lihat, volume1 merupakan variabel penampung untuk
perhitungan volume tabung dengan jari - jari alas 7 dan tinggi 10, volume2
dengan jari - jari alas 10 dan tinggi 12, dan volume3 dengan jari - jari alas 8
dan tinggi 20, padahal method yang didefinisikan hanya satu (bukan tiga
buah method).
4.2.11 Constructor
Constructor adalah method khusus yang didefinisikan di dalam kelas
dan akan dipanggil secara otomatis tiap kali terjadi instansiasi objek.
Constructor itu sendiri berfungsi untuk melakukan inisialisasi nilai terhadap
data - data yang terdapat pada kelas yang bersangkutan. Jika kita tidak
mendefinisikan constructor pada kelas yang kita buat, maka secara otomatis
Java akan membuatkannya untuk kita. Constructor semacam ini dinamakan
dengan default constructor. Default constructor akan menginisialisasi
semua data yang ada dengan nilai nol. Sama halnya seperti method,
constructor juga dapat memiliki parameter dan juga dapat di-overload.
70
}
tingkat-akses methodN(daftar-parameter) {
//kode untuk methodN
}
….
tingkat-akses methodN(daftar-parameter) {
//kode untuk methodN
}
}
Dalam hal ini tingkat akses adalah salah satu dari kata kunci private,
public, maupun protected. Apabila kita tidak mencantumkan salah satu kata
kunci tersebut pada saat mendeklarasikan data maupun method, maka secara
default Java akan menganggapnya sebagai data atau method dengan sifat
default.
Berikut ini contoh program yang akan menunjukkan pengaruh dari
tingkat akses public dan private di dalam suatu kelas. Tingkat akses
protected akan dijelaskan lebih lanjut pada bab lain di modul ini, yaitu yang
membahas mengenai pewarisan sifat terhadap kelas turunan (inheritance).
4.2.16 Kata Kunci Static
Secara normal, suatu anggota kelas (baik data maupun method) hanya
dapat diakses melalui objek referensinya. Meskipun demikian, Java
mengizinkan kita untuk mengakses suatu anggota kelas tanpa harus
membuat objek atau instance-nya terlebih dahulu. Untuk membuat anggota
kelas semacam ini, kita harus menjadikan data atau method tersebut dengan
sifat statis, yaitu dengan membubuhkan kata kunci static pada awal
deklarasi. Berikut ini contoh pendeklarasian sebuah data dan method statis
dalam suatu kelas.
class ContohDeklarasiStatik {
//mendeklarasikan data statis
static int dataStatis1;
….
//mendeklarasikan method statis
Static methodStatis1() {….}
….
74
}
Melalui cara ini, variabel dataStatis1 dan methodStatis1() dapat
dipanggil secara langsung tanpa harus membuat objek atau instance dari
kelas ContohDeklarasiStatik terlebih dahulu. Sama halnya seperti data
dan method normal (non-statis), data dan method statis juga dapat dipanggil
melalui operator titik (.). Perbedaannya, pemanggilan data atau method
statis tidak perlu menggunakan objek referensi, melainkan nama kelas yang
memilikinya.
Bentuk umum dari pengaksesan data dan method statis dapat dituliskan
sebagai berikut:
NamaKelas.data
Atau
NamaKelas.method()
4.2.17 Kata Kunci Final
Dalam java, kata kunci final dapat user gunakan untuk mendeklarasikan
sebuah konstanta. Jika user ingin menggunakan kata kunci final untuk
mendeklarasikan suatu variabel sebagai konstanta, maka user perlu
mengisikan nilai ke dalam variabel tersebut. nilai tersebut akan bersifat tetap
atau tidak dapat diubah selama eksekusi program berlangsung. Berikut ini
bentuk umum dari pendeklarasikan sebuah konstanta di dalam Java.
tingkat-akses final tipe-data nama-konstanta = nilai;
Seperti halnya pada bahasa C/C++, dalam Java, konstanta pada
umumnya ditulis dengan huruf kapital. Berikut ini beberapa contoh
pendeklarasian konstanta.
final double PHI = 3.14;
private final int ERROR = -1;
private final String NEGARA = “INDONESIA”;
4.2.18 Kelas di Dalam Kelas (inner class)
Java mengizinkan user untuk mendefinisikan suatu kelas di dalam kelas
lainnya. Kelas semacam ini dinamakan sebagai inner class (kelas bagain
dalam). Inner class dapat mengakses data dan method dari kelas yang berada
di bagian luarnya, meskipun data dan method tersebut bersifat private.
75
4.3 Latihan
1. Instansiasi objek dan pengaksesan data pada objek
a. Kode program
// class Karyawan
package com.prakpbo;
}
// class Main atau class pemanggil
package com.prakpbo;
aurel.ID = "K001";
aurel.divisi = "Marketing";
aurel.nama = "Aurel Dian";
aurel.gaji = 2500000;
}
76
b. Output program
Aurel.ID = "K001";
Aurel.nama = "Marketing";
Aurel.divisi = "Aurel Dian";
Aurel.gaji = 2500000;
Dhennis.ID = "K002";
Dhennis.nama = "Keuangan";
Dhennis.divisi = "Muhamad Dhennis";
Dhennis.gaji = 2250000;
}
78
b. Output program
}
// class Main atau pemanggil
package com.prakpbo;
Karyawan001.nama = "Mischella";
Karyawan001.divisi = "HRD";
}
}
b. Output program
c. Penjelasan
Pada program di atas tampak bahwa kita hanya memasukan nilai
untuk objek karyawan001, namun pada saat kita mencetak data pada
karyawan002, hasil yang diberikan adalah sama seperti yang
dihasilkan oleh karyawan001. Ini disebabkan karena karyawan001
dan karyawan002 sebenarnya menunjuk ke objek Karyawan yang
sama. Saat dieksekusi, program tersebut di atas akan memberikan
hasil yang sama.
Sebagai catatan penting, meskipun keduanya menunjuk ke objek
yang sama, akan tetapi tidak terdapat hubungan antara variabel
karyawan001 dan karyawan002. Artinya, kita bisa saja melepas
salah satu variabel tersebut untuk menunjuk ke objek lain, tanpa
berpengaruh terhadap variabel lainnya.
4. Referensi Objek (2)
a. Kode program
// class Karyawan
package com.prakpbo;
karyawan001.nama = "Mischella";
karyawan001.divisi = "HRD";
System.out.println("Data Karyawan001");
System.out.println("Nama\t: " + karyawan001.nama);
System.out.println("Divisi\t: " + karyawan001.divisi);
System.out.println(" ");
System.out.println("Data Karyawan002");
System.out.println("Nama\t: " + karyawan002.nama);
System.out.println("Divisi\t: " + karyawan002.divisi);
System.out.println(" ");
System.out.println("Setelah Perubahan Referensi");
System.out.println(" ");
System.out.println("Data Karyawan001");
System.out.println("Nama\t: " + karyawan001.nama);
System.out.println("Divisi\t: " + karyawan001.divisi);
System.out.println(" ");
System.out.println("Data Karyawan002");
System.out.println("Nama\t: " + karyawan002.nama);
System.out.println("Divisi\t: " + karyawan002.divisi);
}
82
b. Output program
5. Method void
a. Kode program
// class Karyawan
package com.prakpbo;
void cetakData() {
System.out.println("Data Karyawan ");
System.out.println("ID\t: " + ID);
System.out.println("Nama\t: " + nama);
System.out.println("Divisi\t: " + divisi);
System.out.println("Gaji\t: " + gaji);
}
}
// class Main atau pemanggil
package com.prakpbo;
Karyawan001.ID = "K001";
Karyawan001.nama = "Agus Ramadhan";
Karyawan001.divisi = "Keuangan";
Karyawan001.gaji = 1850000;
Karyawan001.cetakData();
84
}
b. Output program
void cetakData() {
System.out.println("Data Karyawan ");
System.out.println("ID\t: " + ID);
System.out.println("Nama\t: " + nama);
System.out.println("Divisi\t: " + divisi);
System.out.println("Gaji\t: " + gaji);
}
double hitungSumbanganZakat() {
double zakat = gaji * 0.025;
return zakat;
}
}
Karyawan001.ID = "K001";
Karyawan001.nama = "Agus Ramadhan";
Karyawan001.divisi = "Keuangan";
Karyawan001.gaji = 1850000;
Karyawan001.cetakData();
}
86
b. Output program
Pada class Main, kita buat objek baru bernama karyawan001. Lalu
program akan mengisi data kedalam objek karyawan001 seperti ID,
nama, divisi, dan gaji. Setelah itu program akan memanggil method
void cetakData() yang ada pada class Karyawan. Pada class
Karyawan, method void cetakData() akan menampilkan data
karyawan seperti ID, nama, divisi, dan juga gaji. Sedangkan pada
method hitungSumbanganZakat() program akan menghitung zakat
berdasarkan nilai kembaliannya yang bertipe data double, yaitu
zakat = gaji * 0,025. Sehingga, akan menampilkan output seperti
pada gambar di atas.
87
7. Method berparameter
a. Kode program
// class Karyawan
package com.prakpbo;
void cetakData() {
System.out.println("Data Karyawan ");
System.out.println("ID\t: " + ID);
System.out.println("Nama\t: " + nama);
System.out.println("Divisi\t: " + divisi);
System.out.println("Gaji\t: " + gaji);
}
double hitungSumbanganZakat() {
double zakat = gaji * 0.025;
return zakat;
}
void isiData(String kode, String Nama, String Div,
double Gaji) {
ID = kode;
nama = Nama;
divisi = Div;
gaji = Gaji;
}
}
}
b. Output program
8. Constructor
a. Kode program
// class Karyawan
package com.prakpbo;
Karyawan() {
ID = "k001";
nama = "Budi";
divisi = "Produksi";
gaji = 1750000;
}
void cetakData() {
System.out.println("Data Karyawan ");
System.out.println("ID\t: " + ID);
System.out.println("Nama\t: " + nama);
System.out.println("Divisi\t: " + divisi);
System.out.println("Gaji\t: " + gaji);
}
double hitungSumbanganZakat() {
double zakat = gaji * 0.025;
return zakat;
}
void isiData(String kode, String Nama, String Div,
double Gaji) {
ID = kode;
nama = Nama;
divisi = Div;
gaji = Gaji;
}
}
90
karyawan001.cetakData();
}
b. Output program
9. Constructor dinamis
a. Kode program
// class Karyawan
package com.prakpbo;
double hitungSumbanganZakat() {
double zakat = gaji * 0.025;
return zakat;
}
void isiData(String kode, String Nama, String Div,
double Gaji) {
ID = kode;
nama = Nama;
divisi = Div;
gaji = Gaji;
}
}
92
}
94
b. Output program
this.gaji = gaji;
}
void cetakData() {
System.out.println("Data Karyawan ");
System.out.println("ID\t: " + ID);
System.out.println("Nama\t: " + nama);
System.out.println("Divisi\t: " + divisi);
System.out.println("Gaji\t: " + gaji);
System.out.println();
}
double hitungSumbanganZakat() {
double zakat = gaji * 0.025;
return zakat;
}
void isiData(String kode, String Nama, String Div,
double Gaji) {
ID = kode;
nama = Nama;
divisi = Div;
gaji = Gaji;
}
}
karyawan001.cetakData();
karyawan002.cetakData();
}
b. Output program
udin.nim = "32601900026";
udin.nama = "Nur Muhammad Syaifuddin";
udin.setIpk(3.81);
System.out.println("Nama\t: " + udin.nama);
System.out.println("NIM\t: " + udin.nim);
System.out.println("IPK\t: " + udin.getIpk());
}
}
b. Output program
RobotStatic.nama = "GATOTKACA";
RobotStatic.asalNegara = "Indonesia";
RobotStatic.test();
}
}
101
b. Output program
String nama;
final double bonusLembur = 50000;
System.out.println("Data Karyawan");
System.out.println("Nama\t\t: " + Dhennis.nama);
System.out.println("Bonus lembur\t: " +
Dhennis.hitungBonusLembur(7));
}
}
b. Output program
class SistemOperasi{
private String namaOs = "Windows 10";
void cetakData(){
System.out.println("merk Notebook\t: " + merk);
System.out.println("Sistem operasi\t: " + this.namaOs);
}
}
void cetakData(){
SistemOperasi os = new SistemOperasi();
os.cetakData();
}
}
}
104
b. Output program
4.4 Tugas
1. Buatlah sebuah program sederhana untuk menghitung IPK Mahasiswa
untuk 5 Mata Kuliah. Anda harus mengimplementasikan method
berparameter, constructor, object dan inner class pada aplikasi Anda.
Jawab:
a. Kode program
// class Mahasiswa
package com.prakpbo;
import java.util.Scanner;
class MataKuliah{
totalSks += sks[i];
}
float ipk = total / totalSks;
System.out.println();
System.out.println(Mahasiswa.nama);
System.out.println(Mahasiswa.nim);
System.out.println("==================================
======================================================
=========");
System.out.println("MatKuliah || SKS ||
Tugas || UTS || UAS || Nilai Akhir || Huruf || Angka ||
Total");
System.out.println("==================================
======================================================
=========");
for (int i = 0 ; i < jumlahMk ; i++){
System.out.println(mataKuliah[i] + " || " + sks[i] + "
|| " + tugas[i] + " || " + uts[i] + " || " + uas[i] +
" || " + nilai[i] + " || " + huruf[i] + " || " + angka[i]
+ " || " + total2[i]);
}
System.out.println("\nIPK = " + ipk);
107
}
}
}
// class Caller
package com.prakpbo;
import java.util.Scanner;
System.out.print("Nama\t= ");
String nama = input.nextLine();
System.out.print("NIM\t= ");
String nim = input.nextLine();
System.out.print("\nMasukan Jumlah Mata Kuliah yang
diambil\t= ");
int jumlahMk = input.nextInt();
b. Output program
4.5 Kesimpulan
Pada BAB IV ini kita telah mempelajari konsep dasar dari pemrograman
Java. Mulai dari pengenalan class, member, dan bagaimana cara membuat
objek. Objek adalah entitas dasar saat runtime. Pada saat kode program
dieksekusi, objek berinteraksi satu sama lain tanpa harus mengetahui detail
data atau kodenya. Interaksi antara objek ini dilakukan menggunakan suatu
message. Pada pemrograman berbasis objek, objek dijadikan sebagai
komponen utama dalam program, objek menggabungkan data dan fungsi
sebagai satu kesatuan. Dalam Pemrograman berbasis objek terdapat dua
istilah yang sangat terkenal yaitu class dan objek. Class adalah cetak biru
dari sebuah objek, jadi kita dapat membuat banyak objek dari sebuah class,
atau kita dapat analogikan, class itu adalah cetakan puding, sedangkan objek
adalah puding. Method didefinisikan pada class akan tetapi dipanggil
melalui objek. Metode menentukan perilaku objek, yaitu apa yang terjadi
ketika objek itu dibuat serta berbagai operasi yang dapat dilakukan oleh
objek. class sendiri terdiri dari 3 member yaitu properti, constructor, dan
method.
BAB V
PEWARISAN (INHERITANCE)
5.1 Tujuan
1. Praktikan mampu menerjemahkan UML ke dalam bentuk pemograman
2. Praktikan dapat membedakan pemakaian overloading dan overriding
3. Praktikan mampu menerapkan konsep pewarisan, overloading,
overriding dalam pemrograman dengan Java.
111
112
5.2.2 Overriding
Overriding adalah suatu cara untuk mendefinisikan ulang method yang
ada pada class induk apabila class anak menginginkan adanya informasi
yang lain. Overriding dilakukan dengan cara menulis ulang method yang
ada pada class induk dengan syarat bahwa nama dan parameter fungsi
tersebut harus sama (tidak boleh diubah). Meskipun fungsi telah ditulis
ulang oleh class anak, fungsi yang asli pada class induk masih dapat
dipanggil di class anak dengan menggunakan class super.
5.2.3 Overloading
Overloading fungsi adalah penulisan beberapa fungsi (dua atau lebih)
yang memiliki nama yang sama. Pada bahasan overloading dikenal istilah
signature. Signature sebuah fungsi adalah parameter lengkap dengan tipe
datanya yang terdapat dalam fungsi tersebut. Misal terdapat fungsi :
public int jumlahMahasiswa (int laki2, int perempuan, String
kelas);
maka signature dari fungsi tersebut adalah (int, int, String).
Suatu fungsi dikatakan di-overload manakala terdapat beberapa fungsi
dengan nama yang sama namun memiliki signature yang berbeda-beda,
sebagai contoh :
Public void infoMahasiswa (int laki2, int perempuan, string
kelas)
{
...
}
public void infoMahasiswa (int mhsLama, int mhsBaru, int
mhsCuti, int angkatan)
{
...
}
114
5.3 Latihan
1. Pewarisan
a. Kode program
// class Dosen
package com.prakpbo;
void view(){
System.out.println("Nama\t= " + this.nama);
System.out.println("NIK\t= " + this.nik);
System.out.println("Jurusan\t= " + this.jurusan);
}
}
// class Rektor
package com.prakpbo;
this.tahub_mulai = tahun_mulai;
this.jabatan_ke = jabatan_ke;
}
void viewRektor(){
System.out.println("Tahun mulai jabatan = " +
this.tahub_mulai);
System.out.println("Jabatan Rektor ke = " +
this.jabatan_ke);
}
}
// class Dekan
package com.prakpbo;
void viewDekan(){
System.out.println("Fakultas = " + this.fakultas);
}
// class Kalab
package com.prakpbo;
void viewKalab(){
System.out.println("Laboratorium = " +
this.laboratorium);
}
rektor.view();
rektor.viewRektor();
dekan.view();
dekan.viewDekan();
kalab.view();
kalab.viewKalab();
}
}
117
b. Output program
// class Rektor
package com.prakpbo;
@Override
void view(){
super.view();
System.out.println("Tahun mulai jabatan = " +
this.tahub_mulai);
System.out.println("Jabatan Rektor ke = " +
this.jabatan_ke);
}
}
// class Dekan
package com.prakpbo;
@Override
void view(){
super.view();
System.out.println("Fakultas = " + this.fakultas);
}
// class Kalab
package com.prakpbo;
@Override
void view(){
super.view();
System.out.println("Laboratorium = " +
this.laboratorium);
}
}
// class Main atau pemanggil
package com.prakpbo;
rektor.view();
dekan.view();
kalab.view();
}
}
b. Output program
3. Overloading
a. Kode program
// class Mahasiswa
package com.prakpbo;
public class Mahasiswa {
b. Output program
}
}
b. Output program
5.4 Tugas
1. Buatlah sebuah class kendaraan dengan turunannya kendaraan darat,
kendaraan laut, kemudian diturunkan lagi menjadi sepeda motor dan
perahu layar. Kemudian buatlah fungsi-fungsi untuk menampilkan data
kendaraan berupa: kecepatan, kapasitas_tangki, tahun_keluar, warna,
daya_angkut_barang, daya_angkut_manusia dan total_daya_angkut.
Jawab:
a. Kode program
//abstract class Kendaraan
package com.prakpbo;
this.nama = nama;
this.kecepatan = kecepatan;
this.kapasitasTangki = kapasitasTangki;
this.dayaAngkutBarang = dayaAngkutBarang;
this.dayaAnkutManusia = dayaAnkutManusia;
this.tahunKeluar = tahunKeluar;
this.warna = warna;
}
125
@Override
void displaySpesifikasi() {
this.totalDayaAngkut = this.dayaAngkutBarang +
this.dayaAnkutManusia;
System.out.println("\n============================SEPE
DA MOTOR============================");
System.out.println("\nSepeda Motor ini bermerk " +
this.nama + ", saya beli tahun " + this.tahunKeluar +
" berwarna " + this.warna);
System.out.println( "yang memiliki kecepatan maksimal
" + this.kecepatan + " km/jam");
System.out.println("dengan maksimum tangki sebesar " +
this.kapasitasTangki + " liter");
System.out.println("daya angkut barangnya sebesar " +
this.dayaAngkutBarang + " kg dan daya angkut manusia
maksimum " + this.dayaAnkutManusia + " kg");
System.out.println("sehingga total daya angkut
kendaraan keseluruhan " + this.totalDayaAngkut + "
kg");
}
}
127
@Override
void displaySpesifikasi() {
this.totalDayaAngkut = this.dayaAngkutBarang +
this.dayaAnkutManusia;
System.out.println("\n============================PERA
HU LAYAR============================");
System.out.println("\nPerahu layar ini bermerk " +
this.nama + ", saya beli tahun " + this.tahunKeluar +
" berwarna " + this.warna);
System.out.println( "yang memiliki kecepatan maksimal
" + this.kecepatan + " km/jam");
System.out.println("dengan maksimum tangki sebesar " +
this.kapasitasTangki + " liter");
System.out.println("daya angkut barangnya sebesar " +
this.dayaAngkutBarang + " kg dan daya angkut manusia
maksimum " + this.dayaAnkutManusia + " kg");
System.out.println("sehingga total daya angkut
kendaraan keseluruhan " + this.totalDayaAngkut + "
kg");
}
}
128
//class caller
package com.prakpbo;
sepedaMotor.displaySpesifikasi();
perahuLayar.displaySpesifikasi();
}
}
b. Output program
c. Penjelasan
Program di atas adalah program yang menerapkan konsep
inheritance. Dimana saya membuat abstract class “Kendaraan”
sebagai parent class yang memiliki member property, constructor,
dan abstract method, kemudian saya turunkan ke abstract class
“KendaraanDarat” dan “KendaraanLaut” sebagai sub class.
Kemudian saya turunkan lagi abstract class “KendaraanDarat” dan
“KendaraanLaut” ke class “SepedaMotor” dan “PerahuLayar”.
Kemudian saya override method yang ada pada parent classnya di
sub class “SepedaMotor” dan “PerahuLayar”. Kemudian saya
instasiasi dan panggilnya fungsi pada class “Caller”. Sehingga akan
menghasilkan output seperti gambar di atas.
5.5 Kesimpulan
Pada BAB V ini kita telah mempelajari tentang apa itu inheritance.
Yaitu kemampuan superclass mewarisi atribut, method, dan constructornya
kepada subclass. Artinya, class anak (subclass) dapat memiliki kemampuan
yang dimiliki class induknya (superclass). Subclass pun dapat melakukan
tambahan member, seperti atribut dan methodnya sendiri. Kita juga telah
belajar tentang apa itu overriding dan overloading. Overriding yaitu
membuat kembali method yang ada di superclass ke dalam subclass.
Sedangkan overloading yaitu kemampuan memiliki dua atau lebih
constructor atau method dengan nama yang sama dalam satu class, namun
harus memiliki jumlah atau tipe data parameter yang berbeda.
BAB VI
POLIMORFISME
6.1 Tujuan
1. Praktikan mampu menerapkan konsep polimorfisme dalam
pemrograman dengan Java
6.3 Latihan
a. Kode program
// class Kendaraan
package com.prakpbo;
Kendaraan(String model){
130
131
this.model = model;
}
void informasi(){}
// class Pesawat
package com.prakpbo;
Pesawat(String nama){
super("Pesawat");
this.nama = nama;
jenis = "belum teridentifikasi";
}
void informasi(){
System.out.println("Nama pesawat adalah\t: " + this.nama);
System.out.println("Jenis pesawat adalah\t: " +
this.jenis);
System.out.println();
}
}
// class Mobil
package com.prakpbo;
Mobil(String nama){
super("Mobil");
this.nama = nama;
jenis = "belum teridentifikasi";
}
void informasi(){
System.out.println("Nama pesawat adalah\t: " + this.nama);
System.out.println("Jenis pesawat adalah\t: " +
this.jenis);
System.out.println();
}
}
// class Kapal
package com.prakpbo;
Kapal(String nama){
super("Kapal");
this.nama = nama;
jenis = "belum teridentifikasi";
}
void informasi(){
System.out.println("Nama pesawat adalah\t: " + this.nama);
System.out.println("Jenis pesawat adalah\t: " +
this.jenis);
System.out.println();
}
}
Kendaraan P;
Pesawat psw =new Pesawat ("Boeing","Pesawat Komersial");
Mobil mbl1 = new Mobil("Toyota Kijang", "Jeep");
Mobil mbl2 = new Mobil("Suzuki Baleno", "Sedan");
Mobil mbl3 = new Mobil("VW Combi");
Kapal kpl = new Kapal ("Queen Mary 2","Kapal Pesiar");
P = psw;
P.informasi();
P = mbl1;
P.informasi();
P = mbl2;
P.informasi();
P = mbl3;
P.informasi();
P = kpl;
P.informasi();
}
}
134
b. Output program
6.4 Tugas
1. Buatlah semua program yang mengimplemtasikan konsep polimorfisme
dari sebuah class dengan nama class hewan.
Jawab:
a. Kode program
//class Hewan
package com.prakpbo;
// class Karnivora
package com.prakpbo;
Karnivora(String nama){
super(nama, "yang sudah punah");
}
@Override
void info() {
System.out.println("\nHewan ini adalah " + this.nama);
136
//class Herbivora
package com.prakpbo;
Herbivora(String nama){
super(nama, " PESUGIHAN");
}
@Override
void info() {
System.out.println("\nHewan ini adalah " + this.nama);
System.out.println("dia termasuk jenis hewan " +
this.jenis);
}
}
//class Omnivora
package com.prakpbo;
Omnivora(String nama){
super(nama, "MITOS");
}
@Override
void info() {
System.out.println("\nHewan ini adalah " + this.nama);
System.out.println("dia termasuk jenis hewan " +
this.jenis);
}
}
//class Caller
package com.prakpbo;
public class Caller {
public static void main(String[] args) {
System.out.println("Nama\t: Nur Muhammad Syaifuddin");
System.out.println("NIM\t: 32601900026\n");
Hewan hewan;
Karnivora macan = new Karnivora("Macan", "Karnivora");
Karnivora tirex = new Karnivora("Tirex");
Herbivora wedus = new Herbivora("Wedus", "Herbivora");
Herbivora babiNgepet = new Herbivora("Babi Ngepet");
Omnivora monyet = new Omnivora("Monyet", "Omnivora");
Omnivora naga = new Omnivora("Naga");
hewan = macan;
hewan.info();
hewan = tirex;
hewan.info();
hewan = wedus;
hewan.info();
hewan = babiNgepet;
hewan.info();
hewan = monyet;
hewan.info();
hewan = naga;
hewan.info();
}
}
138
b. Output program
6.5 Kesimpulan
Pada BAB VI ini, kita telah belajar tentang Polyforfisme. Polyforfisme
merupakan salah satu konsep penting dalam Object Oriented Programming
(OOP) khususnya di bahasa pemrograman Java setelah abstraction dan
inheritance. Polymorphism berarti banyak bentuk. Ada beberapa definisi
berbeda tentang polymorphism yang berkaitan dengan pemrograman
berorientasi objek. Sedangkan apa yang dimaksud dengan polymorphism
sendiri, sebenarnya sulit untuk didefinisikan. Sejalan dengan contoh yang
diberikan, Anda diharapkan dapat mengerti dan memahami konsep
polymorphism itu sendiri. Polyforfisme sering dikaitkan dengan penggunaan
lebih dari satu metoda dengan nama sama. Penggunaan metoda dengan
nama sama dapat diterapkan dengan method overloading dan method
overriding. Peran polymorphism sebenarnya tidak terbatas hanya pada hal
tersebut. Ada keterkaitan antara polymorphism dan inheritance (turunan).
BAB VII
PENANGANAN EKSEPSI
7.1 Tujuan
1. Praktikan mampu menangani berbagai kesalahan dengan penanganan
eksepsi dalam pemrograman dengan Java
140
141
7.3 Latihan
1. Contoh program yang menimbulkan eksepsi
a. Kode pogram
package com.prakpbo;
b. Output program
int pembilang = 7;
int penyebut = 0;
try{
int hasil = pembilang / penyebut;
System.out.println("Hasil = " + hasil);
}catch(Exception e){
System.out.println("Kesalahan terdapat pembagian
dengan nol");
}
System.out.println("Statement setelah blok try catch");
}
}
145
b. Output program
cobaEksepsi(4, 0);
cobaEksepsi(12, 4);
}
}
b. Output program
4. Throw
a. Kode program
// class Mahasiswa
package com.prakpbo;
}
}
b. Output program
5. Throws
a. Kode program
package com.prakpbo;
try {
cobaEksepsi();
} catch (Exception e) {
System.out.println("Eksepsi ditangkap disini...");
System.out.println(e.getMessage());
}
System.out.println("Statemen setelah blok try catch");
}
}
150
b. Output program
7.4 Tugas
1. Buatlah program penyusupan array dan gunakan blok try-catch untuk
menangani kesalahannya.
Jawab:
a. Kode program
package com.prakpbo;
import java.util.Arrays;
import java.util.Scanner;
printArray(array);
try{
if (indeksSisipan == 0){
arraySisipan[0] = sisipan;
arraySisipan[1] = array[0];
arraySisipan[2] = array[1];
}else if (indeksSisipan == 1){
arraySisipan[0] = array[0];
arraySisipan[1] = sisipan;
arraySisipan[2] = array[1];
}else{
arraySisipan[0] = array[0];
arraySisipan[1] = array[1];
arraySisipan[2] = sisipan;
}
}catch (Exception e){
System.err.println("Melampaui RENTANG");
}
printArray(arraySisipan);
}
}
b. Output program
c. Penjelasan
Progam di atas adalah program untuk menangani eksepsi dalam
penyisipin array. Saya membuat array satu dimensi yaitu [1, 2].
Kemudian saya coba sisipkan nilai 3 di indeks ke – 1, sehingga
hasilnya adalah [1, 3]. Hasilnya demikian karena panjang arraynya
hanya 2, sehingga nilai 2 yang seharusnya berada di indeks ke – 2,
tidak dimasukan. Seandainya saya tidak melakukan penanganan
eksepsi, maka program di atas akan membangkitkan
ArrayIndexOutOfBoundsException.
7.5 Kesimpulan
Pada BAB VII ini kita telah belajar tentang eksepsi, yaitu error yang
terjadi saat runtime. Untuk mengatasi error tersebut kita bisa
menggunakan kata kunci throw, throws, try, catch, dan finally. Kata kunci
try digunakan untuk membuat blok yang berisi statement - statement yang
mungkin menimbulkan eksepsi. Jika dalam proses eksekusi runtunan
statement tersebut terjadi sebuah eksepsi, maka eksepsi akan dilempar ke
bagian blok penangkap yang dibuat dengan kata kunci catch. Pada kasus -
kasus tertentu, terkadang kita juga ingin melempar eksepsi secara manual.
Untuk itu, kita harus menggunakan kata kunci throw. Jika kita ingin
membangkitkan sebuah eksepsi tanpa menuliskan blok try, maka kita perlu
menambahkan kata kunci throws pada saat pendeklarasian method. Dalam
mendefinisikan blok try, kita dapat menuliskan statement tambahan, yaitu
menggunakan kata kunci finally. Statement tambahan ini pasti akan
dieksekusi baik terjadi eksepsi maupun tidak.
BAB VIII
INPUT DAN OUTPUT
8.1 Tujuan
1. Praktikan mampu mengenali dan memahami input dan output (I/O)
dalam pemrograman Java
155
156
sebagai kelas induk atau superclass untuk kelas - kelas yang termasuk ke
dalam kategori stream byte. Adapun kelas Reader dan Writer merupakan
kelas abstrak yang akan diturunkan menjadi kelas - kelas baru yang
termasuk ke dalam kategori stream karakter.
Melalui proses pewarisan (inheritance), semua kelas yang diturunkan
dari InputStream maupun Reader akan memiliki method read(), yang akan
digunakan untuk proses pembacaan data. Adapun semua kelas yang
diturunkan dari OutputStream maupun Writer akan memiliki method
write(), yang akan digunakan untuk proses penulisan data. Kedua method
tersebut dideklarasikan sebagai method abstrak sehingga harus
diimplementasi oleh setiap kelas turunannya.
8.2.3 Melakukan Input
Dalam Java, input console dilakukan melalui pembacaan terhadap
stream System.in. Untuk mendapatkan karakter - karakter yang
dimasukkan melalui keyboard ke dalam layar console, kita perlu
membungkus System.in di dalam objek BufferedReader. Hal ini,
dilakukan untuk membentuk stream karakter, karena System.in
sebenarnya merupaka stream byte. Adapun bentuk constructor dari
BufferedReader sebagai berikut :
BufferedReader(Reader inputReader);
InputReader adalah stream yang akan dihubungkan dengan instance
atau objek dari kelas BufferedReader yang dibuat. Karena Reader berupa
kelas abstrak, maka kita perlu mencari kelas turunannya yang berupa kelas
konkrit. Salah satunya adalah kelas InputStreamReader, yang dapat
mengkonversi byte ke karakter. Sekarang, agar objek dari
InputStreamReader dapat dihubungkan dengan System.in, kita perlu
menggunakan bentuk constructor sebagai berikut :
InputStreamReader(InputStream inputStream);
157
Di sini, fileName menunjukkan nama file yang akan dibuka. Pada saat
menggunakan stream input, jika file tidak ditemukan maka kedua
constructor akan membangkitkan eksepsi FileNotFoundException,
sedangkan pada saat menggunakan stream output, eksepsi tersebut akan
muncul jika file output tidak dapat terbentuk.
Selanjutnya akan dibahas tentang proses penulisan data ke dalam file.
Untuk melakukan hal ini, kita perlu menggunakan method write(). Bentuk
umum dari method write() sebagai berikut :
void write(int nilaiByte)
8.3 Latihan
1. Membaca input data karakter
a. Kode program
package com.prakpbo;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
b. Output program
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
temp = br.readLine();
try{
bilanganInput = Integer.parseInt(temp);
}catch (NumberFormatException nfe) {
System.out.println("Nilai yang dimasukkan" + "bukan
bilangan bulat");
System.exit(1);
}
System.out.println("Bilangan yang anda masukkan adalah
" + bilanganInput);
}
}
162
b. Output program
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
FileInputStream finput=null;
int data;
try{
finput = new
FileInputStream("G:\\Project\\PRAKTIKUM\\OOP\\BAB
8\\Latihan 1\\src\\com\\prakpbo\\input.txt");
}catch(IOException e){}
try{
while((data = finput.read())!=-1){
System.out.print((char) data);
}
}catch(IOException e){}
try{
finput.close();
}catch(IOException e){}
}
}
b. Output program
c. Penjelasan
Program di atas merupakan contoh program dasar - dasar baca
tulis file pada program java. Pada program tersebut pertama akan
mengimport package agar program dapat dijalankan dan tidak
terjadi error. Pada program tersebut terdapat statemen try dan
catch. Mula - mula program akan membaca dan membuka file
input.txt. Apabila file yang ada di dalam direktori tersebut ada, maka
program akan menjalankan statement try dan jika tidak ada maka
program akan menjalankan statement catch. Kemudian program
akan membuka dan membaca file tersebut dan menampilkanya ke
dalam layar console.
5. Menulis data ke dalam file
a. Kode program
package com.prakpbo;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
try {
foutput = new
165
FileOutputStream("G:\\Project\\PRAKTIKUM\\OOP\\BAB
8\\Latihan 1\\src\\com\\prakpbo\\output.txt");
} catch (FileNotFoundException fnfe) {
System.out.println("File tidak dapat terbentuk.");
return;
}
try {
for (int i = 0; i < data.length(); i++) {
foutput.write((int) data.charAt(i));
}
} catch (IOException ioe) {
System.out.println(ioe.getMessage());
return;
}
try {
foutput.close();
} catch (IOException ioe) {
}
}
}
b. Output program
c. Penjelasan
Program di atas merupakan contoh program untuk membuat file.
Pada program tersebut pertama akan mengimport package agar
program dapat dijalankan dan tidak terjadi error. pada program
tersebut terdapat statement try dan catch. Pada program tersebut
mula - mula program akan menginisialisasi String data =
8.4 Tugas
1. Buatlah program aplikasi file yang bisa melakukan beberapa operasi
berikut :
- Buat file dengan dua extensi .txt dan .dat
- Mengecek file dalam direktori tertentu
- Mengisi file
- Menampilkan isi file
- Merename nama file
- Menghapus file
Jawab:
a. Kode program
// class Main
package com.prakpbo;
import java.io.*;
import java.util.Scanner;
if (cek.equals("ya")){
File fileInput = new File(file + ".txt");
File fileInputUser = new File(file + ".dat");
if (fileInput.exists() || fileInputUser.exists()){
System.out.println("File ditemukan");
}else{
System.out.println("File tidak ditemukan");
}
}
}
if (isi.equals("ya")) {
System.out.print("Masukan isi file = ");
String name = br.readLine();
bufferedCharOutput.write(name);
bufferedCharOutput.flush();
}
}catch (Exception e){
System.out.println("File gagal diisi");
}
168
}
static void tampilkanFileTxt(String namaFile){
try {
System.out.print("\nTampilkan isi file? (ya/tidak) =
");
String isi = input.next();
if (isi.equals("ya")) {
try {
System.out.print("\nTampilkan isi file? (ya/tidak) =
");
String isi = input.next();
if (isi.equals("ya")) {
}
169
String nameFile;
try {
System.out.println("Buat file ");
System.out.println("1. .txt ");
System.out.println("2. .dat");
System.out.print("Pilih opsi = ");
int pilih = input.nextInt();
if (pilih == 1){
System.out.print("Masukan nama file = ");
nameFile = input.next();
cekFile(nameFile);
isiFile(bufferedCharOutput);
tampilkanFileTxt(nameFile);
cekFile(nameFile);
isiFile(bufferedCharOutput);
tampilkanFileDat(nameFile);
}
// class RenameFile
package com.prakpbo;
import java.io.File;
import java.util.Scanner;
if (isi.equals("ya")) {
File file = new File(namaFile + ".txt");
System.out.print("Nama Baru file : ");
String name = input.next();
File fileNew = new File(name + ".txt");
if(file.renameTo(fileNew)){
System.out.println("Nama file berhasil diubah");
171
}else{
System.out.println("Nama file gagal diubah");
}
}
}catch (Exception e){
System.out.println("nama file gagal diubah");
}
}
if (isi.equals("ya")) {
File file = new File(namaFile + ".dat");
System.out.print("Nama Baru file : ");
String name = input.next();
File fileNew = new File(name + ".dat");
if(file.renameTo(fileNew)){
System.out.println("Nama file berhasil diubah");
}else{
System.out.println("Nama file gagal diubah");
}
}
}catch (Exception e){
System.out.println("nama file gagal diubah");
}
}
if (opsi == 1){
renameFileTxt(nameFile);
}else if (opsi == 2){
renameFileDat(nameFile);
}
}
}
// class DeleteFile
package com.prakpbo;
import java.io.File;
import java.util.Scanner;
if (file.delete()){
System.out.println("File berhasil dihapus");
}else {
System.out.println("File gagal dihapus");
}
}
if (opsi == 1){
deleteTxt(nameFile);
}
174
b. Output program
c. Penjelasan
Program di atas adalah program untuk membuat file, mngecek,
mengisi, menampilkan, merename, dan menghapus file. Yaitu file
yang bisa dibuat adalah extensi .txt dan .dat. Sehingga, saat
dijalankan akan menghasilkan output seperti pada gambar di atas.
8.5 Kesimpulan
Pada BAB VIII kita telah mempelajari proses input dan Output. Program
Java melakukan proses I/O melalui stream. Stream adalah sebuah abstraksi
yang dapat memberikan atau mendapatkan informasi. Stream dapat
dihubungkan dengan peralatan fisik yang terdapat dalam system I/O Java,
seperti: keyboard, file, layar console, dan yang lainnya. Sesuai dengan
namanya, stream byte digunakan untuk memberikan atau menyimpan
informasi data dalam bentuk byte, misalnya untuk menulis dan membaca
file biner. Sedangkan stream karakter digunakan untuk melakukan proses
I/O yang melibatkan data - data dalam bentuk karakter, misalnya pada saat
kita melakukan proses baca/ tulis ke file teks. Cara kerja stream selalu sama,
meskipun jenis peralatan yang terhubung dengan stream tersebut berbeda.
Ini artinya, sebuah stream input dapat mengabstraksikan beberapa tipe
peralatan fisik, seperti: keyboard, file, atau socket jaringan. Begitu pula
dengan stream Output, yang dapat dihubungkan dengan layar console, file,
maupun koneksi jaringan. Terdapat dua buah tipe stream yang dapat
digunakan, yaitu: stream byte dan stream karakter.
DAFTAR PUSTAKA
NIM : 32601900026
KELOMPOK : -
1 ……………..
2 ……………..
PRETEST
1 ……………..
2 ……………..
ASISTENSI LAPORAN
7 ……………..
8 ……………..
9 ……………..
10 ……………..
11 ……………..
12 ……………..
13 ……………..
14 ……………..
15 ……………..
16 ……………..
17 ……………..
18 ……………..
19 ……………..
20 ……………..
LAMPIRAN