Professional Documents
Culture Documents
Oleh:
Ali Ridho Barakbah S.Kom., Ph.D.
Rizky Yuniar Hakkun S.Kom., M.T.
Tita Karlita, S.Kom., M.Kom.
Yuliana Setiowati, S.Kom., M.Kom.
Kata Pengantar
Puji syukur kami panjatkan kehadirat Tuhan Yang Maha Esa atas segala rahmat dan
karunia-Nya sehingga Buku Praktikum Pemrograman Berbasis Obyek dapat diwujudkan.
Buku Praktikum Pemrograman Berbasis Obyek ini dirasa sangat diperlukan untuk
diterbitkan sebagai pedomam bagi mahasiswa dan dosen yang berkaitan dengan kegiatan
belajar dan mengajar di Jurusan Teknik Informasi Politeknik Elektronika Negeri
Surabaya.
Buku Praktikum Pemrograman Berbasis Obyek ini berisi penjelasan konsep
pemrograman berbasis obyek disertai contoh penerapannya dengan menggunakan bahasa
Java. Materi yang diajarkan meliputi prinsip-prinsip pemrograman berorientasi obyek
seperti kelas, obyek, method, enkapsulasi, pewarisan, polimorfisme, serta topik tentang
penanganan kesalahan, tipe data koleksi, dan membuat antar muka grafis menggunakan
Java. Dengan modul-modul praktikum yang ada di buku ini diharapkan mahasiswa
mampu merancang dan mengimplementasikan permasalahan ke dalam konsep
pemrograman berbasis obyek dengan diberikan latihan-latihan dan tugas-tugas
pemrograman. Diakhir kuliah mahasiswa membuat tugas proyek akhir yang
dipresentasikan di kelas.
Akhirnya dengan ini kami mengharapkan Buku Praktikum ini dapat dijadikan
petunjuk dan dipergunakan dengan sebaik-baiknya. Dan tentu tidak lupa kami harapkan
kritik dan saran demi makin sempurnanya buku ini.
Daftar Isi
Kata Pengantar
Daftar Isi
Praktikum 1
Praktikum 2
Praktikum 3
Praktikum 4
Praktikum 5
Praktikum 6
Praktikum 7
Praktikum 8
Praktikum 9
Praktikum 10
Praktikum 11
Praktikum 12
Praktikum 13
Praktikum 14
Praktikum 15
Praktikum 16
Praktikum 17
Praktikum 18
Praktikum 19
Praktikum 20
Praktikum 21
Praktikum 22
Praktikum 23
Praktikum 24
Praktikum 25
Praktikum 26
Praktikum 27
Praktikum 28
Praktikum 29
Praktikum 30
Praktikum 31
Praktikum 32
i
ii
1
7
15
25
35
44
53
63
71
81
89
96
105
113
122
134
145
153
164
177
185
197
211
222
237
246
257
267
279
291
292
293
ii
PRAKTIKUM 1
PENGENALAN LINGKUNGAN KERJA
JAVA
A. TUJUAN PEMBELAJARAN
1. Mengenal dan mempersiapkan lingkungan kerja Java
2. Mampu menerapkan langkah-langkah dalam menginstall Java Development Kit
3. Membuat program sederhana dengan Java
4. Mengkompilasi dan menjalankan program Java
5. Menganalisa beberapa problem yang terjadi saat pemrograman dan memberikan
solusi
B. DASAR TEORI
Untuk bisa bekerja dengan Java, maka kita perlu melakukan instalasi Java
Development Kit (JDK) atau Java 2 Software Development Kit (J2SDK). Setelah proses
instalasi selesai, selanjutnya adalah melakukan penyetingan PATH dan CLASSPATH di
dalam sistem. Penyetingan PATH sangat berguna untuk memberitahu sistem dimana
kita meletakkan file-file utama Java (diantaranya java, javac, jdb, dan lain-lain).
Sedangkan penyetingan CLASSPATH sangat berguna untuk memberitahu sistem
dimana kita meletakkan file-file class yang akan kita libatkan dalam program kita.
Penyetingan CLASSPATH ini biasa melibatkan dua item, yaitu tanda . (titik) yang
menandakan direktori kerja dan tools.jar yang berisikan kumpulan file-file library
standar yang disediakan oleh Java.
C. TUGAS PENDAHULUAN
Buatlah makalah yang berisi tentang perkembangan teknologi Java dan uraikan
berbagai macam teknologi Java serta aplikasinya saat ini.
D. PERCOBAAN
Percobaan 1 : Instalasi JDK
Pilih dan tentukan file instalasi JDK sesuai dengan operating system yang dipakai oleh
komputer anda. Jalankan file instalasi JDK dan ikuti proses instalasi tahap demi tahap.
Pilihlah direktori penginstallan secara default (biasanya ini akan membuat direktori baru
atau c:\jdkxxx atau c:\j2sdkxxx dimana xxx adalah versi JDK yang di-install.
TestGreeting.java
public class TestGreeting {
public static void main (String[] args) {
Greeting hello = new Greeting();
hello.greet();
}
}
Greeting.java
public class Greeting {
public void greet() {
System.out.println("hi");
}
}
E. LATIHAN
Latihan 1 : Menganalisa dan membenahi kesalahan pada program
Tulislah program berikut ini dan simpanlah dengan nama Test.java
Test.java
public class Testing {
public static void main(String[] args) {
System.out.println("What's wrong with this program?");
}
}
Lakukan kompilasi pada file tersebut dan amati hasilnya. Kenapa terjadi kegagalan pada
saat kompilasi?. Benahilah kesalahan diatas sehingga program tersebut dapat berjalan
dengan baik.
Lakukan kompilasi pada file tersebut dan amati hasilnya. Kenapa terjadi kegagalan pada
saat kompilasi? Benahilah kesalahan diatas sehingga program tersebut dapat berjalan
dengan baik.
Lakukan kompilasi pada program tersebut dan jalankan. Kenapa terjadi kesalahan pada
saat menjalankan program tersebut. Benahilah kesalahan diatas sehingga program
tersebut dapat berjalan dengan baik.
Lakukan kompilasi pada program tersebut dan jalankan. Kenapa terjadi kesalahan pada
saat menjalankan program tersebut. Benahilah kesalahan diatas sehingga program
tersebut dapat berjalan dengan baik.
F. TUGAS
Tugas 1 : Menghitung luas dan keliling lingkaran
Buatlah program untuk menghitung luas dan keliling lingkaran. Untuk nilai PI gunakan
konstanta PI yang ada di java.lang.Math.PI
Rumus :
Rumus :
Lampiran
Cara memasukkan input melalui JOptionPane.
import javax.swing.JOptionPane;
public class InputPane {
public static void main(String args[]) {
int nilai;
String str = JOptionPane.showInputDialog("Masukkan nilai :");
nila i= Integer.parseInt(str);
System.out.println(nilai);
System.exit(0);
}
}
LAPORAN RESMI
Kumpulkan hasil percobaan di atas, tambahkan dalam laporan resmi flow chart untuk
menghitung nilai rata-rata dari n bilangan yang diinputkan, hitung jumlah totalnya,
hitung maksimal dan minimal bilangan.
PRAKTIKUM 2
DASAR PEMROGRAMAN JAVA
A. TUJUAN PEMBELAJARAN
1. Mengetahui aturan penamaan identifier
2. Mengenal kata-kata kunci yang ada di Java
3. Mengetahui tipe-tipe dasar yang ada di Java
4. Mengetahui pemberian nilai default untuk masing-masing tipe dasar
5. Memahami bagaimana melakukan casting dan promotion
B. DASAR TEORI
Identifier adalah nama yang diberikan untuk variabel, class atau method.
Penamaan identifier tidak boleh mengandung spasi dan harus diawali dengan karakter
unicode, tanda $ (dollar) atau tanda _ (underscore). Penamaan identifier ini bersifat
case-sensitive dan tidak dibatasi panjang maksimum.
Java mempunyai 48 kata kunci, seperti if, int, void, dan lain-lain. Kata-kata
kunci tersebut tidak bisa dipakai sebagai identifier. Selain kata kunci, Java juga
mempunyai 3 kata literal, yaitu true, false dan null, yang juga tidak bisa dipakai untuk
penamaan identifier juga terdapat 2 reserved words yang tidak bisa digunakan sebagai
nama identifier yaitu const dan goto.
Java mempunyai 8 tipe dasar, yaitu boolean, char, byte, short, int, long, float,
dan double. Dari 8 tipe data dasar tersebut bisa dikelompokkan menjadi 4 kelompok
data yaitu, integral, floating point, character, dan logical. Yang termasuk dalam
kelompok data integral atau bilangan bulat adalah byte, short, int dan long. Nilai default
untuk kelompok data integral adalah int. Yang termasuk dalam kelompok data floating
point adalah float dan double dengan nilai default double. Sedang yang termasuk dalam
7
tipe data character adalah char yang direpresentasikan dengan Unicode leter. Dan
kelompok data yang terakhir adalah logical yaitu boolean dengan hanya dua buah nilai
saja yang diijinkan yaitu true dan false. Spesifikasi panjang bit dan range serta nilai
default untuk masing-masing tipe data bisa dilihat pada Tabel 2.1.
Casting diperlukan untuk mengkonversi dari suatu tipe ke tipe data yang lebih
kecil panjang bitnya. Sedangkan promotion terjadi pada saat mengkonversi dari suatu
tipe data ke tipe data yang lebih panjang bitnya.
Contoh :
Tabel 2.1 Spesifikasi panjang bit dan nilai default tipe data dasar
Tipe
Panjang bit
Range
Nilai Default
boolean
16
false
char
16
0 216-1
\u0000
byte
-27 27-1
short
16
-215 215-1
int
32
-231 231-1
long
64
-263 263-1
0L
float
32
0.0F
double
64
0.0
C. TUGAS PENDAHULUAN
1. Buatlah uraian yang berisi tentang spesifikasi 8 tipe data dasar !
2. Apakah yang dimaksud dengan casting (narrowing conversion) ?
3. Apakah yang dimaksud dengan konversi (widening conversion) ?
D. PERCOBAAN
Percobaan 1 : Memberikan nilai ke suatu tipe data
public class Assign {
public static void main(String args[]) {
boolean b = true;
char c = 'C';
System.out.println("Value c = " + c);
byte bt = 10;
System.out.println("Value bt = " + bt);
short s = 20;
System.out.println("Value s = " + s);
int i = 30;
System.out.println("Value i = " + i);
long l = 40L;
System.out.println("Value l = " + l);
float f = 3.14F;
System.out.println("Value f = " + f);
double d = 3.14;
System.out.println("Value d = " + d);
}
}
10
11
}
}
x=2147483647;
//(2^31)-1
y=x+1;
System.out.println("y = " + y);
}
}
12
E. LATIHAN
Latihan 1 : Membuat formulasi proses casting dari tipe-tipe primitif
Lakukan percobaan casting antar tipe-tipe primitif. Lalu amati dan catatlah konversi dari
suatu tipe ke tipe lainnya yang memerlukan suatu casting. Dari hasil analisa anda,
buatlah suatu skema casting diantara tipe-tipe primitif.
F. TUGAS
Tugas 1 : Menganalisa batasan maksimum dari suatu tipe
Amatilah dan tulislah program berikut ini:
public class BigInteger {
public static void main(String args[]) {
long p=2147483648;
}
}
Lakukan kompilasi pada file tersebut dan amati pesan kesalahannya. Lakukan analisa
mengapa bisa terjadi kesalahan padahal batasan nilai maksimum dari suatu bilangan
bertipe long adalah 263-1 (9223372036854775807)?. Kemudian berikanlah solusi yang
tepat untuk mengatasi persoalan diatas.
13
LAPORAN RESMI
Kumpulkan hasil percobaan di atas dan tambahkan analisa untuk tiap percobaan,
latihan, dan tugas yang telah dibuat.
14
PRAKTIKUM 3
OPERATOR
A. TUJUAN PEMBELAJARAN
1.
2.
B. DASAR TEORI
Operator dapat diklasifikasikan menjadi 2 bentuk, yaitu unary operator dan
binary operator. Unary operator adalah operator yang hanya melibatkan 1 operan.
Sedangkan binary operator adalah operator yang melibatkan 2 operan. Java mempunyai
berbagai macam jenis operator yang dapat digolongkan menjadi operator aritmatika,
increment-decrement, bitwise, boolean, logik, shift (geser), penugasan, kombinasi dan
kondisi.
Arithmatic operator (operator aritmatika) adalah operator yang berfungsi untuk
operasi aritmatika. Yang termasuk dalam arithmatic operator bisa dilihat pada Tabel 3.1.
Keterangan
Operasi penambahan
Operasi pengurangan
Operasi perkalian
Operasi pembagian
Operasi modulus
decrement operator bisa dilihat pada Tabel 3.2. Berdasarkan urutan eksekusi penaikkan
dan penurunan nilainya, increment-decrement operator ini dapat diklasifikasikan
menjadi 2 macam, yaitu pre-increment/decrement dan post-increment/decrement.
Keterangan
++
increment
--
decrement
Bitwise operator adalah operator yang dipakai untuk operasi bit pada nilai
operan. Yang termasuk bitwise operator bisa dilihat pada Tabel 3.3.
Keterangan
Operasi complement
&
Operasi AND
Operasi OR
Operasi XOR
Keterangan
&
Operasi AND
Operasi OR
Operasi XOR
&&
17
||
Keterangan
==
!=
>
>=
<
<=
Shift operator (operator geser) adalah operator yang berfungsi untuk menggeser
susunan bit pada suatu nilai. Yang termasuk dalam shift operator dapat dilihat pada
Tabel 3.6.
Keterangan
>>
right shift
>>>
<<
left shift
3.7.
Keterangan
+=
-=
*=
/=
%=
>>=
>>>=
<<=
&=
|=
^=
C. TUGAS PENDAHULUAN
Buatlah makalah yang berisi tentang berbagai macam operator dengan disertai contoh
penggunaan dan outputnya.
19
D. PERCOBAAN
Percobaan 1 : Melakukan increment dan decrement nilai
class IncDec {
public static void main (String args[]) {
int x = 8, y = 13;
System.out.println("x = " + x);
System.out.println("y = " + y);
System.out.println("x = " + ++x);
System.out.println("y = " + y++);
System.out.println("x = " + x--);
System.out.println("y = " + --y);
}
}
20
21
22
E. LATIHAN
Latihan 1 : Menampilkan representasi biner dari bilangan desimal bertipe int
Buatlah suatu program untuk menampilkan susunan bit dari suatu bilangan desimal.
Nilai bilangan input yang dimasukkan adalah bertipe int.
Contoh tampilan:
Masukkan nilai desimal: 13
Susunan bit dari 13 adalah 00000000000000000000000000001101
Buatlah suatu program seperti diatas untuk menampilkan susunan bit dari suatu
bilangan desimal, akan tetapi nilai bilangan input yang dimasukkan adalah bertipe byte.
F. TUGAS
Tugas 1 : Mencari representasi biner dari suatu bilangan
23
byte a=-1;
a=(byte) (a >>> 2);
LAPORAN RESMI
Kumpulkan hasil percobaan di atas dan tambahkan analisa untuk tiap percobaan,
latihan, dan tugas yang telah dibuat.
24
PRAKTIKUM 4
PERCABANGAN DAN PERULANGAN
A. TUJUAN PEMBELAJARAN
1. Memahami logika percabangan
2. Memahami logika perulangan
3. Memakai percabangan dan perulangan yang tepat
4. Memahami pemberian kondisi untuk perulangan
B. DASAR TEORI
Percabangan di dalam Java terdapat 2 macam, yaitu dengan memakai if dan
switch. Percabangan if dipakai jika kita menginginkan suatu pernyataan itu dilakukan
dengan syarat tertentu yang bernilai benar. Sintaks dari if adalah sebagai berikut:
if (ekspresi_boolean) {
Pernyataan1;
}
if (ekspresi_boolean) {
Pernyataan1;
} else {
Pernyataan2;
}
25
Pernyataan1
akan
dikerjakan
kalau
ekspresi_boolean
bernilai
true.
Kalau
if (ekspresi_boolean1) {
Pernyataan1;
} else if (ekspresi_boolean2) {
Pernyataan2;
}
Ketika ekspresi_boolean bernilai false, maka alur program akan menuju ke bagian else.
Selanjutnya Pernyataan2 diatas akan dikerjakan kalau ekspresi_boolean2 bernilai true.
Percabangan switch dipakai pada saat kita ingin memberikan kondisi denga
beberapa syarat yang identik yang masing-masing mempunyai pernyataan yang
berbeda-beda. Pada Java, nilai yang dilewatkan pada switch harus bertipe int, short,
byte atau char. Sintaks dari switch adalah sebagai berikut:
switch (ekspresi) {
case nilai1: Pernyataan1;
break;
case nilai2: Pernyataan2;
break;
default: Pernyataan3;
}
Ketika ekspresi bernilai nilai1, maka alur program akan mengeksekusi Pernyataan1.
Selanjutnya break menyebabkan alur program keluar dari daerah switch. Kalau ekspresi
bernilai nilai2, maka alur program akan mengeksekusi Pernyataan2. Apabila ekspresi
mempunyai nilai yang tidak sama dengan nilai1 dan nilai2, maka alur program akan
menuju ke bagian default dan kemudian mengeksekusi Pernyataan3. Tipe data yang
26
diperbolehkan untuk ekspresi adalah byte, short, int dan char saja. Tetapi untuk Java
diatas versi 7 ditambahkan tipe data String.
Perulangan di dalam Java terdapat 3 macam, yaitu for, while dan do-while.
Perulangan for dipakai pada saat kita melakukan perulangan dengan jumlah yang sudah
diketahui pasti. Sintaks dari for adalah sebagai berikut:
Perulangan while dipakai pada saat kita melakukan perulangan dengan jumlah
yang belum diketahui pasti. Pernyataan pada while akan dikerjakan setelah pengecekan
kondisi pada while bernilai true. Sintaks dari while adalah sebagai berikut:
while (kondisi) {
Pernyataan;
}
Kita dapat memberikan kondisi tertentu pada saat terjadi perulangan. Kondisi
yang mungkin terjadi pada perulangan terdapat 2 macam, yaitu break dan continue.
Break menyebabkan suatu kondisi untuk keluar dari perulangan. Sedangkan continue
memyebabkan suatu kondisi untuk melanjutkan ke tahapan selanjutnya pada
perulangan.
27
C. TUGAS PENDAHULUAN
1. Sebutkan dan jelaskan berbagai macam sintaks percabangan yang digunakan di Java!
2. Sebutkan dan jelaskan berbagai macam sintaks perulangan yang digunakan di Java!
D. PERCOBAAN
Percobaan 1 : Percabangan menggunakan if, if-else dan else-if
class IfElseName {
public static void main (String args[]) {
char firstInitial = 'a';
System.out.println("Masukkan huruf awal nama anda: ");
try {
firstInitial = (char)System.in.read();
} catch (Exception e) {
System.out.println("Error: " + e.toString());
}
if (firstInitial == 'a')
System.out.println("Nama anda pasti Asep!");
else if (firstInitial == 'b')
System.out.println("Nama anda pasti Brodin!");
else if (firstInitial == 'c')
System.out.println("Nama anda pasti Cecep!");
else
System.out.println("Nama anda tidak terkenal!");
}
}
28
switch (firstInitial) {
case 'a':
System.out.println("Nama anda pasti Asep!");
case 'b':
System.out.println("Nama anda pasti Brodin!");
case 'c':
System.out.println("Nama anda pasti Cecep!");
default:
System.out.println("Nama anda tidak terkenal!");
}
}
}
switch (firstInitial) {
case 'a':
System.out.println("Nama anda pasti Asep!");
break;
case 'b':
System.out.println("Nama anda pasti Brodin!");
break;
case 'c':
System.out.println("Nama anda pasti Cecep!");
break;
29
default:
System.out.println("Nama anda tidak terkenal!");
}
}
}
30
}
}
}
31
Mulai:
for(a=0;a<2;a++)
for(b=0;b<3;b++) {
if (b==1) break Mulai;
System.out.println("a=" + a + " ; b=" + b);
}
}
}
E. LATIHAN
Latihan 1 : Pengecekan kelompok karakter
Buatlah program untuk menentukan kelompok suatu karakter yang dimasukkan melalui
keyboard. Kelompok karakter tersebut adalah huruf kecil, huruf besar, angka, dan
karakter khusus (tanda baca, operator dan sebagainya).
Contoh tampilan :
n!
-----------------------------1
24
120
720
5040
---------------------------
F. TUGAS
Tugas 1 : Menghitung nilai determinan dan mencari akar persamaan kuadrat
Buatlah program untuk menghitung determinan dan mencari akar-akar dari persamaan
kuadrat : ax2 + bx + c = 0 , dengan ketentuan sebagai berikut :
D = b2 - 4ac
Input
: a, b, c (int)
Output : Nilai Determinan serta nilai akar-akar persamaan tsb (x1 dan x2).
LAPORAN RESMI
Kumpulkan hasil percobaan di atas dan tambahkan analisa untuk tiap percobaan,
latihan, dan tugas yang telah dibuat.
34
PRAKTIKUM 5
ARRAY
A. TUJUAN PEMBELAJARAN
1. Membuat dan menggunakan array
2. Berinteraksi dengan array multi dimensi
3. Mengkopi elemen array
4. Memahami konsep referensi array
B. DASAR TEORI
Array adalah suatu kumpulan data pada suatu variabel. Cara mendeklarasikan suatu
array adalah sebagai berikut :
tipe_array nama_array[];
tipe_array[] nama_array;
Contoh : int nilai[];
char[] huruf;
int nilai[];
nilai = new int[5];
Kita juga dapat melakukan deklarasi dan pembuatan array hanya pada satu baris
statement. Adapun format penulisannya adalah sebagai berikut :
tipe_array nama_array[] = new tipe_array[total_elemen_array];
Contoh :
Kita dapat membuat array multi dimensi dengan cara menambahkan tanda []
sebanyak dimensi yang ingin dibuat. Sebagai contoh adalah sebagai berikut:
int x[][] = new int[3][4];
Baris statement diatas berarti kita ingin membuat array berdimensi 2, dengan 3 elemen
di dimensi ke-1 dan 4 elemen di dimensi ke-2. Untuk mengetahui panjang dari suatu
array yang telah kita buat, kita dapat memakai properti length. Adapun format untuk
menggunakan length adalah sebagai berikut:
var_array.length
Isi dari suatu array dapat kita kopi pada array yang lain dengan memanfaatkan
method arraycopy() pada class System. Format penulisannya sebagai berikut :
System.arraycopy(array1, p1, array2, p2, n);
dimana : array1 = array asal/sumber pengkopian
array2 = array tujuan pengkopian
p1 = posisi indeks awal pengkopian pada array asal
p2 = posisi indeks awal pengkopian pada array tujuan
n = banyaknya elemen array yang akan dikopi
36
Suatu array juga dapat me-refer (merujuk) ke array yang lain, dengan kata lain
merujuk pada alamat memori yang sama. Sebagai contoh adalah program berikut ini :
int nilai[] = {10, 20, 30};
int result[];
result = nilai;
Di baris ketiga, kita meng-assign array nilai ke array result. Akibatnya, array
result akan me-refer (merujuk) pada array nilai, sehingga kedua array tersebut merujuk
alamat memori yang sama.
C. TUGAS PENDAHULUAN
1. Apakah yang dimaksud dengan array?
2. Buatlah contoh mendeklarasikan, memberi nilai dan mengakses elemen array!
3. Bagaimana cara mengetahui panjang array?
4. Uraikan pengetahuan anda mengenai array multidimensi!
5. Bagaimana cara mengkopi isi array?
6. Apakah yang dimaksud dengan referensi array. Beri contoh!
D. PERCOBAAN
double ratarata=0.0;
37
38
x[0]=new int[1][][];
x[0][0]=new int[2][];
x[0][0][0]=new int[3];
x[0][0][1]=new int[2];
x[1]=new int[2][][];
x[1][0]=new int[1][];
x[1][0][0]=new int[2];
x[1][1]=new int[2][];
x[1][1][0]=new int[1];
x[1][1][1]=new int[3];
System.out.println(x.length);
System.out.println(x[0].length);
System.out.println(x[0][0].length);
System.out.println(x[0][0][0].length);
System.out.println(x[0][0][1].length);
System.out.println();
System.out.println(x[1].length);
System.out.println(x[1][0].length);
System.out.println(x[1][0][0].length);
System.out.println(x[1][1].length);
39
System.out.println(x[1][1][0].length);
System.out.println(x[1][1][1].length);
}
}
System.out.print("Array1 : ");
for (int i=0; i<array1.length; i++)
System.out.print(array1[i] + "
");
System.out.println();
System.out.print("Array2 : ");
for (int i=0; i<array2.length; i++)
System.out.print(array2[i] + "
");
}
}
40
E. LATIHAN
Latihan 1 : Mencari nilai rata-rata mata kuliah dari daftar nilai siswa
Nama Mhs
RPL
BD
PBO
Ahmad
81
90
62
Adang
50
83
87
Dani
89
55
65
Edi
77
70
92
NRP
Rata-rata
-------------------------1
77.67
73.33
69.67
79.67
---------------------------
Deret fibonanci adalah deret dimana dimulai dengan dua angka, dimana bernilai 0 dan
1, kemudian deret ketiga ditentukan dari penjumlahan kedua angka tersebut, sedangkan
deret keempat ditentukan dari dua angka sebelumnya begitu seterusnya. Sehingga
didapatkan deret fibonanci sebagai berikut: 0 1 1 2 3 5 8 13 21 dan seterusnya. Buatlah
program untuk menampilkan bilangan Fibonacci yang banyaknya sesuai dengan input.
Contoh tampilan:
Masukkan jumlah deretan Fibonacci? 8
0 1 1 2 3 5 8 13
41
Contoh tampilan:
Masukkan bilangan? 8
8 bukan termasuk bilangan prima
Masukkan bilangan? 11
11 adalah bilangan prima
F. TUGAS
Tugas 1: Mencari posisi suatu angka di array
Misal terdapat array dua dimensi sebagai berikut:
int[][] arrayOfInts = { { 32, 87, 3, 589 }, { 12, 1076, 2000, 8 },
{ 622, 127, 77, 955 }};
Tugas : Carilah posisi angka 12 pada array tersebut. Silakan menggunakan looping,
branching, label, break, atau continue bila diperlukan.
Contoh output program: Found 12 at 1, 0
Tugas 2: Hitung jumlah huruf a yang terdapat pada array berikut ini !
char [ ] matKul =
{p,e,m,r,o,g,r,a,m,a,n,b,e,r,b,a,s,i,s,o,b,y,e,k};
42
class ForDemo {
public static void main(String[] args){
int x [] = {1,2,3,4,5,6,7,8,9,10};
for(int i=0; i<10; i++){
System.out.println("Count is: " + x[i]);
}
}
}
Temukan dan sebutkan cara lain dengan menggunakan loop for untuk mengakses dan
menampilkan elemen array!
LAPORAN RESMI
Kumpulkan hasil percobaan di atas, tambahkan analisa untuk tiap latihan dan tugas!
43
PRAKTIKUM 6
STRING
A. TUJUAN PEMBELAJARAN
1. Memahami sifat dan cara menggunakan dan operasi String.
2. Memahami sifat dan cara menggunakan dan operasi StringBuffer
3. Memahami sifat dan cara menggunakan dan operasi StringBuilder
B. DASAR TEORI
Objek dari String sering sekali kita gunakan sehari-hari, bahkan mungkin di
setiap class dari Java kita terdapat rutin yang menangani String. Class String
merepresentasikan suatu teks. Class String berisi string yang tetap (immutable string).
Artinya sekali intance String dibuat maka isinya tidak bisa diubah. Kelas String
memiliki 13 konstruktor yang memungkinkan kita membuat obyek String dan
menginisialisasi nilainya dengan menggunakan berbagai macam sumber data yang
berbeda. Cara membuat obyek string adalah sebagai berikut:
String str = "abc";
Sama dengan
char data[] = {'a', 'b', 'c'};
String str = new String(data);
Class String memiliki method untuk menangani individual karakter dari suatu string,
membandingkan string, mencari string, mendapatkan substring, membuat kopi isi string
44
dan dijadikan lowercase atau uppercase. Java menyediakan operator spesial untuk
menggabungkan dua string yaitu operator plus (+).
Class StringBuffer mirip dengan String tetapi bersifat mutable, atau dapat
diubah atau dimodifikasi dengan menggunakan beberapa method yang dimilikinya.
String buffer aman digunakan oleh beberapa thread. Method-methodnya bersifat
synchronized sehingga beberapa operasi yang terjadi pada suatu obyek string buffer
akan diselesaikan secara serial sesuai urutan pemanggilan.
Operasi utama class StringBuffer adalah method append dan insert. Method
append
Secara umum, jika sb adalah obyek dari StringBuffer, maka sb.append(x) sama
dengan operasi sb.insert(sb.length(),x). StringBuilder adalah string yang
bersifat mutable. Operasi yang dimiliki class StringBuilder mirip dengan class
StringBuffer.
C. TUGAS PENDAHULUAN
1. Apakah perbedaan class String, StringBuffer dan StringBuilder?
2. Apakah yang dimaksud dengan sifat mutable dan immutable? Beri contoh!
3. Jelaskan operasi utama append dan insert yang dimiliki oleh StringBuffer!
D. PERCOBAAN
Percobaan 1. Karakter escape
Di dalam String kita dapat memasukkan sekuen dari karakter escape yang terdiri dari
satu karakter back slash (\) diikuti oleh karakter escape tersebut.
Beberapa escape character yang sering digunakan adalah :
- \n untuk baris baru
45
- \t untuk tab
- \\ untuk karakter back slash (\) itu sendiri
Cobalah kode dibawah ini. Apakah outputnya?
class Str1{
public static void main(String [] args){
String str1 = "PENS";
String str2 = "pens";
System.out.println(str1 + "\n" + str2);
}
}
46
class Str3{
public static void main(String [] args){
String str1 = "Monas";
System.out.println(str1);
str1 +=
str2;
System.out.println(str1);
}
}
47
E. LATIHAN
Latihan 1. Apakah output program dibawah ini?
class Str1{
public static void main(String [] args){
String s=new String("Bicycle");
int iBegin=1;
char iEnd=3;
System.out.println(s.substring(iBegin,iEnd));
}
}
Latihan 2. Apa yang terjadi bila kode berikut ini dikompile dan dijalankan?
Jelaskan!
public class Conv{
public static void main(String argv[]){
Conv c = new Conv();
String s = new String("ello");
c.amethod(s);
}
public void amethod(String s){
char c = 'H';
c += s;
System.out.println(c);
}
}
48
Latihan 3. Apa yang terjadi bila kode berikut ini dikompile dan dijalankan?
Jelaskan!
public class EqTest3{
public static void main(String argv[]){
EqTest e = new EqTest();
}
EqTest(){
String s1 = "Java";
String s2 = "Java";
String s3 = "java";
if(s1 == s2)) {
System.out.println("Equal");
}else{
System.out.println("Not equal");
}
if(s1 == s3)) {
System.out.println("Equal");
}else{
System.out.println("Not equal");
}
}
}
Latihan 4. Apa yang terjadi bila kode berikut ini dikompile dan dijalankan?
Jelaskan!
public class EqTest4{
public static void main(String argv[]){
EqTest e = new EqTest();
}
EqTest(){
String s1 = new String("Java");
String s2 = new String("Java");
String s3 = new String("java");
if(s1 == s2)) {
System.out.println("Equal");
}else{
System.out.println("Not equal");
}
if(s1 == s3)) {
System.out.println("Equal");
}else{
System.out.println("Not equal");
}
}
}
49
Latihan 5. Apa yang terjadi bila kode berikut ini dikompile dan dijalankan?
Jelaskan!
public class EqTest5{
public static void main(String argv[]){
EqTest e = new EqTest();
}
EqTest(){
String s = "Java";
String s2 = "java";
if(s.equalsIgnoreCase(s2)) {
System.out.println("Equal");
}else{
System.out.println("Not equal");
}
}
}
Latihan 6. Apa yang terjadi bila kode berikut ini dikompile dan dijalankan?
Jelaskan!
public class EqTest6{
public static void main(String argv[]){
String str = "Java";
StringBuffer buffer = new StringBuffer(str);
if(str.equals(buffer)){
System.out.println("Both are equal");
}
else{
System.out.println("Both are not equal");
}
}
}
Latihan 7. Apa yang terjadi bila kode berikut ini dikompile dan dijalankan?
Jelaskan!
public class Test {
public static void main(String args[]) {
String str1="abc";
String str2="def";
String str3=str1.concat(str2);
str1.concat(str2);
System.out.println(str1);
}
}
50
F. TUGAS
Tugas 1.
Buatlah sebuah program yang menampikan indek-indek karakter pada suatu kalimat.
Contoh:
Input :
Output:
Kalimat
Karakter
: o
Tugas 2.
Desain dan implementasikan program Java yang mampu melakukan beberapa operasi
terhadap string Selamat Datang di PENS :
a. Konversikan semua karakter menjadi huruf kapital dan tampilkan ke layar
b. Konversikan semua karakter menjadi huruf kapital dan tampilkan ke layar
c. Tampilkan panjang string
d. Tampilkan indek kata PENS
Tugas 3.
Buatlah sebuah program yang mengubah huruf pertama suatu string dengan huruf
terakhir string tersebut dan sebaliknya!
Contoh:
String masukan
: Amanda Ace
String hasil
: Emende Eca
Tugas 4.
Buatlah sebuah program yang menukar family name dari dua buah string.
Contoh:
Input
Output
: Taylor Swift
: Taylor Perry
51
Tugas 5.
Buatlah sebuah program yang mampu mengganti kata tertentu suatu string.
Contoh:
Input
: Database
String pengganti
: Sistem Informasi
H. LAPORAN RESMI
Kumpulkan hasil latihan dan tugas di atas. Tambahkan analisa dalam laporan resmi.
52
PRAKTIKUM 7
PENGENALAN PEMROGRAMAN
BERBASIS OBYEK
A. TUJUAN PEMBELAJARAN
1.
2.
3.
4.
B. DASAR TEORI
Deklarasi class dapat dilakukan dengan sintaks sebagai berikut:
<modifier> class <nama_class> {
[deklarasi_atribut]
[deklarasi_konstruktor]
[deklarasi_metode]
}
Contoh:
public class Siswa {
Contoh:
public class Siswa {
public int nrp;
53
Contoh:
public class Siswa {
public int nrp;
public String nama;
public void info() {
System.out.println(Ini siswa PENS);
}
}
Untuk dapat mengakses anggota-anggota dari suatu obyek, maka harus dibuat
instance dari class tersebut terlebih dahulu. Berikut ini adalah contoh pengaksesan
anggota-anggota dari class Siswa:
public class Siswa {
public static void main(String args[]) {
Siswa it=new Siswa();
it.nrp=5;
it.nama=Andi;
it.info();
}
}
C. TUGAS PENDAHULUAN
1. Apakah yang dimaksud dengan kelas, method, atribut dan obyek?
2. Buatlah contoh suatu kelas dan definisikan atribut dan methodnya!
3. Buatlah kode program soal no. 2 diatas!
54
4. Buatlah kelas yang berisi main method yang membuat obyek dari kelas yang telah
dibuat di soal no. 3. Selanjutnya obyek tersebut mengakses atribut dan methodnya.
D. PERCOBAAN
Percobaan 1 : Mengakses anggota suatu class
Amati program dibawah ini:
public class Siswa {
int nrp;
public void setNrp(int i) {
nrp=i;
}
}
55
public Siswa(int i) {
nrp=i;
}
56
E. LATIHAN
Lakukan kompilasi pada program diatas dan jalankan. Jika tampilan di layar tampak
seperti dibawah ini, maka program anda sudah benar. Jika tidak sama, benahi kembali
program anda dan lakukan hal yang sama seperti diatas.
Saldo awal : 5000
Jumlah uang yang diambil : 2300
Saldo sekarang : 2700
57
Latihan 2 :
class Mahasiswa
Lakukan kompilasi pada program diatas dan jalankan. Jika tampilan di layar tampak
seperti dibawah ini, maka program anda sudah benar. Jika tidak sama, benahi kembali
program anda dan lakukan hal yang sama seperti diatas.
NRP : 12345
Nama : Jono
58
Latihan 3 :
class Truk
Lakukan kompilasi pada program diatas dan jalankan. Jika tampilan di layar tampak
seperti dibawah ini, maka program anda sudah benar. Jika tidak sama, benahi kembali
program anda dan lakukan hal yang sama seperti diatas.
Muatan maksimal : 1000.0
Tambah muatan : 500
Tambah muatan : 350
Tambah muatan : 100
Tambah muatan : 150
Muatan sekarang = 950.0
59
F. TUGAS
Tugas 1 :
class Tabungan
tabungan.simpanUang(3000);
System.out.println("Jumlah uang yang disimpan : 3000");
status = tabungan.ambilUang(6000);
System.out.println("Jumlah uang yang diambil : 6000");
if (status)
System.out.println("Ok");
else
System.out.println("Gagal");
tabungan.simpanUang(3500);
System.out.println("Jumlah uang yang disimpan :3500");
status = tabungan.ambilUang(4000);
System.out.println("Jumlah uang yang diambil : 4000");
60
if (status)
System.out.println("Ok");
else
System.out.println("Gagal");
status = tabungan.ambilUang(1600);
System.out.println("Jumlah uang yang diambil : 1600");
if (status)
System.out.println("Ok");
else
System.out.println("Gagal");
tabungan.simpanUang(2000);
System.out.println("Jumlah uang yang disimpan :2000");
System.out.println("Saldo sekarang = " + tabungan.getSaldo());
}
}
Lakukan kompilasi pada program diatas dan jalankan. Jika tampilan di layar tampak
seperti dibawah ini, maka program anda sudah benar. Jika tidak sama, benahi kembali
program anda dan lakukan hal yang sama seperti diatas.
Saldo awal : 5000
Jumlah uang yang disimpan : 3000
Jumlah uang yang diambil : 6000
ok
ok
gagal
61
dilihat pada Tabel 7.1. Sayangnya karena merupakan pegawai baru maka ia tidak
memahami nama hal yang diidentifikasi (A,B,C, D, dan E).
a. Bantulah pegawai tersebut dalam menentukan nama hal yang diidentifikasi (A,B,C,
D, dan E).
b. Bantulah pengusaha tersebut dalam membuat UML class diagram Mobil.
Tambahkan method infoMobil() yang bertujuan untuk menampilkan semua
karakteristik mobil (A,B,C, D, dan E).
c. Buatlah kelas Mobil.java yang mengimplementasikan desain UML class diagram
anda!
d. Buatlah kelas TesMobil.java yang berisi pembuatan 4 (empat) buah obyek bernama
mobil1, mobil2, mobil3, mobil4. Mengeset karakteristik masing-masing dan
menampilkan info karakteristik mobil.
B
Biru
minibus
2000
mobil1
Toyota
mobil2
Daihatsu Hitam
pick up
1500
mobil3
Suzuki
Silver
suv
1800
mobil4
Honda
Merah
sedan
1300
H. LAPORAN RESMI
Kumpulkan hasil latihan dan tugas di atas. Tambahkan analisa dalam laporan resmi.
62
PRAKTIKUM 8
ENKAPSULASI
A. TUJUAN PEMBELAJARAN
1. Menerapkan konsep enkapsulasi pada class
2. Mendeklarasikan suatu constructor
B. DASAR TEORI
Kita dapat menyembunyikan information dari suatu class sehingga anggotaanggota class tersebut tidak dapat diakses dari luar. Adapun caranya adalah cukup
dengan memberikan akses kontrol private ketika mendeklarasikan suatu atribut atau
method. Contoh:
private int nrp;
Contructor (konstruktor) adalah suatu method yang pertama kali dijalankan pada
63
Suatu class dapat mempunyai lebih dari 1 konstruktor dengan syarat daftar
parameternya tidak boleh ada yang sama. Contoh :
public class Siswa {
private int nrp;
private String nama;
public Siswa(String m) {
nrp=0;
nama=;
}
C. TUGAS PENDAHULUAN
1. Apakah yang dimaksud dengan enkapsulasi?
2. Apakah yang dimaksud dengan constructor?
2. Apakah yang dimaksud dengan overloading constructor?
64
D. PERCOBAAN
Percobaan 1 : Melakukan enkapsulasi pada suatu class
Implementasikan UML class diagram Mahasiswa sebelum dan setelah dilakukan
enkapsulasi!
Jika enkapsulasi dilakukan pada class diagram diatas, maka akan berubah menjadi:
65
public Mahasiswa() {
nrp=0;
nama=;
}
E. LATIHAN
Latihan 1: Mengimplementasikan UML class diagram dalam program untuk class
Kalender
Dari class diagram diatas, desainlah suatu class yang memenuhi konsep enkapsulasi.
Untuk nilai inisialisasi, dipakai 1-1-2000. Pakailah kata kunci this untuk mempersingkat
pengkodean. Tulislah listing program berikut ini sebagai pengetesan.
66
Lakukan kompilasi pada program diatas dan jalankan. Jika tampilan di layar tampak
seperti dibawah ini, maka program anda sudah benar. Jika tidak sama, benahi kembali
program anda.
Waktu awal : 8-1-2000
1 hari setelah waktu awal : 9-1-2000
Waktu berubah : 1-6-2003
1 bulan setelah itu : 1-7-2003
Waktu berubah : 20-10-2004
1 tahun setelah itu : 20-10-2005
67
status = truk.tambahMuatan(300.0);
System.out.println("Tambah muatan : 300");
if (status)
System.out.println("Ok");
68
else
System.out.println("Gagal");
status = truk.tambahMuatan(150.0);
System.out.println("Tambah muatan : 150");
if (status)
System.out.println("Ok");
else
System.out.println("Gagal");
status = truk.tambahMuatan(50.0);
System.out.println("Tambah muatan : 50");
if (status)
System.out.println("Ok");
else
System.out.println("Gagal");
System.out.println("Muatan sekarang = " + truk.getMuatan());
}
}
Lakukan kompilasi pada program diatas dan jalankan. Jika tampilan di layar tampak
seperti dibawah ini, maka program anda sudah benar. Jika tidak sama, benahi kembali
program anda dan lakukan hal yang sama seperti diatas.
Muatan
Tambah
Tambah
Tambah
Tambah
Muatan
maksimal
muatan :
muatan :
muatan :
muatan :
sekarang
: 900.0
500 ok
300 ok
150 gagal
50 ok
= 849.9999999999999
F. TUGAS
Tugas 1. Menerapkan konsep enkapsulasi pada kelas Tabungan yang terdapat di
Tugas 1. Bab 7. Pengenalan Pemrograman Berbasis Obyek.
69
G. LAPORAN RESMI
Kumpulkan hasil latihan dan tugas di atas. Tambahkan analisa dalam laporan resmi.
70
PRAKTIKUM 9
MENGELOLA KELAS
A. TUJUAN PEMBELAJARAN
1. Memahami konsep package dan import
2. Menggunakan kata kunci this
B. DASAR TEORI
Package adalah suatu cara untuk memenej class-class yang kita buat. Package
akan sangat bermanfaat jika class-class yang kita buat sangat banyak sehingga perlu
dikelompokkan berdasarkan kategori tertentu. Contoh:
package it;
package telkom;
Yang perlu kita perhatikan pada saat deklarasikan package, bahwa class tersebut harus
disimpan pada suatu direktori yang sama dengan nama package-nya. Suatu class dapat
meng-import class lainnya sesuai dengan nama package yang dipunyainya. Contoh:
import it.Siswa;
public class IsiData {
Satu hal yang perlu kita ketahui, pada saat kita ingin meng-import suatu class dalam
suatu package, pastikan letak package tersebut satu direktori dengan class yang ingin
meng-import.
Kata kunci this sangat berguna untuk menunjukkan suatu member dalam classnya sendiri. This dapat digunakan baik untuk data member maupun untuk function
71
member, serta dapat juga digunakan untuk konstruktor. Adapun format penulisannya
adalah:
this.data_member
this.function_member()
this()
Contoh:
class Parent {
public int x = 5;
}
Ketika kita memakai konsep inheritance, maka yang harus kita ketahui adalah
konstruktor dari parent class tidak dapat diwariskan ke subclass-nya. Sebagai
konsekuensinya adalah setiap kali kita membuat suatu subclass, maka kita harus
memanggil konstruktor parent class di konstruktor subclass. Jika kita tidak
mendeklarasikannya secara eksplisit, maka kompiler Java akan menambahkan deklarasi
pemanggilan kontruktor parent class di konstruktor subclass.
C. TUGAS PENDAHULUAN
1. Apakah yang dimaksud dengan package?
2. Apakah kegunaan kata kunci import?
3. Apakah kegunaan kata kunci this?
72
D. PERCOBAAN
Percobaan 1 : Menggunakan kata kunci this
73
public Mahasiswa() {
this(0,);
}
74
Dari class diagram tersebut, dapat diimplementasikan ke dalam program dibawah ini.
Sebelum melakukan kompilasi, daftarkan direktori tempat package diatas disimpan.
package sekolah;
package sekolah;
String nama) {
String nama) {
this.nrp=nrp;
this.kodekelas=kode;
this.nama=nama;
this.namakelas=nama;
}
}
}
75
E. LATIHAN
Latihan 1: Mengimplementasikan UML class diagram dalam program untuk
package perbankan
import perbankan.*;
nasabah.getTabungan().simpanUang(3000);
System.out.println("Jumlah uang yang disimpan 3000");
status=nasabah.getTabungan().ambilUang(6000);
76
OK");
else
System.out.println(" Gagal");
nasabah.getTabungan().simpanUang(3500);
System.out.println("Jumlah uang yang disimpan 3500");
status=nasabah.getTabungan().ambilUang(4000);
System.out.println("Jumlah uang yang diambil 4000");
if(status)
System.out.println("
OK");
else
System.out.println(" Gagal");
status=nasabah.getTabungan().ambilUang(1600);
System.out.println("Jumlah uang yang diambil 1600");
if(status)
System.out.println("
OK");
else
System.out.println(" Gagal");
nasabah.getTabungan().simpanUang(2000);
System.out.println("Jumlah uang yang disimpan 2000");
tmp=nasabah.getTabungan().getSaldo();
System.out.println("Saldo sekarang = "+tmp);
}
}
Lakukan kompilasi pada program diatas dan jalankan. Jika tampilan di layar tampak
seperti dibawah ini, maka program anda sudah benar. Jika tidak sama, benahi kembali
program anda dan lakukan hal yang sama seperti diatas.
77
ok
ok
gagal
F. TUGAS
Tugas 1 : Perhatikan program dibawah ini. Apa yang terjadi bila dikompile dan
dijalankan? Jelaskan jawaban anda!
public class Pegawai{
int nip;
String nama;
78
79
bank.getJumlahNasabah());
for(int i =0; i<bank.getJumlahNasabah(); i++){
System.out.println("Nasabah ke-" + (i+1) + " : " +
bank.getNasabah(i).getNamaAwal() + " " +
bank.getNasabah(i).getNamaAkhir() + " ; Saldo = " +
bank.getNasabah(i).getTabungan().getSaldo());
}
}
}
Lakukan kompilasi pada program diatas dan jalankan. Jika tampilan di layar tampak
seperti dibawah ini, maka program anda sudah benar. Jika tidak sama, benahi kembali
program anda dan lakukan hal yang sama seperti diatas.
Jumlah nasabah = 4
Nasabah ke-1 : Agus Daryanto ; Saldo = 5000
Nasabah ke-2 : Tuti Irawan ; Saldo = 7000
Nasabah ke-3 : Ani Ratna ; Saldo = 4000
Nasabah ke-4 : Bambang Darwaman ; Saldo = 6500
G. LAPORAN RESMI
Kumpulkan hasil latihan dan tugas di atas. Tambahkan analisa dalam laporan resmi.
80
PRAKTIKUM 10
INHERITANCE 1
A. TUJUAN PEMBELAJARAN
1. Memahami dan menerapkan konsep inheritance dalam pemrograman
2. Memahami pengaksesan member pada parent class
3. Memahami konsep single inheritance
4. Memahami konsep multi level inheritance
B. DASAR TEORI
Konsep inheritance ini mengadopsi dunia riil dimana suatu entitas/obyek dapat
mempunyai entitas/obyek turunan. Dengan konsep inheritance, sebuah class dapat
mempunyai class turunan. 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 classnya, sehingga member dari suatu subclass adalah terdiri dari apa-apa yang ia punyai dan
juga apa-apa yang ia warisi dari class parent-nya. Kesimpulannya, boleh dikatakan
bahwa suatu subclass adalah tidak lain hanya memperluas (extend) parent class-nya.
Di dalam Java untuk mendeklarasikan suatu class sebagai subclass dilakukan
dengan cara menambahkan kata kunci extends setelah deklarasi nama class, kemudian
diikuti dengan nama parent class-nya. Kata kunci extends tersebut memberitahu
kompiler Java bahwa kita ingin melakukan perluasan class. Berikut adalah contoh
deklarasi inheritance. Contoh:
public class B extends A {
...
}
81
Contoh diatas memberitahukan kompiler Java bahwa kita ingin meng-extend class A ke
class B. Dengan kata lain, class B adalah subclass (class turunan) dari class A,
sedangkan class A adalah parent class dari class B.
Java hanya memperkenankan adanya single inheritance. Konsep single
inheritance hanya memperbolehkan suatu sublass mempunyai satu parent class. Dengan
konsep single inheritance ini, masalah pewarisan akan dapat diamati dengan mudah.
Konsep single inheritance bisa dilihat pada Gambar 11.1. Pada gambar tersebut bisa
dilihat bahwa tiap class pasti memiliki hanya satu perant class. Java mengijinkan suatu
sub class untuk memiliki anak lagi. Hal ini disebut dengan konsep multi level
inheritance. Contohnya class Kendaraan memiliki class anak yaitu Bermotor, dan class
Bermotor memiliki class anak lagi yaitu Mobil dan Pesawat.
Kendaraan
Tidak Bermomotor
Bermotor
Mobil
Pesawat
Delman
Andong
Becak
Dalam konsep dasar inheritance dikatakan bahwa suatu subclass adalah tidak
lain hanya memperluas (extend) parent class-nya. Contoh :
82
Pada saat class Manajer menurunkan atau memperluas (extend) class Pegawai,
maka ia mewarisi data member yang dipunyai oleh class Pegawai. Dengan demikian,
class Manajer mempunyai data member yang diwarisi oleh Pegawai (nama, gaji),
ditambah dengan data member yang ia punyai (departemen).
Pengaksesan member yang ada di parent class dari subclass-nya tidak jauh
berbeda dengan pengaksesan member subclass itu sendiri. Contoh:
public class Manajer extends Pegawai {
public String departemen;
C. TUGAS PENDAHULUAN
1. Apa yang dimaksud dengan inheritance?
2. Buatlah contoh kasus yang menerapkan konsep inheritance !
3. Adakah perbedaan cara mengakses member class milik parent dan member class
milik sendiri? Jelaskan melalui contoh ! (Silahkan memanfaatkan jawaban soal
nomor 2.)
4. Apa yang dimaksud dengan konsep single inheritance ?
5. Apa yang dimaksud dengan konsep multi level inheritance ?
D. PERCOBAAN
Penyembunyian informasi
Buatlah class Pegawai seperti dibawah ini:
public class Pegawai {
private String nama;
public double gaji;
}
83
Sekarang cobalah untuk mengkompilasi class Manajer diatas. Apa yang terjadi?. Pesan
kesalahan akan muncul seperti ini:
Manajer.java:5: nama has private access in Pegawai
nama=n;
Ini membuktikan bahwa class Manajer tidak mewarisi data member nama dari parent
class-nya (Pegawai).
E. LATIHAN
Latihan 1. Tempatkan class Base dan class Class1 di direktori yang sama. Apa
yang terjadi ketika Class1.java dikompile dan dijalankan jika sebelumnya
Base.java belum dikompile? Jelaskan !
//Base.java
package Base;
class Base{
protected void amethod(){
System.out.println("amethod");
}//End of amethod
}//End of class base
84
package Class1;
//Class1.java
public class Class1 extends Base{
public static void main(String argv[]){
Base b = new Base();
b.amethod();
}//End of main
}//End of Class1
class HumptyDumpty
{
void myMethod() {}
}
class HankyPanky extends HumptyDumpty
{
void myMethod() {}
}
Latihan 3.
a. Apa yang terjadi bila kedua kode dibawah ini dikompile dan dijalankan dalam
satu direktori? Jelaskan !
b. Bagaimana solusi supaya tidak terjadi error?
//File P1.java
package MyPackage;
class P1{
void aFancyMethod(){
System.out.println("What a fancy method");
}
}
//File P2.java
public class P2 extends P1{
public static void main(String argv[]){
P2 p2 = new P2();
p2.aFancyMethod();
}
}
85
Ubahlah mode akses atribut saldo pada Tabungan menjadi protected. Lalu
Transformasikan class diagram diatas ke dalam bentuk program! Tulislah listing
program berikut ini sebagai pengetesan.
import perbankan.*;
86
Lakukan kompilasi pada program diatas dan jalankan. Jika tampilan di layar tampak
seperti dibawah ini, maka program anda sudah benar. Jika tidak sama, benahi kembali
program anda dan lakukan hal yang sama seperti diatas.
Uang yang ditabung : 5000
Tingkat bunga sekarang : 8.5%
Total uang anda sekarang : 5425.0
F. TUGAS
Mengimplementasikan UML class diagram dalam program untuk package
perbankan
87
Lakukan kompilasi pada program diatas dan jalankan. Jika tampilan di layar tampak
seperti dibawah ini, maka program anda sudah benar. Jika tidak sama, benahi kembali
program anda dan lakukan hal yang sama seperti diatas.
Uang yang ditabung : 5000
Uang yang diproteksi : 1000
----------------Uang yang akan diambil : 4500 false
Saldo sekarang : 5000
----------------Uang yang akan diambil : 2500 true
Saldo sekarang : 2500
G. LAPORAN RESMI
Kumpulkan hasil latihan dan tugas di atas. Tambahkan analisa dalam laporan resmi.
88
PRAKTIKUM 11
INHERITANCE 2
A. TUJUAN PEMBELAJARAN
1. Melakukan pengontrolan akses pada pengkodean
2. Menggunakan kata kunci super
3. Menghindari kesalahan pada pewarisan konstruktor
B. DASAR TEORI
Suatu parent class dapat tidak mewariskan sebagian member-nya kepada
subclass-nya. Sejauh mana suatu member dapat diwariskan ke class lain, ataupun suatu
member dapat diakses dari class lain, sangat berhubungan dengan access control
(kontrol pengaksesan). Di dalam java, kontrol pengaksesan dapat digambarkan dalam
Tabel 9.1.
Tabel 9.1. Akses modifier
Modifier
class
package
yang sama
yang sama
subclass
class
manapun
private
default
protected
public
Kata kunci super dipakai untuk merujuk pada member dari parent class,
sebagaimana kata kunci this yang dipakai untuk merujuk pada member dari class itu
sendiri. Adapun format penulisannya adalah sebagai berikut:
super.data_member
super()
C. TUGAS PENDAHULUAN
1. Ada berapa modifier untuk pengontrolan akses? Jelaskan masing-masing!
2. Apakah kegunaan kata kunci super? Jelaskan !
3. Apakah yang dimaksud dengan konstruktor tidak diwariskan?
D. PERCOBAAN
Percobaan 1 : Menggunakan kata kunci super
Berikut ini listing penggunaan kata kunci super.
class Parent {
public int x = 5;
}
90
Ketika program tersebut dijalankan, akan tampak hasil seperti dibawah ini :
Nilai x sebagai parameter = 20
Data member x di class Child = 10
Data member x di class Parent = 5
Buatlah class Child yang menurunkan class Parent seperti dibawah ini:
public class Child extends Parent {
int x;
public Child() {
x = 5;
super();
}
}
Lakukan kompilasi pada Child diatas. Apa yang terjadi?. Pasti disana terjadi error.
Sekarang ubahlah sedikit class Child diatas seperti dibawah ini:
public class Child extends Parent {
int x;
public Child() {
super();
x = 5;
}
}
91
Setelah dikompilasi, anda tidak mendapatkan error sebagaimana yang sebelumnya. Ini
yang harus kita perhatikan bahwa untuk pemanggilan konstruktor parent class, kita
harus melakukan pemanggilan tersebut di baris pertama pada konstruktor subclass.
E. LATIHAN
Latihan 1. Konstruktor tidak diwariskan
Buatlah class berikut ini
class Base{
Base(int i){
System.out.println("base constructor");
}
Base(){
}
}
public class Sup extends Base{
public static void main(String argv[]){
Sup s= new Sup();
//baris 1
}
Sup(){
// baris 2
}
Modifikasilah class Sup (di bagian //baris 1, //baris 2 atau //baris 3) sedemikian hingga
konstruktor kelas Base (konstruktor Base(int i)) dipanggil dan menampilkan string
base constructor ke layar!
92
Latihan 3. Apa yang tampil di layar bila kode dibawah ini dijalankan?
class X{
Y b = new Y();
X(){
System.out.print("X");
}
}
class Y{
Y(){
System.out.print("Y");
}
}
public class Z extends X{
Y y = new Y();
Z(){
System.out.print("Z");
}
public static void main(String[] args){
new Z();
}
}
93
Latihan 4. Kompile dan jalankan program berikut! Apa yang terjadi? Jelaskan !
public class Hope{
public static void main(String argv[]){
Hope h = new Hope();
}
protected Hope(){
for(int i =0; i <10; i ++){
System.out.println(i);
}
}
}
F. TUGAS
Mengimplementasikan UML class diagram dalam program.
a. Buatlah kelas-kelas berdasarkan UML class diagram dibawah ini!
94
b. Selanjutnya buatlah kelas Tes.java yang membuat obyek-obyek serta mengeset nilai
variabel seperti pada Tabel 9.2.dan tampilkan data per obyek.
Tabel 9.2. Data obyek
Obyek
truk1
truk2
jmlRoda warna
4 kuning
6 merah
taksi1
taksi1
4 oranye
4 biru
sepeda1
sepeda2
3 hitam
2 putih
G. LAPORAN RESMI
Kumpulkan hasil latihan dan tugas di atas. Tambahkan analisa dalam laporan resmi.
95
PRAKTIKUM 12
OVERLOADING DAN OVERRIDING
A. TUJUAN PEMBELAJARAN
1. Memahami tentang overloading
2. Memahami tentang overriding
3. Memahami aturan tentang overridden
B. DASAR TEORI
Overloading adalah suatu keadaan dimana beberapa method sekaligus dapat
mempunyai nama yang sama, akan tetapi mempunyai fungsionalitas yang berbeda.
Contoh penggunaan overloading dilihat dibawah ini:
Gambar(int t1)
menggambar
persegi empat
Overloading ini dapat terjadi pada class yang sama atau pada suatu parent class dan
subclass-nya. Overloading mempunyai ciri-ciri sebagai berikut:
1. Nama method harus sama
2. Daftar parameter harus berbeda
3. Return type boleh sama, juga boleh berbeda
Overriding adalah suatu keadaan dimana method pada subclass menolak method
pada parent class-nya. Overriding mempunyai ciri-ciri sebagai berikut :
1. Nama method harus sama
2. Daftar parameter harus sama
96
C. TUGAS PENDAHULUAN
1. Memahami tentang overloading
2. Memahami tentang overriding
3. Memahami aturan tentang overridden
D. PERCOBAAN
Melakukan overloading pada method
Tulislah listing program berikut ini dan amati yang terjadi pada saat terjadinya
overloading pada method.
import java.awt.Point;
97
int y1 = 0;
int x2 = 0;
int y2 = 0;
public void buatSegiempat(int x1, int y1, int x2, int y2) {
this.x1 = x1;
this.y1 = y1;
this.x2 = x2;
this.y2 = y2;
}
void cetakSegiempat(){
System.out.print("Segiempat: <" + x1 + ", " + y1);
System.out.println(", " + x2 + ", " + y2 + ">");
}
98
point (20,20):");
rect.buatSegiempat(new Point(10,10), new Point(20,20));
rect.cetakSegiempat();
System.out.println();
System.out.print("Buat segiempat dengan 1 point (10,10),
koodinat (50,50)");
rect.buatSegiempat(new Point(10,10), 50, 50);
rect.cetakSegiempat();
}
}
E. LATIHAN
Latihan 1. Overriding
Apa yang terjadi bila program berikut ini dikompile dan dijalankan? Jelaskan !
class Base{
private void amethod(int iBase){
System.out.println("Base.amethod");
}
}
Latihan 2. Overloading
Apa yang terjadi bila program berikut ini dikompile dan dijalankan? Jelaskan !
99
class MyParent {
int x, y;
MyParent(int x, int y){
this.x = x;
this.y = y;
}
public int addMe(int x, int y){
return this.x + x + y + this.y;
}
public int addMe(MyParent myPar){
return addMe(myPar.x, myPar.y);
}
}
100
Latihan 3. Overloading
Apa yang terjadi bila program berikut ini dikompile dan dijalankan? Jelaskan !
class MyClass{
void myMethod(int i) {
System.out.println("int version");
}
void myMethod(String s) {
System.out.println("String version");
}
public static void main(String args[]){
MyClass obj = new MyClass();
char ch = 'c';
obj.myMethod(ch);
}
}
101
1458");
System.out.println();
dosen1.Info();
System.out.println();
dosen2.Info();
System.out.println();
dosen3.Info();
}
}
Lakukan kompilasi pada program diatas dan jalankan. Jika tampilan di layar tampak
seperti dibawah ini, maka program anda sudah benar. Jika tidak sama, benahi kembali
program anda dan lakukan hal yang sama seperti diatas.
Masukkan identitas dosen 1 : Agus
Masukkan identitas dosen 2 : Budi, NIP. 1458
Masukkan identitas dosen 3 : Iwan, NIP. 1215, umur 47
Nama : Agus
NIP : Umur : Nama : Budi
NIP : 1458
Umur : Nama : Iwan
NIP : 1215
Umur : 47
102
F. TUGAS
Tugas 1: Mengimplementasikan UML class diagram dalam program
RerataNilai
+ int average(int, int)
+ double average(double, double)
+ int average(int, int, int)
Lakukan kompilasi pada program diatas dan jalankan. Jika tampilan di layar tampak
seperti dibawah ini, maka program anda sudah benar. Jika tidak sama, benahi kembali
program anda dan lakukan hal yang sama seperti diatas.
Rerata nilai 21 dan 13 adalah : 27
Rerata nilai 19.3 dan 39.5 adalah : 39.05
Rerata nilai 123, 567 dan 744 adalah : 938
103
Kecebong
panjangEkor : double
+ Kecebong(int, String, double)
Transformasikan
class
diagram
diatas
ke
dalam
bentuk program?
Buatlah
umur
nama
panjangEkor
caraBergerak
O1
Froggy
melompat
O2
Junior Frog 10
berenang
G. LAPORAN RESMI
Kumpulkan hasil latihan dan tugas di atas. Tambahkan analisa dalam laporan resmi.
104
PRAKTIKUM 13
POLIMORFISME
A. TUJUAN PEMBELAJARAN
1. Memahami dan menerapkan konsep polimorfisme dalam pemrograman
2. Memahami proses terjadinya Virtual Method Invocation
3. Memahami dan menerapkan polymorphic arguments dalam pemrograman
4. Memahami penggunaan instanceof dan cara melakukan casting object
B. DASAR TEORI
Polymorphism (polimorfisme) adalah kemampuan untuk mempunyai beberapa
bentuk class yang berbeda. Polimorfisme ini terjadi pada saat suatu obyek bertipe parent
class, akan tetapi pemanggilan constructornya melalui subclass. Misalnya deklarasi
pernyataan berikut ini:
Employee employee=new Manager();
dimana Manager() adalah kontruktor pada class Manager yang merupakan subclass dari
class Employee.
Virtual Method Invocation (VMI) bisa terjadi jika terjadi polimorfisme dan
overriding. Pada saat obyek yang sudah dibuat tersebut memanggil overridden method
pada parent class, kompiler Java akan melakukan invocation (pemanggilan) terhadap
overriding method pada subclass, dimana yang seharusnya dipanggil adalah overridden
method. Berikut contoh terjadinya VMI:
class Parent {
int x = 5;
public void Info() {
105
Polymorphic arguments adalah tipe suatu parameter yang menerima suatu nilai
yang bertipe subclass-nya. Berikut contoh dari polymorphics arguments:
class Pegawai {
106
Pernyataan instanceof sangat berguna untuk mengetahui tipe asal dari suatu
polymorphic arguments. Untuk lebih jelasnya, misalnya dari contoh program
sebelumnya, kita sedikit membuat modifikasi pada class Tes dan ditambah sebuah class
baru Kurir, seperti yang tampak dibawah ini:
parameter ke tipe asal. Misalkan saja program kita sebelumnya. Pada saat kita sudah
melakukan instanceof dari tipe Manajer, kita dapat melakukan casting object ke tipe
asalnya, yaitu Manajer. Caranya adalah seperti berikut:
C. TUGAS PENDAHULUAN
1. Apakah yang dimaksud dengan polimorfisme ?
2. Jelaskan proses terjadinya Virtual Method Invocation !
3. Apakah yang dimaksud dengan polymorphic arguments ?
4. Apakah kegunaan kata kunci instanceof ?
D. PERCOBAAN
Memahami proses terjadinya Virtual Method Invocation
Tulislah listing program berikut ini dan amati yang terjadi pada saat terjadinya Virtual
Method Invocation.
class Parent {
int x = 5;
public void Info() {
System.out.println(Ini class Parent);
}
}
108
E. LATIHAN
Latihan 1. Apa yang terjadi bila kode dibawah ini dikompile dan dijalankan jika
sebelumnya Base.java belum dikompile? Jelaskan !
// Filename; SuperclassX.java
package packageX;
void subclassMethodY(){
objY.superclassMethodX();
int i;
i = objY.superclassVarX;
}
}
109
Latihan 2. Apa yang tampil di layar jika kode dibawah ini dijalankan? Jelaskan !
class Base {
int i = 99;
Base(){
amethod();
}
public void amethod(){
System.out.println("Base.amethod()");
}
}
public class Derived extends Base{
int i = -1;
public static void main(String argv[]){
Base b = new Derived();
System.out.println(b.i);
b.amethod();
}
public void amethod(){
System.out.println("Derived.amethod()");
}
}
Latihan 3. Apa yang tampil di layar jika kode dibawah ini dijalankan? Jelaskan !
class Parent{
private void method1(){
System.out.println("Parent's method1()");
}
public void method2(){
System.out.println("Parent's method2()");
method1();
}
}
class Child extends Parent{
public void method1()
System.out.println("Child's method1()");
}
public static void main(String args[]){
Parent p = new Child();
p.method2();
}
}
110
F. TUGAS
Mengimplementasikan UML class Diagram dalam program
111
Lakukan kompilasi pada program diatas dan jalankan. Jika tampilan di layar tampak
seperti di bawah ini, maka program anda sudah benar. Jika tidak sama, benahi kembali
program anda dan lakukan hal yang sama seperti diatas.
G. LAPORAN RESMI
Kumpulkan hasil latihan dan tugas di atas. Tambahkan analisa dalam laporan resmi.
112
PRAKTIKUM 14
NESTED CLASS
A.
TUJUAN PEMBELAJARAN
1. Mampu mengimplementasikan konsep inner class
B.
DASAR TEORI
Java membolehkan menyisipkan suatu kelas ke dalam kelas lainnya. Kelas sisipan ini disebut
kelas Inner. Kelas Inner berguna untuk mendukung suatu proses yang akan dijalankan oleh kelas
luarnya. Beberapa ketentuan kelas Inner :
Kelas Luar yang mengandung kelas Inner, bila dikompilasi akan menghasilkan dua file
*.class, yaitu Luar.class dan Luar$Inner.class
Kelas Inner boleh tidak diberi nama, yang disebut Anonymous Inner.
Kelas Inner dapat diberi modifier akses public, atau protected, atau default, ataupun
private.
Untuk mengakses referensi this dari kelas luar digunakan bentuk NamaKelasLuar.this.
Kelas Luar ikut bertanggung-jawab dalam instansiasi kelas Inner (yang non static) .
Kalau objek kelas Luar adalah a, dan objek kelas Inner adalah b, maka sintaks yang benar
adalah :
Luar a = new Luar();
Luar.Inner b = a.new Inner();
Jika kelas Inner bersifat static, maka objek milik kelas Inner dapat dibuat sendiri
tanpa melalui kelas Luarnya, (Artinya kelas Inner tidak dapat mengakses attribute
ataupun method non static milik kelas Luarnya).
Inner Class adalah kelas yang disisipkan di dalam kelas yang lain. Fungsi kelas sisipan ini
adalah mendukung suatu proses yang akan dijalankan oleh kelas utamanya. Inner Class bersifat
113
tersarang terhadap kelas kelas utamanya, seperti halnya blok penyeleksian (if, for) yang
tersarang pada blok penyeleksian lainnya atau method yang tersarang pada method lainnya.
Analogi Inner Class
Inner Class dapat dianalogikan sebagi hubungan antara manusia dan paru paru. Setiap manusia
pasti bernafas dengan menggunakan paru paru. Dalam hal ini berarti kinerja dari paru paru
turut mendukung/menetukan kinerja dari manusia. Dalam bahasa pemrograman berorientasi
objek manusia dapat dikatakan sebagai outer class dan paru paru sebagai inner class-nya.
C.
TUGAS PENDAHULUAN
PERCOBAAN
114
115
116
117
118
Percobaan 7 : Inner class yang dideklarasikan Inner class yang dideklarasikan di di dalam
dalam method.
119
E.
LATIHAN
Latihan 1 : Program berikut tida k dapat dikompile. Perbaiaki agar dapat dikompile
public class Problem {
String s;
static class Inner {
void testMethod() {
s = "Set from Inner";
}
}
}
Latihan 2 : Gunakan Java API documentation untuk Box class (di javax.swing package)
untuk menjawab pertanyaan berikut :
1. What static nested class does Box define?
2. What inner class does Box define?
3. What is the superclass of Box's inner class?
4. Which of Box's nested classes can you use from any class?
120
F.
TUGAS
G.
LAPORAN RESMI
Kumpulkan hasil percobaan di atas dan tambahkan analisa untuk tiap percobaan, latihan, dan
tugas yang telah dibuat.
121
PRAKTIKUM 15
TYPE WRAPPER
A. TUJUAN PEMBELAJARAN
1. Memahami mengenai type Wrapper dan berbagai macam type Wrapper.
2. Memahami cara perpindahan dari tipe data primitif menjadi tipe Wrapper dan
sebaliknya.
3. Memahami proses Autoboxing dan Auto-unboxing.
B. DASAR TEORI
B.1 Pengenalan dan Macam Type Wrapper
Java mengenal 8 buah tipe data primitif dan tidak dapat dibuat objek. Karena hal ini
mengalami kesulitan dalam penggunaannya karena beberapa class di library Java hanya
dapat berinteraksi dengan objek. Untuk mengatasi masalah ini, Java menyediakan tipe
data class untuk tipe data primitif. Class ini membungkus tipe data primitif agar dapat
digunakan sebagai objek. Class ini disebut dengan type Wrapper.
Tipe Data Primitif
Class Wrapper
Argument Constructor
Boolean
Boolean
Byte
Byte
Char
Character
char
Double
Double
Float
Float
Int
Integer
Long
Long
Short
Short
B.2 Number (Class Byte, Short, Integer, Long, Float dan Double)
Number adalah class abstract yang merupakan superclass dari semua class type wrapper
yang membungkus tipe data numerik seperti byte, short ,int, long, float dan double.
Konstruktor dari class wrapper ini mengizinkan untuk membuat nilai numerik dari objek
122
String. Namun jika objek String yang dilewatkan sebagai argument konstruktor bukan
nilai
numerik
yang
valid,
maka
melemparkan
exception
yang
bertipe
NumberFormatException.
Constructor dari Class Byte, Short, Integer, Long, Float dan Double adalah :
Byte(byte value)
Byte(String s) throws NumberFormatException
Contoh penggunaan
Byte num1 = new Byte(100);
Byte num2 = new Byte(100);
Short(short value)
Short (String s) throws NumberFormatException
Contoh penggunaan
Short num1 = new Short(100);
Short num2 = new Short(100);
Integer(int value)
Integer(String s) throws NumberFormatException
Contoh penggunaan
Integer num1 = new Integer(100);
Integer num2 = new Integer(100);
Long(long value)
Long(String s) throws NumberFormatException
Contoh penggunaan
Long num1 = new Long(100);
Long num2 = new Long(100);
Float(double value)
Float(float value)
Float(String s) throws NumberFormatException
Contoh penggunaan
Float num1 = new Float(100.4);
Float num2 = new Float(100.4f);
Float num3 = new Float(100.4);
Double(double value)
Double(String s) throws NumberFormatException
Contoh penggunaan
Double num1 = new Double(100);
Double num2 = new Double(100);
MIN_VALUE
:127
:32767
:2147483647
:9223372036854775807
:3.4028235E38
:1.7976931348623157E308
Method valueOf()
Method valueOf() : mengubah suatu nilai menjadi object dari class tersebut dan
melempar NumberFormatException(NFE) jika argument tidak sesuai.
Class Long, Integer, Short dan Byte mempunyai tiga method valueOf()
Integer
Integer
Integer
Boolean
Boolean
Long n1
Long n1
i1 = Integer.valueOf(42);
i2 = Integer.valueOf(42);
i3 = Integer.valueOf(42,2);
b1 = Boolean .valueOf(true);
b2 = Boolean .valueOf(true);
= Long.valueOf(42000000L);
= Long.valueOf(42000000L);
Method xxxValue()
Method xxxValue() digunakan untuk mengubah object dari class wrapper (object ini
mempunyai nilai) menjadi nilai numerik
Contoh penggunaan :
Integer i2 = new Integer(42);
byte b = i2.byteValue();
short s = i2.shortValue();
double d = i2.doubleValue();
Float f2 = new Float(3.14f);
short s = f2.shortValue();
Method parseXxx()
B.4 Character.
Class Character merupakan class wrapper untuk tipe data primitif char. Konstruktor dari
class Character adalah :
Character(char value)
Method valueOf() digunakan untuk mendapat nilai char dengan tipe wrapper. Character
hanya mempunyai satu method valueOf()
125
Tanpa Autoboxing
int i;
int i;
Integer j ;
Integer j ;
i=1;
i=1;
j=2;
j=new Integer(2);
i=j;
i=j.intValue();
j=i;
j=new Integer(i);
Pada kode tanpa Autoboxing, harus secara eksplisit membuat objek Integer j dengan nilai
primitif 2, sedangkan dengan autoboxing, maka proses perubahan dari tipe data primitif
int secara otomatis akan di konversi menjadi objek Integer, sehingga pada java 1.5 keatas
diperbolehkan dari
Integer j ;
j = new Integer(2)
menjadi
Integer j ;
j=2;
Proses increment biasanya digunakan untuk tipe data primitif. Tapi untuk java 1.5
(dengan Autoboxing), proses increment dapat dilakukan pada objek wrapper. Pada Auto126
unboxing pada waktu hendak melakukan increment, nilai primitifnya harus terlebih
dahulu diambil baru kemudian proses increment dapat dilakukan. Hasil increment
tersebut kemudian dibuat menjadi objek Integer yang baru.
C. TUGAS PENDAHULUAN
Buatlah review mengenai tipe Wrapper dan macam-macamnya, dan penggunaan
konstruktor dari masing-masing tipe Wrapper.
D. PERCOBAAN
Percobaan 1 : Memahami cara membuat objek Integer. Jika terjadi error atau
exception, jelaskan penyebabnya !
public class TestInteger {
public static void main(String[] args) {
Integer i1 = new Integer(42);
Integer i2 = new Integer(2147483647);
Integer i3 = new Integer("42");
Integer i4 = new Integer("42.u");
}
}
System.out.println(doubleObj);
System.out.println("Nilai Minimum");
Byte byteObj2 = new Byte(Byte.MIN_VALUE);
System.out.println(byteObj2);
Short shortObj2 = new Short(Short.MIN_VALUE);
System.out.println(shortObj2);
Integer intObj2 = new Integer(Integer.MIN_VALUE);
System.out.println(intObj2);
Long longObj2 = new Long(Long.MIN_VALUE);
System.out.println(longObj2);
Float floatObj2 = new Float(Float.MIN_VALUE);
System.out.println(floatObj2);
Double doubleObj2 = new Double(Double.MIN_VALUE);
System.out.println(doubleObj2);
}
}
Percobaan 4 : Memahami cara konversi antar tipe Wrapper, misal dari objek
Integer diassignkan ke objek Long dan sebaliknya.
public class Konversi {
public static void main(String[] args) {
Integer i = 7 ;
Long l = 345L ;
i = l.intValue() ;
System.out.println("Nilai pada Integer = " + i);
l = i.longValue() ;
System.out.println("Nilai pada Long = " + l) ;
}
}
128
E. LATIHAN
1. Terdapat program seperti di bawah ini !
class Hexy {
public static void main(String[] args) {
Integer i = 42;
String s = (i<40)?"life":(i>50)?"universe":"everything";
System.out.println(s);
}
}
Which, inserted independently at line 5, will compile? (Choose all that apply.)
A.
B.
C.
D.
b
b
b
b
=
=
=
=
E. b = s.instanceof(Object);
F. b = (s instanceof String);
3.
Given:
class Fork {
public static void main(String[] args)
{
if(args.length == 1 | args[1] .equals("test")) {
System.out.println ("test case");
} else {
System.out.println("production " + args[0]) ;
}
}
}
And the command-line invocation:
java Fork live2
What is the result?
A. test case
B. production
C. test case live2
D. Compilation fails.
E. An exception is thrown at runtime.
4. Given:
class Foozit {
public static void main(String[] args) {
Integer x = 0;
Integer y = 0;
for(Short z = 0; z < 5; z++)
if((++x > 2) || (++y > 2))
X++ ;
System.out.println (x + " " + y);
}
}
5 1
5 2
5 3
8 1
8 2
8 3
10 2
10 3
5. Given:
131
class Titanic {
public static void main(String[] args) {
Boolean bl = true;
boolean b2 = false;
boolean b3 = true;
if((bl & b2) | (b2 & b3) & b3)
System.out.print("alpha ");
if((bl = false) | (b1 & b3) | (bl | b2))
System.out.print("beta "};
}
}
7. Buatlah sebuah aplikasi untuk mengubah sebuah bilangan desimal menjadi bilangan
biner, octal dan heksa berdasarkan inputan user.
Input
Masukkan bilangan : 345
Output
biner : 101011001
oktal : 531
heksa : 159
132
8. Buatlah sebuah aplikasi menerima inputan user berupa bilangan dan basis dari
bilangan tersebut, selanjutnya mengubah ke bilangan dengan basis yang lain (basis
2,8,10,16)
Input
Masukkan bilangan : 531
Basis : 8
Output
biner : 101011001
desimal : 345
heksa : 159
10. Ubahlah object Double menjadi tipe data primitif byte, short, int, long, float.
F. TUGAS
1. Buatlah suatu aplikasi untuk mengubah :
int
Tipe wrapper lain
String
Integer
Tipe primitif
G. LAPORAN RESMI
Kerjakan hasil percobaan(D) dan latihan(E) di atas dan tambahkan analisa.
133
PRAKTIKUM 16
TYPE ENUM
A. TUJUAN PEMBELAJARAN
1. Memahami mengenai konsep Enum
2. Memahami bentuk-bentuk penggunaan Enum
3. Memahami fungsi-fungsi yang terdapat di Enum
B. DASAR TEORI
Sebelum J2SE 5.0,
dicontohkan seperti di bawah ini: (jenis credit card yang bisa diterima oleh aplikasi)
Permasalahan yang muncul adalah tidak ada yang mengikat ketiga nilai menjadi
semacam set dan kita bisa memberikan nilai yang salah pada variabel-variabel tersebut.
Kondisi seperti ini disebut not type safe (tipe yang tidak aman). Kondisi ini dapat
diperbaiki dengan membuat tipe yang relatif aman (tipe safe) dengan mendefinisikan
suatu class, yaitu class AllowedCreditCard. Class tersebut mendefinisikan :
134
}
public String getName(){
return card ;
}
}
Pada pendekatan ini, terdapat 3 state dari class AllowedCreditCard yang dinyatakan oleh
tiga object yang dicreate dengan memberikan nilai yang berbeda pada variabel card.
Karena konstruktor private, sehingga tidak bisa create object diluar class. Design seperti
ini masih dianggap type safe. Tapi pada J2SE 5.0 terdapat solusi yang bagus dengan
mengenalkan tipe baru yaitu enum.
Tipe data enum dikenalkan di J2SE 5.0 berguna untuk variabel yang berisi sekumpulan
nilai. Cara mendefinisikan variabel enum:
135
drink.size = Coffee2.CoffeeSize.BIG ;
}
}
Cara termudah dengan memberikan nilai enum (misal : BIG, HUGE, dan
OVERWHELMING). Nilai enum sebagai object yang masing-masing mempunyai
nilai instance variabel sendiri-sendiri.
Nilai ini diberikan pada saat enum diinisialisasi, dengan memberikan nilai pada
konstruktor enum.
enum CoffeeSize2{
BIG(8), HUGE(10), OVERWHELMING(16);
CoffeeSize2(int ounces){
this.ounces = ounces ;
}
private int ounces ;
public int getOunces() {
return ounces;
}
}
enum Apple {
A(10), B(9), C, D(15), E(8);
private int price; // price of each apple
// Constructor
Apple(int p) { price = p; }
// Overloaded constructor
Apple() { price = -1; }
int getPrice() { return price; }
}
C. TUGAS PENDAHULUAN
Buatlah review mengenai
Definisi enum
Merubah bentuk konstanta(terdapat lebih dari satu konstanta) menjadi bentuk enum
D. PERCOBAAN
Percobaan 1 : Class AllowedCreditCard dirubah menjadi bentuk enum.
public class AllowedCreditCard {
protected final String card ;
public final static AllowedCreditCard VISA = new
AllowedCreditCard("VISA");
public final static AllowedCreditCard MASTER_CARD = new
AllowedCreditCard("MASTER CARD");
public final static AllowedCreditCard AMERICAN_EXPRESS = new
AllowedCreditCard("AMERICAN_EXPRESS");
private AllowedCreditCard(String str){
card = str;
}
public String getName(){
return card ;
137
}
}
138
}
private int ounces ;
public int getOunces() {
return ounces;
}
}
139
E. LATIHAN
1. Consider the following code fragment:
1. class EnumTest{
2.
enum Size{small, medium, large, Xlarge};
3.
public static void main(String [] args) {
4.
for( Size s : Size.values()) {
5.
if (s == Size.small)
6.
System.out.print("small ");
7.
else if (Size.medium.equals(s))
8.
System.out.println("medium ");
9.
else if (s == Size.large)
10.
System.out.println("large ");
11.
else if (s.equals("Xlarge "))
12.
System.out.println("Xlarge ");
13.
else if ( s == "Xlarge ");
14.
System.out.println("Xlarge ");
15.
}
16.
}
17. }
141
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
}
21. }
int x = 0;
Colors c = Colors.GREEN;
switch(c) {
case BLUE:
System.out.print(c);
case GREEN:
System.out.print(c);
case YELLOW:
System.out.print(c);
default:
System.out.print(" BlackWhite ");
break;
case RED:
System.out.print(c);
}
System.out.println(" PicturePerfect");
F. TUGAS
Tugas 1 :
Pada supermarket terdapat beberapa macam jenis buah Apel yaitu Apel Malang, Granny
Smith, Pink Lady, Golden Delicious, Gala dan Red Delicious. Buatlah enum Apel
dengan berbagai jenis apel dan harganya. Berikan deskripsi dari apel tersebut pada
method getDeskripsi(). Selanjutnya tampilkan data semua Apel, harga dan
deskripsi pada Supermarket tersebut.
143
Enum Apel{
MALANG(//harga),...
public String getDeskripsi() {}
}
G. LAPORAN RESMI
Kerjakan hasil percobaan(D), latihan(E) dan tugas(F) di atas dan tambahkan analisa.
144
PRAKTIKUM 17
MENANGANI EXCEPTION
A. TUJUAN PEMBELAJARAN
1. Memahami mengenai exception
2. Memahami tipe exception yaitu Checked Exception dan Unchecked Exception.
3. Mengetahui cara menggunakan exception menggunakan blok try catch.
B. DASAR TEORI
Exception adalah suatu kondisi abnormal yang terjadi pada saat menjalankan program.
Karena dalam java segala sesuatu merupakan objek, maka exception juga
direpresentasikan dalam sebuah objek yang menjelaskan tentang exception tersebut.
Contoh exception adalah pembagian bilangan dengan 0, pengisian elemen array diluar
ukuran array, kegagalan koneksi database, file yang akan dibuka tidak ada, dan
mengakses objek yang belum diinisialisasi.
Terdapat dua penanganan exception yaitu:
Ada lima keyword yang digunakan oleh Java untuk menangani exception yaitu try, catch,
finally, throw dan throws.
yang dapat ditangani oleh program. Terdapat subclass dari class Exception diantaranya
RunTimeException, IOException, AWTException dan lain-lain.
Semua exception bertipe RunTimeException dan turunannya tidak harus secara eksplisit
ditangani
dalam
program
(Unchecked
Exception).
Contoh
subclass
dari
146
Output :
Terjadi exception karena Indeks Array melebihi batas
Setelah blok try-catch
Dapat terjadi kode yang terdapat dalam blok try mengakibatkan lebih dari satu exception.
Dalam hal ini, kita dapat menuliskan lebih dari satu blok catch. Contoh :
public class Percobaan5 {
public static void main(String[] args) {
int bil=10;
String b[] = {"a","b","c"};
try{
System.out.println(bil/0);
System.out.println(b[3]);
}catch(ArithmeticException e){
System.out.println("Error Aritmetik");
}catch(ArrayIndexOutOfBoundsException e){
System.out.println("Error Kapasitas Array Melebihi Batas");
}catch(Exception e){
System.out.println("Terdapat Error");
}
}
}
Blok catch yang dijalankan tergantung dengan exception yang terjadi. Java akan
menjalankan blok catch yang sesuai dengan tipe exceptionnya saja. Dalam
penggunaannya, blok catch dengan tipe subclass harus ditulis lebih dahulu baru diikuti
dengan blok catch dengan tipe data superclassnya.
147
C. TUGAS PENDAHULUAN
Buatlah review mengenai definisi exception, jenis exception, dan berikan 2 contoh
program yang menyebabkan exception beserta cara penangannya.
D. PERCOBAAN
148
Percobaan
Memahami
cara
menangkap
Exception
dengan
tipe
ArrayIndexOutOfBoundsException
public class Percobaan2 {
public static void main(String[] args) {
int a[] = new int[5];
try{
a[5] = 100 ;
}catch(ArrayIndexOutOfBoundsException e){
System.out.println("Indeks Array melebihi batas");
}
}
}
bilangan
dengan
0");
}
}
}
149
karena
tidak
boleh
150
E. LATIHAN
1. Semua exception yang berasal dari java.lang.RuntimeException adalah unchecked
exceptions,
sedangkan
java.lang.RuntimeException
exception
adalah
lainnya
checked
yang
tidak
exceptions.
berasal
Jelaskan
dari
mengenai
ArithmeticException
ArrayStoreException
ClassCastException
ArrayIndexOutOfBoundsException
StringIndexOutOfBoundsException
NegativeArraySizeException
NoSuchElementException
NullPointerException,
NumberFormatException
F. TUGAS
1. Terdapat dua cara untuk menangani Exception yaitu dengan menangkap Exception
dan melempar Exception. Lakukan penanganan exception dengan menangkap
Exception menggunakan blok try-catch. Berilah penjelasan (apakah program
termasuk unchecked exceptions atau checked exceptions) !
public class ReadFile {
public static void main(String args[]){
File file = new File("Data.txt");
BufferedReader fileReader ;
151
G. LAPORAN RESMI
Kerjakan hasil percobaan(D), latihan(E) dan tugas(F) di atas dan tambahkan analisa.
152
PRAKTIKUM 18
MELEMPAR EXCEPTION DAN MEMBUAT
EXCEPTION SENDIRI
A. TUJUAN PEMBELAJARAN
1. Mengetahui cara menangani exception dengan cara melempar exception.
2. Mengetahui cara membuat sendiri class exception.
B. DASAR TEORI
Exception adalah suatu kondisi abnormal yang terjadi pada saat menjalankan program.
Karena dalam java segala sesuatu merupakan objek, maka exception juga
direpresentasikan dalam sebuah objek yang menjelaskan tentang exception tersebut.
Contoh exception adalah pembagian bilangan dengan 0, pengisian elemen array diluar
ukuran array, kegagalan koneksi database, file yang akan dibuka tidak ada, dan
mengakses objek yang belum diinisialisasi.
Terdapat dua penanganan exception yaitu:
Ada lima keyword yang digunakan oleh Java untuk menangani exception yaitu try, catch,
finally, throw dan throws.
yang dapat ditangani oleh program. Terdapat subclass dari class Exception diantaranya
RunTimeException, IOException, AWTException dan lain-lain.
Semua exception bertipe RunTimeException dan turunannya tidak harus secara eksplisit
ditangani
dalam
program
(Unchecked
Exception).
Contoh
subclass
dari
154
Output :
Terjadi exception karena Indeks Array melebihi batas
Setelah blok try-catch
Dapat terjadi kode yang terdapat dalam blok try mengakibatkan lebih dari satu exception.
Dalam hal ini, kita dapat menuliskan lebih dari satu blok catch. Contoh :
public class Percobaan5 {
public static void main(String[] args) {
int bil=10;
String b[] = {"a","b","c"};
try{
System.out.println(bil/0);
System.out.println(b[3]);
}catch(ArithmeticException e){
System.out.println("Error Aritmetik");
}catch(ArrayIndexOutOfBoundsException e){
System.out.println("Error Kapasitas Array Melebihi Batas");
}catch(Exception e){
System.out.println("Terdapat Error");
}
}
}
Blok catch yang dijalankan tergantung dengan exception yang terjadi. Java akan
menjalankan blok catch yang sesuai dengan tipe exceptionnya saja. Dalam
penggunaannya, blok catch dengan tipe subclass harus ditulis lebih dahulu baru diikuti
dengan blok catch dengan tipe data superclassnya.
155
System.out.println("Selalu Dijalankan");
}
System.out.println("Setelah blok try-catch");
}
}
C. TUGAS PENDAHULUAN
Buatlah review 1 halaman mengenai penanganan exception dengan cara melempar
exception dan berikan 1 contoh program.
D. PERCOBAAN
Percobaan 1 : Method yang melempar unchecked exception
public class Percobaan6 {
public static void method1(){
throw new ArrayIndexOutOfBoundsException("Melebihi Kapasitas");
}
156
157
// Define
String complaint;
public counterException(String c) {
this.complaint = c;
}
public String toString( ) {
return "counter Exception + complaint;
}
}
class counter {
158
int n = 0;
public int zero() { return n=0; }
public int up() { return ++n; }
public int down() throws counterException { // Throw
if (n <= 0)
throw new counterException
(n + " count Down failed.");
return --n;
}
}
E. LATIHAN
1. Terdapat dua cara untuk menangani Exception yaitu dengan menangkap Exception
dan melempar Exception. Lakukan penanganan exception dengan melempar
Exception menggunakan throw. Berilah penjelasan (apakah program termasuk
unchecked exceptions atau checked exceptions) !
public class ReadFile {
public static void main(String args[]){
File file = new File("Data.txt");
159
BufferedReader fileReader ;
fileReader = new BufferedReader(new FileReader(file));
while(true){
String line = fileReader.readLine();
if (line == null)
break ;
System.out.println(line);
}
}
}
F. TUGAS
1. Buatlah sebuah class Stack, FullStackException dan EmptyStackException. Class
Stack ini menggambar Stack yang menerapkan konsep LIFO (Last In First Out).
Konsep LIFO ini, data yang terakhir masuk akan keluar pertama kali.
Class Stack mempunyai atribut:
size : menentukan besar array untuk menyimpan data. Array berdimensi satu
dengan tipe Object.
top : merupakan tanda indeks yang paling atas, yang belum terisi. Sehingga data
yang akan masuk akan dimasukkan pada indeks tersebut.
public Stack() : jika kita membuat object Stack dengan konstruktor Stack() maka
tentukan size = 5.
public Stack(int s) : jika kita membuat object Stack dengan konstruktor Stack(int
s) maka tentukan size berdasarkan parameter s.
160
Deskripsi Stack
Buat objek Stack dengan nama stack, pertama kali top bernilai 0.
4
3
2
1
top = 0
Masukkan sebuah data String satu, data satu akan dimasukkan pada indeks yang ke-0
(sesuai dengan nilai top) selanjutnya top dinaikkan 1, sehingga top = 1.
4
3
2
1
top = 1
satu
Masukkan sebuah data String dua, data dua akan dimasukkan pada indeks yang ke-1
(sesuai dengan nilai top) selanjutnya top dinaikkan 1, sehingga top = 2.
4
3
2
top = 2
1 dua
satu
Ambil sebuah data dari Stack, data yang diambil adalah data yang dimasukkan terakhir
kali (dua). Kurangi nilai top dengan 1 sehingga menjadi nilai top = 1. Selanjutnya
ambil data pada indeks ke -1.
161
4
3
2
1
top = 1
satu
Ambil sebuah data dari Stack, data yang diambil adalah data yang terakhir (satu).
Kurangi nilai top dengan 1 sehingga menjadi nilai top = 0. Selanjutnya apabila ada
pengambilan data maka yang diambil adalah data pada indeks ke -0.
4
3
2
1
top = 0
Ambil sebuah data lagi dari Stack, jika kondisi top = 0, maka Stack kosong dan
melempar exception EmptyStackException (class ini merupakan subclass dari class
RuntimeException), dan muncul peringatan bahwa Stack kosong.
Selanjutnya isilah Stack sampai penuh.
top = 5
4 lima
3 empat
2 tiga
1 dua
satu
162
Jika kita ingin memasukkan data baru lagi, jika kondisi top = 5, maka akan melempar
exception yaitu FullStackException (class ini merupakan subclass dari class
RuntimeException).
top = 5
4 lima
3 empat
2 tiga
1 dua
satu
A. LAPORAN RESMI
Kerjakan hasil percobaan(D), latihan(E) dan tugas(F) di atas dan tambahkan analisa.
163
PRAKTIKUM 19
JAVA COLLECTION FRAMEWORK : SET DAN LIST
A. TUJUAN PEMBELAJARAN
1. Memahami cara penyimpanan objek menggunakan Collection.
2. Mengetahui pengelompokan dari Collection.
3. Mengetahui perbedaan dari interface Set dan List.
4. Mengetahui penggunaan class-class dari interface Set dan List.
5. Mengetahui cara penggunaan Iterasi dan Enumeration.
B. DASAR TEORI
Collection adalah suatu objek yang bisa digunakan untuk menyimpan sekumpulan objek.
Objek yang ada dalam Collection disebut elemen. Collection menyimpan elemen yang
bertipe Object, sehingga berbagai tipe objek bisa disimpan dalam Collection.
Class-class mengenai Collection tergabung dalam Java Collection Framework. Classclass Collection diletakkan dalam package java.util dan mempunyai dua interface utama
yaitu Collection dan Map. Mulai java 1.5 (juga dikenal sebagai J2SE 5), semua class
yang termasuk Java Collection Framework adalah class generics. Untuk kompatibilitas
dengan versi java sebelumnya, penggunaan generics tidak diharuskan, namun sangat
disarankan.
Collection terbagi menjadi 3 kelompok yaitu Set, List dan Map. Berikut ini adalah
struktur hierarki interface dan class yang termasuk dalam kelompok collection ini.
164
Set
Set mengikuti model himpunan, dimana objek/anggota yang tersimpan dalam Set harus
unik. Urutan maupun letak dari anggota tidaklah penting, hanya keberadaan anggota saja
yang penting. Class-class yang mengimplementasikan interface Set adalah HashSet.
Interface SortedSet merupakan subInterface dari interface Set. Untuk mengurutkan Set,
kita dapat menggunakan class yang mengimplementasikan interface SortedSet yaitu clas
TreeSet.
List
List digunakan untuk menyimpan sekumpulan objek berdasarkan urutan masuk (ordered)
dan menerima duplikat. Cara penyimpanannya seperti array, oleh sebab itu memiliki
posisi awal dan posisi akhir, menyisipkan objek pada posisi tertentu, mengakses dan
menghapus isi list, dimana semua proses ini selalu didasarkan pada urutannya. Classclass yang mengimplementasikan interface List adalah Vector, Stack, Linked
List dan Array List.
165
Terdapat interface Queue yang cara penyimpanan seperti List, interface ini menyimpan
objek menggunakan metode FIFO (First In First Out) yaitu objek yang masuk pertama
keluar pertama. Class-class yang mengimplementasikan interface Queue adalah
PriorityQueue
dan
LinkedList.
Data
yang
tersimpan
pada
objek
Map
Perbedaaan mendasar map dengan collection yang lain, untuk menyimpan objek pada
Map, perlu sepasang objek, yaitu key yang bersifat unik dan nilai yang disimpan. Untuk
mengakses nilai tersebut maka kita perlu mengetahui key dari nilai tersebut. Map juga
dikenal sebagai dictionary/kamus. Pada saat menggunakan kamus, perlu suatu kata yang
digunakan untuk pencarian. Class-class yang mengimplementasikan Map adalah
Hashtable,HashMap, LinkedHashMap. Untuk mengurutkan Map menggunakan
interface SortedMap, class yang mengimplementasikan interface tersebut adalah
TreeMap.
C. TUGAS PENDAHULUAN
Buatlah resume 1 halaman mengenai Java Collection Framework dan pembagian
kelompok Collection dan berikan penjelasannya.
D. PERCOBAAN
Percobaan 1 : Memahami penggunaan class-class yang mengimplementasikan
interface Set yaitu class HashSet dan class TreeSet
import java.util.*;
public class SetExample {
public static void main(String[] args) {
Set set=new HashSet();
set.add("Bernadine");
set.add("Elizabeth");
set.add("Gene");
set.add("Elizabeth");
set.add("Clara");
System.out.print("Elemen pada HashSet : ");
System.out.println(set);
Set sortSet=new TreeSet(set);
System.out.print("Elemen pada TreeSet : ");
System.out.println(sortSet);
166
}
}
Jalankan dengan :
java FindDups i came i saw i left
Jalankan dengan
java FindDups i came i saw i left
167
s2.add("France");
Set union=new TreeSet(s1);
union.addAll(s2); // gabungan dari s1 dan s2
print("Union",union);
Set intersect=new TreeSet(s1);
intersect.retainAll(s2); // irisan dari s1 dan s2
print("Intersection",intersect);
}
protected static void print(String label, Collection c){
System.out.println("---------------- "+ label+" --------------");
Iterator it=c.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}
168
169
170
171
v.add("E");
v.add("F");
v.add("G");
v.add("H");
System.out.println("Before copy, Vector Contains : " + v);
//copy all elements of ArrayList to Vector using copy method of
Collections class
Collections.copy(v,arrayList);
System.out.println("After Copy, Vector Contains : " + v);
}
}
172
dalam
objek
PriorityQueue
mengimplementasikan
interface
Comparator.
import java.util.Comparator;
import java.util.PriorityQueue;
173
pQueue.add(9);
pQueue.add(7);
pQueue.add(8);
pQueue.add(10);
pQueue.add(3);
while(true) {
Integer head = pQueue.poll();
if(head == null) {
break;
}
System.out.print(head + " <-- ");
}
}
/**
*
* @param n
* @return
*/
public static boolean isPrime(int n) {
if (n <= 1) {
return false;
}
if (n == 2) {
return true;
}
if (n % 2 == 0) {
return false;
}
long m = (long) Math.sqrt(n);
for (long i = 3; i <= m; i += 2) {
if (n % i == 0) {
return false;
}
}
return true;
}
}
E. LATIHAN
Latihan 1 : Penerapan konsep himpunan pada interface Set
Terdapat sebuah himpunan
A = {1,2,3,4,5}
B = {5,6,7,8,9,10}
Menggunakan class yang mengimplementasikan Interface Set, dapatkah output seperti :
AB
AB
174
AUB
ACB
F. TUGAS
Tugas 1 : Penggunaan class LinkedList pada interface List.
Buatlah dua objek List (ArrayList) yaitu objek warna dan warnaDihapus. Objek ini berisi
warna-warna, buatlah sebagian ada yang sama. Lakukan penghapusan data yang terdapat
pada objek warna yang sama dengan data warna yang terdapat pada objek warnaDihapus,
selanjutnya tampilkan.
Warna :
[MAGENTA, RED, WHITE, BLUE, CYAN]
Warna yang dihapus :
[RED, WHITE, BLUE]
Output :
Warna :
[MAGENTA, CYAN]
175
Nrp (String)
Nama(String)
Nilai(Float)
Terdapat 10 data mahasiswa yang tersimpan dalam queue, set nilai secara random antara
60-100, lakukan pengurutan data mahasiswa berdasarkan nilai tersebut !
G. LAPORAN RESMI
Kerjakan hasil percobaan(D), latihan(E) dan tugas(F) di atas dan tambahkan analisa.
176
PRAKTIKUM 20
JAVA COLLECTION FRAMEWORK : MAP
A. TUJUAN PEMBELAJARAN
1. Mengetahui mengenai interface Map.
2. Memahami cara penyimpanan objek menggunakan Map.
3. Mengetahui implementasi penggunaan dari class-class pada interface Map.
B. DASAR TEORI
Collection adalah suatu objek yang bisa digunakan untuk menyimpan sekumpulan objek.
Objek yang ada dalam Collection disebut elemen. Collection menyimpan elemen yang
bertipe Object, sehingga berbagai tipe objek bisa disimpan dalam Collection.
Class-class mengenai Collection tergabung dalam Java Collection Framework. Classclass Collection diletakkan dalam package java.util dan mempunyai dua interface utama
yaitu Collection dan Map. Mulai java 1.5 (juga dikenal sebagai J2SE 5), semua class
yang termasuk Java Collection Framework adalah class generics. Untuk kompatibilitas
dengan versi java sebelumnya, penggunaan generics tidak diharuskan, namun sangat
disarankan.
Collection terbagi menjadi 3 kelompok yaitu Set, List dan Map. Berikut ini adalah
struktur hierarki interface dan class yang termasuk dalam kelompok collection ini.
177
Set
Set mengikuti model himpunan, dimana objek/anggota yang tersimpan dalam Set harus
unik. Urutan maupun letak dari anggota tidaklah penting, hanya keberadaan anggota saja
yang penting. Class-class yang mengimplementasikan interface Set adalah HashSet.
Interface SortedSet merupakan subInterface dari interface Set. Untuk mengurutkan Set,
kita dapat menggunakan class yang mengimplementasikan interface SortedSet yaitu clas
TreeSet.
List
List digunakan untuk menyimpan sekumpulan objek berdasarkan urutan masuk (ordered)
dan menerima duplikat. Cara penyimpanannya seperti array, oleh sebab itu memiliki
posisi awal dan posisi akhir, menyisipkan objek pada posisi tertentu, mengakses dan
menghapus isi list, dimana semua proses ini selalu didasarkan pada urutannya. Class-
178
dan
LinkedList.
Data
yang
tersimpan
pada
objek
Map
Perbedaaan mendasar map dengan collection yang lain, untuk menyimpan objek pada
Map, perlu sepasang objek, yaitu key yang bersifat unik dan nilai yang disimpan. Untuk
mengakses nilai tersebut maka kita perlu mengetahui key dari nilai tersebut. Map juga
dikenal sebagai dictionary/kamus. Pada saat menggunakan kamus, perlu suatu kata yang
digunakan untuk pencarian. Class-class yang mengimplementasikan Map adalah
Hashtable,HashMap, LinkedHashMap. Untuk mengurutkan Map menggunakan
interface SortedMap, class yang mengimplementasikan interface tersebut adalah
TreeMap.
C. TUGAS PENDAHULUAN
Buatlah resume 1 halaman mengenai interface Map dan 2 contoh dari interface Map.
D. PERCOBAAN
Percobaan 1 : Penggunaan HashMap, menambahkan data, menghapus data
tertentu dan menghapus semua data pada objek HashMap.
import java.util.HashMap;
179
hMap.put("3","Three");
Object obj = hMap.remove("2");
System.out.println(obj + " Removed from HashMap");
hMap.clear();
System.out.println("Total key value pairs in HashMap are : " +
hMap.size());
}
}
Percobaan 3 : Mendapatkan key, melakukan iterasi pada key dan menghapus key
tertentu pada objek HashMap
public class GetSetViewOfKeysFromHashMapExample {
public static void main(String[] args) {
//create HashMap object
HashMap hMap = new HashMap();
//add key value pairs to HashMap
hMap.put("1","One");
hMap.put("2","Two");
hMap.put("3","Three");
180
Set st = hMap.keySet();
System.out.println("Set created from HashMap Keys contains :");
//iterate through the Set of keys
Iterator itr = st.iterator();
while(itr.hasNext())
System.out.println(itr.next());
//remove 2 from Set
st.remove("2");
}
}
181
182
183
E. LATIHAN
Latihan 1 : Mengetahui penggunaan class TreeMap
Inputkan kalimat, buatlah sebagian kata-kata dalam kalimat tersebut ada yang sama,
output berupa kata (sebagai key) dan jumlah kata (value) dalam kalimat tersebut yang
tersimpan dalam TreeMap, selanjutnya tampilkan.
Input : televisi kursi televisi kursi meja televisi monitor.
Output : kursi = 2 meja = 1 monitor = 1 televisi = 3
184
F. TUGAS
Tugas 1 : Ibukota propinsi di Indonesia
Terdapat objek TreeMap 1 yang berisi pulau(sebagai key)
beserta propinsi-
G. LAPORAN RESMI
Kerjakan hasil percobaan(D), latihan(E) dan tugas(F) di atas dan tambahkan analisa.
185
PRAKTIKUM 21
COMPARABLE
A. TUJUAN PEMBELAJARAN
1. Mengetahui untuk mengurutkan data dengan cara membandingkan satu objek dengan
objek lainnya.
2. Mengetahui class-class di Java yang mengimplementasikan interface Comparable.
3. Mengetahui cara mengurutkan data dengan class yang didefinisikan sendiri, dengan
cara mengimplementasikan interface Compable.
B. DASAR TEORI
Pada kehidupan nyata, object-object sering dibandingkan, misal :
Dalam pemrograman object oriented, sering sekali ada kebutuhan untuk membandingkan
object-object dari class yang sama, misalkan membandingkan object untuk mengurutkan
data, pencarian data yang diurutkan berdasarkan umur. Pada praktikum ini akan
membahas bagaimana merancang object dari class untuk bisa dibandingkan
menggunakan interface java.lang.Comparable and java.util.Comparator.
185
animals[2] = "wombat";
animals[3] = "bird";
System.out.println("\nSEBELUM DISORTING");
for (int i = 0; i < 4; i++) {
System.out.println("animal " + i + " : " + animals[i]);
}
Arrays.sort(animals,0,4);
System.out.println("\nSETELAH DISORTING");
for (int i = 0; i < 4; i++) {
System.out.println("animal " + i + " : " + animals[i]);
}
}
}
Output :
SEBELUM DISORTING
animal 0 : snake
animal 1 : kangaroo
animal 2 : wombat
animal 3 : bird
SETELAH DISORTING
animal 0 : bird
animal 1 : kangaroo
animal 2 : snake
animal 3 : wombat
Terdapat data String yang tersimpan dalam ArrayList, untuk mengurutkan data
menggunakan Collections.sort()
import java.util.ArrayList;
import java.util.Collections;
public class SortList {
public static void main(String args[]){
ArrayList insects = new ArrayList();
insects.add("mosquito");
insects.add("butterfly");
insects.add("dragonfly");
insects.add("fly");
System.out.println("\nSEBELUM DISORTING");
int size = insects.size();
for (int i = 0; i < size; i++) {
System.out.println("insect " + i + " : " + (String)
insects.get(i));
}
Collections.sort(insects);
186
System.out.println("\nSETELAH DISORTING");
for (int i = 0; i < size; i++) {
System.out.println("insect " + i + " : " + (String)
insects.get(i));
}
}
}
Output :
SEBELUM DISORTING
insect 0 : mosquito
insect 1 : butterfly
insect 2 : dragonfly
insect 3 : fly
SETELAH DISORTING
insect 0 : butterfly
insect 1 : dragonfly
insect 2 : fly
insect 3 : mosquito
187
@Override
public String toString() {
return "Mahasiswa{" + "nrp=" + nrp + " nama=" + nama + '}';
}
}
Output :
Exception in thread "main" java.lang.ClassCastException: prak.Mahasiswa
cannot be cast to java.lang.Comparable
at java.util.Arrays.mergeSort(Arrays.java:1144)
at java.util.Arrays.sort(Arrays.java:1079)
at prak.TestMahasiswa.main(TestMahasiswa.java:16)
Java Result: 1
Pada output program terjadi exception. Mengapa? Karena untuk mengurutkan objek
(proses mengurutkan ini dilakukan dengan cara membandingkan satu objek dengan objek
yang lain), maka objek tersebut harus mengimplementasikan interface Comparable.
Dengan mengimplementasikan interface Comparable pada sebuah class, menyebabkan
object-object tersebut bisa dibandingkan (comparable).
Kalau pada percobaan sebelumnya data yang diurutkan adalah String, dapat diurutkan
karena String mengimplementasikan interface Comparable.
public final class String extends Object implements Serializable,
Comparable<String>, CharSequence
Bentuk methodnya:
public int compareTo(Object o)
Mehod compareTo() menerima Object, sehingga kita bisa memasukkan sembarang
object, tapi harus mempunyai tipe yang sama. Kalau object yang kita masukkan adalah
object yang berbeda maka melemparkan exception java.lang.ClassCastException. Return
value dari method compareTo()
Bagaimana caranya supaya bisa menggunakan Array.sort() pada contoh kasus diatas.
Pada
class
Mahasiswa
implementasikan
interface
Comparable,
berarti
harus
189
Class Comparator
public class NamaComparator implements Comparator {
public int compare(Object o1, Object o2) {
Mahasiswa m1 = (Mahasiswa) o1;
190
C. TUGAS PENDAHULUAN
Buatlah resume 1 halaman mengenai interface Comparable dan berikan 1 contoh
penggunaan interface Comparable.
D. PERCOBAAN
Percobaan 1 : Mengurutkan data dengan tipe String yang tersimpan di array.
import java.util.Arrays;
public class ArrayString {
public static void main(String args[]){
String animals[] = new String[6];
animals[0] = "snake";
animals[1] = "kangaroo";
animals[2] = "wombat";
191
animals[3] = "bird";
System.out.println("\nSEBELUM DISORTING");
for (int i = 0; i < 4; i++) {
System.out.println("animal " + i + " : " + animals[i]);
}
Arrays.sort(animals,0,4);
System.out.println("\nSETELAH DISORTING");
for (int i = 0; i < 4; i++) {
System.out.println("animal " + i + " : " + animals[i]);
}
}
}
Percobaan 3 : Membuat class Mahasiswa dengan variabel nama dan nrp dengan
tipe String. Membuat data mahasiswa yang tersimpan di array. Selanjutnya
lakukan pengurutan data mahasiswa tersebut, apa yang terjadi? Jelaskan!
public class Mahasiswa {
private String nrp ;
private String nama ;
192
import java.util.Arrays;
public class TestMahasiswa {
public static void main(String[] args) {
Mahasiswa dataMhs[] = {new Mahasiswa("05", "Cahya"),new
Mahasiswa("04", "Rudi"),
new Mahasiswa("01", "Endah"),new Mahasiswa("03", "Rita"),new
Mahasiswa("02", "Tika")};
System.out.println("SEBELUM SORTING");
System.out.println(Arrays.toString(dataMhs));
Arrays.sort(dataMhs);
System.out.println("\nSESUDAH SORTING");
System.out.println(Arrays.toString(dataMhs));
}
}
193
this.nrp = nrp;
this.nama = nama;
}
public String getNama() {
return nama;
}
public void setNama(String nama) {
this.nama = nama;
}
public String getNrp() {
return nrp;
}
public void setNrp(String nrp) {
this.nrp = nrp;
}
@Override
public String toString() {
return "Mahasiswa{" + "nrp=" + nrp + " nama=" + nama + '}';
}
public int compareTo(Object o) {
Mahasiswa m2 = (Mahasiswa) o ;
return this.nrp.compareTo(m2.nrp);
}
}
E. LATIHAN
Latihan 1 : Sebutkan class-class yang mengimplementasikan interface Comparable.
Latihan 3 : Pada Supermarket Buah, terdapat beberapa macam buah dan informasi stock
dari buah tersebut. Terdapat menu penjualan (supermarket ke konsumen) dan pembelian
(supermarket ke pemasok) (menggunakan Comparable)
F. TUGAS
Tugas 1 : Permainan Remi
194
Pada permainan Remi terdapat 52 kartu, terdapat empat jenis kartu yaitu hati, keriting,
wajik dan waru. Setiap jenis kartu terdapat 13 kartu yaitu dua, tiga, empat, lima, enam,
tujuh, delapan, sembilan, sepuluh, jack, queen, king, ace. Kartu-kartu ini bisa
dibandingkan berdasarkan aturan tertentu. Untuk kartu dengan jenis yang sama, maka
misalkan untuk kartu dua hati memiliki nilai yang lebih rendah dibandingkan dengan
sembilan hati, kartu king hati lebih tinggi dibandingkan dengan jack hati. Di bawah ini
adalah urutan yang berlaku berdasarkan jenis kartu. Untuk selanjutnya urutan ini disebut
dengan BagianMuka
dua,tiga,empat,lima,enam,tujuh,delapan,sembilan,sepuluh,jack,quee
n,king,ace
Class Kartu : terdiri dari dua variabel yaitu variabel BagianMuka(tipe Enum
BagianMuka) dan variabel jenis(tipe String)
Contoh :
subList(int awal, int akhir) : untuk mengambil kartu mulai dari indek
indexOf(Object
diinginkan. Gunakan method indexOf() pada List, tapi pada class Kartu harus
195
enum BagianMuka {
dua,tiga,empat,lima,enam,tujuh,delapan,sembilan,sepuluh,jack,queen,king
,ace ;
}
G. LAPORAN RESMI
Kerjakan hasil percobaan(D), latihan(E) dan tugas(F) di atas dan tambahkan analisa.
196
PRAKTIKUM 22
COMPARATOR
A. TUJUAN PEMBELAJARAN
1. Memahami untuk mengurutkan data dengan cara membandingkan satu objek dengan
objek lainnya.
2. Mengetahui cara mengurutkan data dengan class yang didefinisikan sendiri, dengan
cara mengimplementasikan Comparator.
B. DASAR TEORI
Pada kehidupan nyata, object-object sering dibandingkan, misal :
Dalam pemrograman object oriented, sering sekali ada kebutuhan untuk membandingkan
object-object dari class yang sama, misalkan membandingkan object untuk mengurutkan
data, pencarian data yang diurutkan berdasarkan umur. Pada praktikum ini akan
membahas bagaimana merancang object dari class untuk bisa dibandingkan
menggunakan interface java.lang.Comparable and java.util.Comparator.
197
animals[3] = "bird";
System.out.println("\nSEBELUM DISORTING");
for (int i = 0; i < 4; i++) {
System.out.println("animal " + i + " : " + animals[i]);
}
Arrays.sort(animals,0,4);
System.out.println("\nSETELAH DISORTING");
for (int i = 0; i < 4; i++) {
System.out.println("animal " + i + " : " + animals[i]);
}
}
}
Output :
SEBELUM DISORTING
animal 0 : snake
animal 1 : kangaroo
animal 2 : wombat
animal 3 : bird
SETELAH DISORTING
animal 0 : bird
animal 1 : kangaroo
animal 2 : snake
animal 3 : wombat
Terdapat data String yang tersimpan dalam ArrayList, untuk mengurutkan data
menggunakan Collections.sort()
import java.util.ArrayList;
import java.util.Collections;
public class SortList {
public static void main(String args[]){
ArrayList insects = new ArrayList();
insects.add("mosquito");
insects.add("butterfly");
insects.add("dragonfly");
insects.add("fly");
System.out.println("\nSEBELUM DISORTING");
int size = insects.size();
for (int i = 0; i < size; i++) {
System.out.println("insect " + i + " : " + (String)
insects.get(i));
}
Collections.sort(insects);
System.out.println("\nSETELAH DISORTING");
198
Output :
SEBELUM DISORTING
insect 0 : mosquito
insect 1 : butterfly
insect 2 : dragonfly
insect 3 : fly
SETELAH DISORTING
insect 0 : butterfly
insect 1 : dragonfly
insect 2 : fly
insect 3 : mosquito
199
Output :
Exception in thread "main" java.lang.ClassCastException: prak.Mahasiswa
cannot be cast to java.lang.Comparable
at java.util.Arrays.mergeSort(Arrays.java:1144)
at java.util.Arrays.sort(Arrays.java:1079)
at prak.TestMahasiswa.main(TestMahasiswa.java:16)
Java Result: 1
Pada output program terjadi exception. Mengapa? Karena untuk mengurutkan objek
(proses mengurutkan ini dilakukan dengan cara membandingkan satu objek dengan objek
yang lain), maka objek tersebut harus mengimplementasikan interface Comparable.
Dengan mengimplementasikan interface Comparable pada sebuah class, menyebabkan
object-object tersebut bisa dibandingkan (comparable).
Kalau pada percobaan sebelumnya data yang diurutkan adalah String, dapat diurutkan
karena String mengimplementasikan interface Comparable.
public final class String extends Object implements Serializable,
Comparable<String>, CharSequence
Bentuk methodnya:
public int compareTo(Object o)
Mehod compareTo() menerima Object, sehingga kita bisa memasukkan sembarang
object, tapi harus mempunyai tipe yang sama. Kalau object yang kita masukkan adalah
object yang berbeda maka melemparkan exception java.lang.ClassCastException. Return
value dari method compareTo()
Bagaimana caranya supaya bisa menggunakan Array.sort() pada contoh kasus diatas.
Pada
class
Mahasiswa
implementasikan
interface
Comparable,
berarti
harus
201
Class Comparator
public class NamaComparator implements Comparator {
public int compare(Object o1, Object o2) {
Mahasiswa m1 = (Mahasiswa) o1;
202
C. TUGAS PENDAHULUAN
Buatlah resume 1 halaman mengenai kegunaan interface Comparator, dan 1 contoh
penggunaan dari interface Comparator.
D. PERCOBAAN
Percobaan 1 : Mengurutkan data secara descending, data tersimpan di ArrayList
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
203
Percobaan 2 : Membuat sendiri class yang akan diurutkan dan membuat objek
Comparator.
import java.util.*;
class Employee{
private int age;
private String name;
public void setAge(int age){
this.age=age;
}
public int getAge(){
return this.age;
}
public void setName(String name){
this.name=name;
}
public String getName(){
return this.name;
}
}
204
205
Percobaan 3 : Membuat class Mahasiswa dengan variabel nama dan nrp dengan
tipe String. Membuat data mahasiswa yang tersimpan di array. Selanjutnya
lakukan pengurutan data mahasiswa tersebut, apa yang terjadi? Jelaskan!
public class Mahasiswa {
private String nrp ;
private String nama ;
public Mahasiswa(String nrp, String nama) {
this.nrp = nrp;
this.nama = nama;
}
public String getNama() {
return nama;
}
public void setNama(String nama) {
this.nama = nama;
}
public String getNrp() {
return nrp;
}
public void setNrp(String nrp) {
this.nrp = nrp;
}
@Override
206
import java.util.Arrays;
public class TestMahasiswa {
public static void main(String[] args) {
Mahasiswa dataMhs[] = {new Mahasiswa("05", "Cahya"),new
Mahasiswa("04", "Rudi"),
new Mahasiswa("01", "Endah"),new Mahasiswa("03", "Rita"),new
Mahasiswa("02", "Tika")};
System.out.println("SEBELUM SORTING");
System.out.println(Arrays.toString(dataMhs));
Arrays.sort(dataMhs);
System.out.println("\nSESUDAH SORTING");
System.out.println(Arrays.toString(dataMhs));
}
}
207
Percobaan 5 : Membuat sendiri class yang akan diurutkan dan membuat objek
Comparator. Mengurutkan objek secara descending.
import
import
import
import
import
java.util.ArrayList;
java.util.Arrays;
java.util.Collections;
java.util.Comparator;
java.util.List;
Collections.sort(list);
System.out.println("Sorted list: [length: " + list.size() + "]");
System.out.println(list);
// Search for element in list
System.out.println(Collections.min(list));
// Max should be Roy
System.out.println(Collections.max(list));
208
System.out.println(Collections.min(list, comp));
// Reversed Max should be Bart
System.out.println(Collections.max(list, comp));
}
}
E. LATIHAN
209
Latihan 2 : Pada Supermarket Buah, terdapat beberapa macam buah dan informasi stock
dari buah tersebut. Terdapat menu penjualan (supermarket ke konsumen) dan pembelian
(supermarket ke pemasok) (menggunakan Comparator)
F. TUGAS
Tugas 1 : Ubahlah contoh FindDups di bawah ini menggunakan SortedSet untuk
menggantikan Set. Definisikan Comparator, sehingga pada saat melakukan sorting
berlaku non- case sensitive.
import java.util.*;
public class FindDups {
public static void main(String[] args) {
Set<String> s = new HashSet<String>();
for (String a : args)
if (!s.add(a))
System.out.println("Duplicate detected: " + a);
System.out.println(s.size() + " distinct words: " + s);
}
}
G. LAPORAN RESMI
Kerjakan hasil percobaan(D), latihan(E) dan tugas(F) di atas dan tambahkan analisa.
210
PRAKTIKUM 23
GENERICS : MEMBUAT CLASS GENERIC,
GENERIC PADA COLLECTION
A. TUJUAN PEMBELAJARAN
1. Memahami mengenai konsep generic
2. Mengetahui cara merubah dari bentuk non generic menjadi generic
3. Memahami generics pada Collection
B. DASAR TEORI
Generics merupakan cara Java dalam melakukan generalisasi terhadap tipe data tanpa
mengurangi kemampuan Java dalam menjaga keamanan penggunaan tipe data.
public class NonGen {
Object ob;
NonGen(Object o) {
ob = o;
}
Object getob() {
return ob;
}
void showType() {
System.out.println("Type of ob is " +
ob.getClass().getName());
}
}
Pada object Box, kita bisa memasukkan sembarang object karena parameter pada method
add() adalah Class Object, tapi pada saat mengambil object tersebut harus diubah
sesuai dengan tipe dari object tersebut.
public class NonGenDemo {
public static void main(String args[]) {
NonGen integerObject;
integerObject = new NonGen(88);
integerObject.showType();
int v = (Integer) integerObject.getob();
211
Terjadi exception karena pada object strOb dimasukkan object 10 tapi dengan tipe String,
tapi pada saat mengambil object, diubah menjadi tipe Integer. Tipe data tidak sesuai
sehingga menyebabkan terjadinya exception.
Output :
Type of ob is java.lang.Integer
value: 88
Exception in thread "main" java.lang.ClassCastException:
java.lang.String cannot be cast to java.lang.Integer
Type of ob is java.lang.String
value: Non-Generics Test
at com.NonGenDemo.main(NonGenDemo.java:30)
Java Result: 1
Permasalahan yang muncul dengan penyimpanan objek yang non homogeneous adalah
memerlukan banyak casting. Tidak ada pengecekan pada saat kompile, kesalahan baru
bisa terdeteksi pada saat runtime.
Objek iOb adalah objek dari class Generic, menggunakan tipe data Integer, sehingga
pada saat mengambil objek menggunakan fungsi get(), tidak perlu proses casting.
K Key
N Number
T - Type
213
V - Value
Subtyping
Jika B adalah suatu subtype dari A dan G adalah suatu tipe data generics, maka tidak
berarti G<B> adalah subtype dari G<A>.
E disebut type variabel, variabel yang diganti dengan type. Jika E adalah class, maka kita
bisa melewatkan subclass E. Jika E adalah interface maka kita bisa melewatkan class
yang mengimplementasikan E.
public class ArrayListGenericDemo {
public static void main(String[] args) {
ArrayList<String> data = new ArrayList<String>();
data.add("hello");
data.add("goodbye");
// data.add(new Date()); This won't compile!
}
214
Objek List data bertipe String, sehingga yang bisa dimasukkan hanya bertipe String saja,
jika kita memasukkan objek selain String maka error.
Cara
<U extends Number>
Menggunakan ? Wildcard
Jika kita mendeklarasikan sebuah List<aType>, isi List adalah object dengan tipe aType,
maka kita bisa menyimpan di List object dengan tipe :
Object dari class yang mengimplementasikan aType, jika aType adalah interface
Sedangkan List<?> berarti semua tipe data bisa masuk, terlalu luas bentuk lain :
List<? extends Number>
List<? extends T>
C. TUGAS PENDAHULUAN
Buatlah review mengenai :
215
D. PERCOBAAN
Percobaan 1 : Membuat class NonGeneric, membuat objek dan mengambil nilai
dari class NonGeneric
public class NonGen {
Object ob;
NonGen(Object o) {
ob = o;
}
Object getob() {
return ob;
}
void showType() {
System.out.println("Type of ob is " +
ob.getClass().getName());
}
}
216
}
T getob() {
return ob;
}
void showType() {
System.out.println("Type of T is " + ob.getClass().getName());
}
}
217
return ob2;
}
}
218
Percobaan 7 : Subtyping
public class GenSubtypingDemo {
public static void main(String args[]) {
Gen<String> gen1 = new Gen("abc");
Gen<Object> gen2 = new Gen("abc");
gen2 = gen1 ; //error pada saat dikompile
}
}
E. LATIHAN
1. Buatlah method generic untuk menghitung banyaknya bilangan prima yang tersimpan
di collection.
Input : [3,5,7,9,12,15,19]
Terdapat 4 bilangan prima.
219
return count;
}
}
3. Buatlah method generic untuk menukar posisi dua element yang tersimpan di array
public static <T> void swap(T[] a, int i, int j) {..}
F. TUGAS
Tugas 1 :
Apakah program di bawah ini dapat dikompile ? Jika tidak, jelaskan !
class Shape { /* ... */ }
class Circle extends Shape { /* ... */ }
class Rectangle extends Shape { /* ... */ }
class Node<T> { /* ... */ }
Node<Circle> nc = new Node<>();
Node<Shape> ns = nc;
220
Tugas 2 :
Apakah program di bawah ini dapat dikompile ? Jika tidak, jelaskan !
class Node<T> implements Comparable<T> {
public int compareTo(T obj) { /* ... */ }
// ...
}
Node<String> node = new Node<>();
Comparable<String> comp = node;
G. LAPORAN RESMI
Kerjakan hasil percobaan(D), latihan(E) dan tugas(F) di atas dan tambahkan analisa.
221
PRAKTIKUM 24
GENERICS : BOUNDED TYPE PARAMETER
DAN WILDCARD
A. TUJUAN PEMBELAJARAN
1. Memahami mengenai konsep generic
2. Memahami penggunaan tipe parameter yang dibatasi (Bounded Type Parameter).
3. Memahami penggunaan wildcard
B. DASAR TEORI
Generics merupakan cara Java dalam melakukan generalisasi terhadap tipe data tanpa
mengurangi kemampuan Java dalam menjaga keamanan penggunaan tipe data.
public class NonGen {
Object ob;
NonGen(Object o) {
ob = o;
}
Object getob() {
return ob;
}
void showType() {
System.out.println("Type of ob is " +
ob.getClass().getName());
}
}
Pada object Box, kita bisa memasukkan sembarang object karena parameter pada method
add() adalah Class Object, tapi pada saat mengambil object tersebut harus diubah
sesuai dengan tipe dari object tersebut.
public class NonGenDemo {
public static void main(String args[]) {
NonGen integerObject;
integerObject = new NonGen(88);
integerObject.showType();
222
Terjadi exception karena pada object strOb dimasukkan object 10 tapi dengan tipe String,
tapi pada saat mengambil object, diubah menjadi tipe Integer. Tipe data tidak sesuai
sehingga menyebabkan terjadinya exception.
Output :
Type of ob is java.lang.Integer
value: 88
Exception in thread "main" java.lang.ClassCastException:
java.lang.String cannot be cast to java.lang.Integer
Type of ob is java.lang.String
value: Non-Generics Test
at com.NonGenDemo.main(NonGenDemo.java:30)
Java Result: 1
Permasalahan yang muncul dengan penyimpanan objek yang non homogeneous adalah
memerlukan banyak casting. Tidak ada pengecekan pada saat kompile, kesalahan baru
bisa terdeteksi pada saat runtime.
T adalah type parameter yang akan diganti dengan tipe sebenarnya (Type dari T bisa
berupa class, interface atau tipe variabel lainnya).
T adalah nama dari type parameter.
public class Gen<T> {
T ob; // declare an object of type T
Gen(T o) {
ob = o;
}
T getob() {
return ob;
}
void showType() {
System.out.println("Type of T is " + ob.getClass().getName());
}
}
Objek iOb adalah objek dari class Generic, menggunakan tipe data Integer, sehingga
pada saat mengambil objek menggunakan fungsi get(), tidak perlu proses casting.
K Key
224
N Number
T - Type
V - Value
Subtyping
Jika B adalah suatu subtype dari A dan G adalah suatu tipe data generics, maka tidak
berarti G<B> adalah subtype dari G<A>.
E disebut type variabel, variabel yang diganti dengan type. Jika E adalah class, maka kita
bisa melewatkan subclass E. Jika E adalah interface maka kita bisa melewatkan class
yang mengimplementasikan E.
public class ArrayListGenericDemo {
public static void main(String[] args) {
ArrayList<String> data = new ArrayList<String>();
data.add("hello");
data.add("goodbye");
// data.add(new Date()); This won't compile!
}
225
Objek List data bertipe String, sehingga yang bisa dimasukkan hanya bertipe String saja,
jika kita memasukkan objek selain String maka error.
Cara
<U extends Number>
Menggunakan ? Wildcard
Jika kita mendeklarasikan sebuah List<aType>, isi List adalah object dengan tipe aType,
maka kita bisa menyimpan di List object dengan tipe :
Object dari class yang mengimplementasikan aType, jika aType adalah interface
Sedangkan List<?> berarti semua tipe data bisa masuk, terlalu luas bentuk lain :
List<? extends Number>
List<? extends T>
C. TUGAS PENDAHULUAN
Buatlah review mengenai :
D. PERCOBAAN
Percobaan 1 : Type parameter yang dibatasi
class Stats<T extends Number> {
226
T[] nums;
Stats(T[] o) {
nums = o;
}
double average() {
double sum = 0.0;
for (int i = 0; i < nums.length; i++)
sum += nums[i].doubleValue();
return sum / nums.length;
}
}
227
}
}
228
229
double w = dob.average();
System.out.println("dob average is " + w);
Float fnums[] = { 1.0F, 2.0F, 3.0F, 4.0F, 5.0F };
Stats<Float> fob = new Stats<Float>(fnums);
double x = fob.average();
System.out.println("fob average is " + x);
// See which arrays have same average.
System.out.print("Averages of iob and dob ");
if(iob.sameAvg(dob))
System.out.println("are the same.");
else
System.out.println("differ.");
System.out.print("Averages of iob and fob ");
if(iob.sameAvg(fob))
System.out.println("are the same.");
else
System.out.println("differ.");
}
}
230
}
}
// Three-dimensional coordinates.
class ThreeD extends TwoD {
int z;
ThreeD(int a, int b, int c) {
super(a, b);
z = c;
}
}
// Four-dimensional coordinates.
class FourD extends ThreeD {
int t;
FourD(int a, int b, int c, int d) {
super(a, b, c);
t = d;
}
}
231
//
//
232
E. LATIHAN
1. Apakah program di bawah ini dapat dikompile ? Jika tidak, jelaskan !
public static void print(List<? extends Number> list) {
for (Number n : list)
System.out.print(n + " ");
System.out.println();
}
2. Buatlah method generic untuk mencari nilai maksimul pada range [begin, end] dari
list.
public static <T extends Object & Comparable<? super T>>
T max(List<? extends T> list, int begin, int end) {...}
F. TUGAS
Tugas 1 :
Buatlah interface Box seperti dibawah ini! Dan buatlah class BoxImpl yang
mengimplementasikan interface Box.
public interface Box<T> {
public T get();
public void put(T element);
public void put(Box<T> box);
}
233
// ERROR
}
}
Perbaiki interface Box seperti di bawah ini ! Jelaskan mengapa dengan perubahan seperti
ini program yang sebelumnya error menjadi tidak error ?
public interface Box<T> {
public T get();
public void put(T element);
public void put(Box<? extends T> box);
}
234
Ubahlah menjadi bentuk seperti di bawah ini ! Jelaskan mengapa method containsSame()
masih error ?
public class TestBoxImpl {
public static EqualityComparator<Object> sameObject = new
EqualityComparator<Object>() {
public boolean compare(Object o1, Object o2) {
return o1 == o2;
}
};
public static void main(String[] args) {
Box<Number> nBox = new BoxImpl<Number>();
Box<Integer> iBox = new BoxImpl<Integer>();
//sebelumnya error menjadi OK
nBox.put(iBox);
boolean b = nBox.containsSame(iBox, sameObject);
}
}
Ubahlah interface Box menjadi seperti di bawah ini ! Ubah pula pada class BoxImpl
public interface Box<T> {
public T get();
public void put(T element);
public void put(Box<? extends T> box);
boolean containsSame(Box<? extends T> other,
EqualityComparator<? super T> comparator);
public interface EqualityComparator<T> {
public boolean compare(T first, T second);
235
}
}
G. LAPORAN RESMI
Kerjakan hasil percobaan(D), latihan(E) dan tugas(F) di atas dan tambahkan analisa.
236
PRAKTIKUM 25
INPUT DAN OUTPUT
A. TUJUAN PEMBELAJARAN
1. Memahami konsep Input/Output di Java
2. Mengenal kelas kelas yang berhubungan dengan IO.
3. Mampu membuat program yang menerapkan konsep Input Output.
B. DASAR TEORI
Dalam pemrograman Java, Stream and File bukanlah istilah yang asing didengar. Stream and
File merupakan proses penulisan dan pembacaan data sering yang di sebut dengan proses input
dan output, dimana penulisan data berarti mengalirkan data ke output dan menerima atau
mendapatkan data dari input.
Penerapan dalam pemrograman java ini selalu melakukan proses input dan output yaitu
memindahkan byte data dari satu system ke system lain. Data yang dibaca dari server yang
mengirim data tidak berbeda dengan membaca data dari sebuah file. Java mengangani I/O secara
berbeda dari bahasa-bahasa pemrograman yang lainnya.
STREAM
Stream merupakan dasar operasi input-output ( I/O ) dalam Java yang menggunakan package
java.io sebagai package utama. Stream adalah representasi abstrak dari input dan output device,
dimana aliran bytes akan ditransfer seperti file dalam harddisk, file pada sistem remote atau
printer. Kita dapat membaca data dari input stream, yang dapat berupa file, keyboard atau
komputer remote. Dalam Stream ini terdapat proses input dan output sebagai berikut :
1. Input Stream
237
FilterOutputStream
:merupakan
superclass
dari
subclass-subclass
seperti
PipedOutputStream
Data Output dalam stream ini merupakan class yang menyediakan cara praktis untuk menuliskan
tipe data primitif ke output stream yang lebih mudah digunakan dalam penyelesaian program
dalam java.
238
FILE
File merupakan data yang siap diinput dan diproses dalam Stream yang merupaka data operasi
dalam pemrograman. Keterkaitan antara keduanya, proses Input dan Ouput tetap dilakukan
walau dengan cara yang berbeda, dari subclass maupun method yang digunakan.
239
File Reader merupakan class yang dapat digunakan untuk membaca file teks. Konstruktor dari
FileReader :
FileReader(File objekfile);
FileReader(String pathkefile);
Method yang digunakan :
Read(char[] array);
Read(char[] array, int offset, int length);
C. TUGAS PENDAHULUAN
Pelajari konsep IO Java pada Java API documentation
D. PERCOBAAN
Percobaan 1: Melihat direktori
240
241
242
243
E. LATIHAN
1. Buat program untuk menghitung jumlah kemunculan suatu karakter missal karakter e
pada text file. Contoh text berikut disimpan pada file example.txt.
244
F. TUGAS
Buatlah tabel mengenai kelas Input Output Java
G. LAPORAN RESMI
Kumpulkan hasil percobaan di atas dan tambahkan analisa untuk tiap percobaan, latihan, dan
tugas yang telah dibuat.
245
PRAKTIKUM 26
INPUT DAN OUTPUT 2
A. TUJUAN PEMBELAJARAN
1. Memahami konsep Input dan Output di Java
2. Mengenal kelas kelas yang berhubungan dengan IO.
3. Mampu membuat program yang menerapkan konsep Input Output.
B. DASAR TEORI
Dalam pemrograman Java, Stream and File bukanlah istilah yang asing didengar. Stream and
File merupakan proses penulisan dan pembacaan data sering yang di sebut dengan proses input
dan output, dimana penulisan data berarti mengalirkan data ke output dan menerima atau
mendapatkan data dari input.
Penerapan dalam pemrograman java ini selalu melakukan proses input dan output yaitu
memindahkan byte data dari satu system ke sistem lain. Data yang dibaca dari server yang
mengirim data tidak berbeda dengan membaca data dari sebuah file. Java mengangani I/O secara
berbeda dari bahasa-bahasa pemrograman yang lainnya.
STREAM
Stream merupakan dasar operasi input-output ( I/O ) dalam Java yang menggunakan package
java.io sebagai package utama. Stream adalah representasi abstrak dari input dan output device,
dimana aliran bytes akan ditransfer seperti file dalam harddisk, file pada sistem remote atau
printer. Kita dapat membaca data dari input stream, yang dapat berupa file, keyboard atau
komputer remote. Dalam Stream ini terdapat proses input dan output sebagai berikut :
1. Input Stream
246
FilterOutputStream
:merupakan
superclass
dari
subclass-subclass
seperti
PipedOutputStream
Data Output dalam stream ini merupakan class yang menyediakan cara praktis untuk menuliskan
tipe data primitif ke output stream yang lebih mudah digunakan dalam penyelesaian program
dalam java.
247
FILE
File merupakan data yang siap diinput dan diproses dalam Stream yang merupaka data operasi
dalam pemrograman. Keterkaitan antara keduanya, proses Input dan Ouput tetap dilakukan
walau dengan cara yang berbeda, dari subclass maupun method yang digunakan.
248
File Reader merupakan class yang dapat digunakan untuk membaca file teks. Konstruktor dari
FileReader :
FileReader(File objekfile);
FileReader(String pathkefile);
Method yang digunakan :
Read(char[] array);
Read(char[] array, int offset, int length);
C. TUGAS PENDAHULUAN
Pelajari konsep IO Java pada Java API documentation
249
D. PERCOBAAN
Percobaan 1 : Mencari file dengan ekstensi Tertentu
250
251
252
253
254
255
E. LATIHAN
Latihan 1 : Modifikasi program berikut agar dapat di kompile
F. TUGAS
Buatlah tabel mengenai kelas Input Output Java
G. LAPORAN RESMI
Kumpulkan hasil percobaan di atas dan tambahkan analisa untuk tiap percobaan, latihan, dan
tugas yang telah dibuat.
256
PRAKTIKUM 27
ANTAR MUKA GRAFIS
A.
TUJUAN PEMBELAJARAN
1. Memahami konsep Graphical User Interface (GUI).
2. Mampu membuat program yang menerapkan konsep GUI.
3. Mampu membuat program berbasis GUI yang melibatkan penggunaan komponen GUI.
B.
DASAR TEORI
Ciri utama dari tampilan model ini adalah seluruh data ditampilkan dalam bentuk teks (text
based). Model tampilan ini memiliki kelemahan yaitu lebih sulit membuat tampilan program
menjadi indah dan menarik, dikarenakan kurangnya dukungan warna. Monitor model teks hanya
mendukung warna sampai 16, berbeda dengan model grafik yang mendukung warna sampai 224
(2 pangkat 24) bahkan bisa lebih, tergantung graphic-card yang digunakan.
Bab ini akan membahas tentang Graphical User Interface (GUI), suatu metode untuk antar-muka
komputer berbasis grafis. GUI digunakan dalam pembuatan program aplikasi dengan
mempertimbangkan dua aspek yaitu keindahan tampilan dan kemudahan penggunaan program.
Keindahan tampilan akan mempengaruhi orang untuk melihat dan merasa senang terhadap
program yang kita buat, dan kemudahan penggunaan program akan berdampak pada ketertarikan
orang untuk terus menggunakan program yang kita buat. Di dunia bisnis, hal ini merupakan
target jangka panjang.
Materi dalam bab ini akan disajikan secara sistematis dan terstruktur, mulai dari pengenalan
objek utama, penambahan objek-objek pendukung (lebih dikenal sebagai komponen) sampai
interaksi komputer dengan user. Untuk melengkapi uraian tentang GUI ini, pada akhir bab kita
membuat sebuah project yang diberi nama Kalkulator Mini". Project ini menyajikan pembuatan
sebuah kalkulator sederhana yang bisa digunakan untuk melakukan proses perhitungan
257
matematika biasa. Beberapa fungsi yang rumit dari kalkulator sesungguhnya tidak dimasukkan
dalam project ini. Anda bisa mengembangkan project ini secara mandiri.
Pembahasan kita mulai class JFrame. Dalam lingkup Java, sebuah interface window dikenal
dengan sebutan frame. Bagi anda yang pernah menggunakan software Delphi (bahasa visual
untuk Pascal) tentu pernah menjumpai komponen TFrame. Perlu diingat bahwa frame dalam
lingkup Delphi berbeda dengan frame dalam lingkup Java. Frame dalam lingkup Java identik
dengan TForm di Delphi atau Form di Visual Basic. Perlu juga diketahui bahwa seluruh
pembahasan pada bab ini mengacu kepada sistem operasi Windows, tepatnya Windows 2000
atau Windows XP. Anda yang menggunakan sistem operasi lain seperti UNIX atau LINUX
mungkin akan melihat beberapa perbedaan tampilan yang tidak mengganggu.
Jika anda membuka program Windows Explorer maka secara tidak sadar anda telah
mengaktifkan sebuah window (atau frame). Frame adalah sebuah objek yang merepresentasikan
suatu area di layar yang berisi sejumlah objek lain untuk menyampaikan informasi kepada user.
Kita bisa menambahkan sejumlah komponen lain ke dalam sebuah framw dengan tujuan yang
sesuai dengan fungsi komponen tersebut.
Sebuah objek yang merupakan instansiasi dari class JFrame bisa dipanggil melalui dua cara,
yaitu:
1. Dipanggil melalui class utama yang mengandung fungsi main().
2. Dipanggil melalui class lain yang merupakan class tersendiri turunan dari JFrame.
Manajemen Pemasangan Komponen
Manajemen pemasangan komponen (layout management) diperlukan untuk mengatur
penempatan komponen di dalam frame agar bisa menghasilkan bentuk interface yang menarik.
Penggunaan layout-manager dalam mengatur letak komponen juga akan memudahkan kita
menempelkan komponen pada frame.
Java menyediakan sejumlah metode dalam mengatur penempelan komponen ke dalam frame.
Pada bagian ini kita hanya akan membahas tiga metode: FlowLayout, GridLayout dan
BorderLayout. Masing-masing metode memiliki keunggulan dan kekurangan dibandingkan
dengan metode yang lain. Hal yang menarik adalah kita tidak harus terpaku pada satu metode
258
dalam mengatur pemasangan komponen; kita boleh mengkombinasikan beberapa metode agar
pemasangan komponen menjadi lebih baik dan mudah.
Method setLayout(LayoutManager) digunakan untuk mengatur jenis metode yang digunakan
pada saat memasang komponen. Method ini bisa kita gunakan pada class JFrame, JPanel dan
Container. Pembahasan selanjutnya akan menunjukkan penggunaan berbagai metode pengaturan
penempelan komponen pada frame.
C.
TUGAS PENDAHULUAN
1. Pelajari layout layout yang bisa digunakan untuk mengatur tata letak komponen,
kemudian buat daftar mengenai layout tersebut, beserta penjelasan dan contoh
tampilannya.
D.
PERCOBAAN
import javax.swing.JFrame;
//-------------------------// Definisi class MYFRAME
//-------------------------class MyFrame extends JFrame
{
MyFrame()
{
super ("Contoh frame");
show();
}
}
//--------------// Class utama
//--------------public class JFrame_4
{
public static void main (String[] args)
{
new MyFrame();
}
}
259
import javax.swing.JFrame;
//-------------------------// Definisi class MYFRAME
//-------------------------class MyFrame extends JFrame
{
MyFrame()
{
super ("Contoh frame");
setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
show();
}
}
//--------------// Class utama
//--------------public class JFrame_5
{
public static void main (String[] args)
{
new MyFrame();
}
}
import javax.swing.JFrame;
//-------------------------// Definisi class MYFRAME
//-------------------------class MyFrame extends JFrame
{
MyFrame()
{
super ("Contoh frame");
setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
setLocation (200,100);
setSize (300,100);
setResizable (false);
show();
}
}
//---------------
260
21
22
23
24
25
26
27
28
29
// Class utama
//--------------public class JFrame_8
{
public static void main (String[] args)
{
new MyFrame();
}
}
import javax.swing.*;
import java.awt.*;
class MyFrame extends JFrame
{
private Container container = new Container();
private JButton tombol = new JButton ("Tombol");
MyFrame()
{
super ("Strategi 'Tempel-Langsung'");
setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
setSize (250,80);
setLocation (100,100);
container = getContentPane();
container.add (tombol);
show();
}
}
public class TempelLangsung_1
{
public static void main (String[] args)
{
new MyFrame();
}
}
import javax.swing.*;
import java.awt.*;
261
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import javax.swing.*;
import java.awt.*;
class MyFrame extends JFrame
{
private Container container = new Container();
private JButton tombol = new JButton ("Tombol");
private JLabel tulisan = new JLabel ("Tulisan");
MyFrame()
{
super ("GridLayout 1-baris 2-kolom");
setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
setSize (250,80);
setLocation (100,100);
262
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
container = getContentPane();
container.setLayout (new GridLayout(1,2));
container.add (tulisan);
container.add (tombol);
show();
}
}
public class GridLayout_1
{
public static void main (String[] args)
{
new MyFrame();
}
}
import javax.swing.*;
import java.awt.*;
class MyFrame extends JFrame
{
private Container container = new Container();
private
private
private
private
private
JButton
JButton
JButton
JButton
JButton
MyFrame()
{
super ("Demo BorderLayout");
setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
setSize (250,130);
setLocation (100,100);
container = getContentPane();
container.setLayout (new BorderLayout());
container.add
container.add
container.add
container.add
container.add
(tombolUtara, BorderLayout.NORTH);
(tombolSelatan, BorderLayout.SOUTH);
(tombolTimur, BorderLayout.EAST);
(tombolBarat, BorderLayout.WEST);
(tombolTengah, BorderLayout.CENTER);
show();
263
32
33
34
35
36
37
38
39
40
41
}
}
public class BorderLayout_1
{
public static void main (String[] args)
{
new MyFrame();
}
}
import javax.swing.*;
import java.awt.*;
class MyFrame extends JFrame
{
private Container container = new Container();
private JPanel jPanel = new JPanel();
private JLabel labelUserName =
new JLabel ("User name :");
private JLabel labelPassword =
new JLabel ("Password :");
private JTextField textFieldUserName =
new JTextField ("", 8);
private JTextField textFieldPassword =
new JTextField ("", 8);
private JButton buttonOK = new JButton ("OK");
private JButton buttonCancel = new JButton ("Cancel");
MyFrame()
{
super ("Demo JPanel - Login");
setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
setSize (250,10);
setLocation (100,100);
jPanel.setLayout (new GridLayout (3,2));
jPanel.add (labelUserName);
jPanel.add (textFieldUserName);
jPanel.add (labelPassword);
jPanel.add (textFieldPassword);
jPanel.add (buttonOK);
jPanel.add (buttonCancel);
container = getContentPane();
container.add (jPanel);
264
35
36
37
38
39
40
41
42
43
44
45
E.
show();
}
}
public class JPanel_2
{
public static void main (String[] args)
{
new MyFrame();
}
}
LATIHAN
265
TUGAS
G.
LAPORAN RESMI
Kumpulkan hasil percobaan di atas dan tambahkan analisa untuk tiap percobaan, latihan, dan
tugas yang telah dibuat.
266
PRAKTIKUM 28
PENANGANAN EVENT
A.
TUJUAN PEMBELAJARAN
1. Memahami konsep Graphical User Interface (GUI).
2. Mampu membuat program yang menerapkan konsep GUI.
3. Mampu membuat program berbasis GUI yang melibatkan penggunaan komponen GUI.
4. Mampu membuat program berbasis GUI yang bisa menerima respon user, baik melalui
mouse maupun keyboard.
B.
DASAR TEORI
User bisa berinteraksi dengan program aplikasi melalui sejumlah komponen. Sebagai contoh,
setelah memasukkan data-data yang diperlukan pada proses login, kita menekan sebuah button
untuk memasukkan data-data tersebut ke dalam program. Dalam hal ini objek button tersebut
menerima event click. Tidak hanya objek button yang bisa menerima event. Objek lain seperti
textfield juga bisa menerima event, hanya saja jenis event yang terjadi pada objek textfield
berbeda dengan objek button. Jadi kita harus memahami jenis event apa yang bisa dikenakan
terhadap suatu jenis objek tertentu.
Java menerima event melalui sebuah interface. Setiap komponen yang akan menerima suatu
event harus disetting terlebih dahulu agar terasosiasi dengan event tersebut. Tanpa didahului
dengan proses asosiasi ini, sebuah komponen tidak akan bisa "menangkap" (Java memberi istilah
"mendengar" / listening) suatu event walaupun sesungguhnya bisa. Sebagai contoh, jika kita
memasang sebuah objek button untuk membatalkan suatu proses, sebelum kita mengasosiasi
objek tersebut dengan event yang menangani click mouse maka button tersebut tidak akan
267
memberikan efek pembatalan proses pada saat kita melakukan proses click tombol mouse di
atasnya.
Bagian ini membahas tentang bagaimana proses interaksi antara user dan program melalui
sejumlah komponen dapat terjadi. Dari sejumlah interface untuk menangani event yang
disediakan oleh Java, kita akan membahas 4 (empat) saja yang kami rasa mudah dimengerti
sebagai pengantar untuk memahami interface-interface yang lain. Keempat interface tersebut
adalah:
1. Interface ActionListener
2. Interface MouseListener
3. Interface MouseMotionListener
4. Interface KeyListener
Interface pertama akan menangkap event yang ditimbulkan oleh mouse dan keyboard, interface
kedua dan ketiga akan menangkap event yang ditimbulkan oleh mouse dan interface keempat
akan menangkap event yang ditimbulkan oleh keyboard. Mouse dan keyboard adalah dua piranti
yang sudah sangat umum digunakan pada komputer masa kini.
Bentuk umum penggunaan interface adalah:
[public|private] class NamaClass
[extends BaseClass]
[implements NamaInterface]
{
isi class
}
Implementasi sebuah interface mengharuskan kita memasukkan sejumlah method yang akan
digunakan untuk melakukan suatu proses dalam interface tersebut. Pada bagian selanjutnya anda
akan menjumpai method apa saja yang harus disediakan jika kita mengimplementasikan suatu
interface.
Interface ActionListener
Interface ActionListener berguna untuk menerima event yang ditimbulkan oleh mouse atau
keyboard. Pada prakteknya interface ini akan memeriksa objek yang terkena event, tidak perduli
alat mana yang menimbulkan event tersebut. Sebuah objek button misalnya, mungkin akan
268
mengalami event click dari mouse atau event enter dari keyboard, yang jelas keduanya
merupakan event dari button. Button inilah yang diperiksa oleh ActionListener.
Class yang mengimlementasikan interface ActionPerformed harus mengandung method bernama
actionPerformed(ActionEvent) sekalipun di dalamnya tidak ada instruksi apa pun. Kita bisa
memeriksa objek yang menimbulkan event di dalam method ini.
Seperti telah dijelaskan di depan, agar sebuah objek bisa "mendengar" terjadinya event, objek
tersebut harus diasosiasikan dengan interface yang berhubungan dengan event tersebut. Java
menyediakan method addActionListener(ActionListener) untuk mengasosiasikan sebuah objek
dengan interface ActionListener. Method ini membutuhkan parameter berupa class yang
mengimplementasikan interface ActionListener. Jika class tersebut merupakan class yang sama
dengan tempat objek dimaksud, maka parameter ini cukup diberi nilai this.
Interface MouseListener
Interface MouseListener digunakan untuk menangkap event yang diakibatkan oleh mouse. Event
yang dibangkitkan oleh keyboard tidak akan memberi efek, kecuali kita menggunakan interface
ActionListener bersamaan dengan interface MouseListener. Dan sebenarnya anda boleh
menggunakan sejumlah interface sesuai keperluan, tidak terbatas harus satu interface saja.
Objek yang akan mendengar event dari MouseListener diasosiasikan menggunakan method
addMouseListener(MouseListener). Class yang mengimplementasikan interface MouseListener
harus menyediakan 5 (lima) method, walaupun tidak ada isinya. Kelima method tersebut adalah:
1. Method mouseClicked(MouseEvent), dipanggil pada saat tombol mouse ditekan lalu
dilepas.
2. Method mouseEntered(MouseEvent), dipanggil pada saat kursor mouse memasuki area
komponen.
3. Method mouseExited(MouseEvent), dipanggil pada saat kursor mouse meninggalkan
area komponen.
4. Method mousePressed(MouseEvent), dipanggil pada saat tombol mouse ditekan.
5. Method mouseReleased(MouseEvent), dipanggil pada saat tombol mouse dilepas.
Kita bisa katakan bahwa method mouseClicked(MouseEvent) merupakan perpaduan antara
mousePressed(MouseEvent) dan mouseReleased(MouseEvent). Berbagai method pada class
269
MouseEvent bisa kita gunakan dalam proses event mouse ini, misalnya mendeteksi posisi kursor
mouse saat ini.
Interface MouseMotionListener
Java menyediakan interface MouseMotionListener untuk mendukung MouseListener. Interface
MouseMotionListener menyediakan dua method yang akan memantau pergerakan mouse yaitu
mouseDragged(MouseEvent) dan mouseMoved(MouseEvent).
Berikut ini urutan method yang dieksekusi setelah event mouse ditangkap, diasumsikan kita
melibatkan interface MouseListener dan MouseMotionListener.
1. Method mouseEntered(MouseEvent) : dijalankan pada saat pointer mouse digerakkan
memasuki area objek.
2. Method mouseMoved(MouseEvent) : dijalankan pada saat pointer mouse digerakkan
melintasi objek dalam kondisi tidak ada tombol mouse yang ditekan.
3. Method mousePressed(MouseEvent) : dijalankan pada saat tombol mouse ditekan.
4. Method mouseDragged(MouseEvent) : dijalankan pada saat pointer mouse digeser
melintasi objek sambil tombol mouse ditekan.
5. Method mouseClicked(MouseEvent) : dijalankan pada saat tombol mouse dilepas setelah
ditekan dengan rentang waktu yang tidak terlalu lama.
6. Method mouseReleased(MouseEvent) : dijalankan pada saat tombol mouse dilepas.
7. Method mouseExited(MouseEvent)
meninggalkan area objek. Setelah pointer mouse berada di luar objek, segala macam
event mouse tidak diperhatikan lagi, sampai pointer mouse memasuki area objek.
270
Interface KeyListener
Setelah mengetahui cara menghandle event yang dibangkitkan oleh piranti mouse, sekarang kita
akan membahas bagaimana caranya menghandle event yang dibangkitkan oleh piranti keyboard.
Interface KeyListener disediakan untuk menangani event yang terjadi akibat tindakan dari
keyboard, misalnya jika terjadi penekanan tombol ENTER atau ESCAPE.
Interface KeyListener mengharuskan kehadiran tiga method:
C.
TUGAS PENDAHULUAN
1. Pelajari event event handling yang berhubungan dengan User Interface, kemudian
buatlah ringkasan kelas/interface event handling tersebut beserta kegunaannya.
D.
PERCOBAAN
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class MyFrame extends JFrame implements ActionListener
{
private Container container = new Container();
private Button tombolCek = new Button ("Cek");
private TextField inputan = new TextField ("", 8);
private int angkaAcak = (int)(Math.random()*10);
MyFrame()
{
super ("Tebak angka");
setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
setSize (200,65);
271
18
19
20
21
22
23
24
setLocation (100,100);
tombolCek.addActionListener (this);
container = getContentPane();
container.setLayout (new BorderLayout());
container.add (new JLabel("Tebak angka antara 0-9"),
BorderLayout.NORTH);
container.add (new JLabel ("Tebakan anda :"),
BorderLayout.WEST);
container.add (inputan, BorderLayout.CENTER);
container.add (tombolCek, BorderLayout.EAST);
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
show();
}
public void actionPerformed (ActionEvent e)
{
Object objek = e.getSource();
if (objek == tombolCek)
{
int jawaban = Integer.parseInt(inputan.getText());
if (jawaban == angkaAcak)
JOptionPane.showMessageDialog (null,
"Benar.. Anda memang peramal jitu");
else
JOptionPane.showMessageDialog (null,
"Jawaban anda salah..");
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
}
}
}
// ------------// Class utama
// ------------public class ActionListener_1
{
public static void main (String[] args)
{
new MyFrame();
}
}
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
272
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
273
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
Percobaan 3: Memantau kondisi mouse dan menerima event pada saat mouse digerakkan
1
import javax.swing.*;
274
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import java.awt.*;
import java.awt.event.*;
class MyFrame extends JFrame
implements MouseMotionListener
{
private Container container = new Container();
private JLabel labelDragged = new JLabel ("");
private JLabel labelMoved = new JLabel ("");
MyFrame()
{
super ("Test MouseListener");
setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
setSize (250,80);
setLocation (100,100);
// --------------------------------------------// mengasosiasi seluruh objek dg event-handler
// --------------------------------------------labelDragged.addMouseMotionListener (this);
labelMoved.addMouseMotionListener (this);
// -----------------------------// penambahan komponen ke frame
// -----------------------------container = getContentPane();
container.setLayout (new GridLayout (2,2));
container.add (new JLabel ("mouseDragged :"));
container.add (labelDragged);
container.add (new JLabel ("mouseMoved :"));
container.add (labelMoved);
show();
}
public void mouseDragged (MouseEvent e)
{
labelDragged.setText ("AKTIF");
labelMoved.setText ("");
}
public void mouseMoved (MouseEvent e)
{
labelDragged.setText ("");
labelMoved.setText ("AKTIF");
}
}
// ------------// Class utama
// ------------public class MouseMotionListener_1
275
55
56
57
58
59
60
{
public static void main (String[] args)
{
new MyFrame();
}
}
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class MyFrame extends JFrame implements KeyListener
{
private Container container = new Container();
private JTextField textField = new JTextField ("", 8);
MyFrame()
{
super ("Tebak angka");
setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
setSize (250,150);
setLocation (100,100);
// --------------------------------------------// mengasosiasi seluruh objek dg event-handler
// --------------------------------------------textField.addKeyListener (this);
// -----------------------------// penambahan komponen ke frame
// -----------------------------container = getContentPane();
container.setLayout (new GridLayout (3,1));
container.add (new JPanel());
container.add (textField);
container.add (new JPanel());
show();
}
public void keyTyped (KeyEvent e)
{
if (e.getKeyCode() == e.VK_ENTER)
textField.setText("ENTER ->> ditekan + dilepas");
}
public void keyPressed (KeyEvent e)
{
276
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
E.
if (e.getKeyCode() == e.VK_ENTER)
textField.setText ("Tombol ENTER ->> ditekan");
}
public void keyReleased (KeyEvent e)
{
if (e.getKeyCode() == e.VK_ENTER)
textField.setText ("Tombol ENTER ->> dilepas");
}
}
// ------------// Class utama
// ------------public class KeyListener_1
{
public static void main (String[] args)
{
new MyFrame();
}
}
LATIHAN
Latihan 1: Membuat tampilan input data dan menampilkan hasil input ketika ditekan OK
277
Latihan 2 : Buat Tampilan dan event handling yang sesuai, seperti pada gambar
Latihan 3: Modifikasi latihan 2 untuk pembelian tiket online pada konser music
F.
LAPORAN RESMI
Kumpulkan hasil percobaan di atas dan tambahkan analisa untuk tiap percobaan, latihan, dan
tugas yang telah dibuat.
278
PRAKTIKUM 29
GUI: KALKULATOR MINI
A.
TUJUAN PEMBELAJARAN
1. Memahami konsep Graphical User Interface (GUI).
2. Mampu membuat program yang menerapkan konsep GUI.
3. Mampu membuat program berbasis GUI yang melibatkan penggunaan komponen GUI.
4. Mampu membuat program berbasis GUI yang bisa menerima respon user, baik melalui
mouse maupun keyboard.
B.
DASAR TEORI
Project
ini
kami
beri
nama
Kalkulator
Mini,
sebuah
project
sederhana
yang
mengimplementasikan teori GUI di Java. Dari namanya sudah bisa ditebak kegiatan utama dari
project ini adalah membuat sebuah program aplikasi yang mensimulasikan sebuah kalkulator
dengan kemampuan yang sangat minim. Kalkulator ini didesain untuk bisa menangani beberapa
operasi matematika biasa, meliputi penjumlahan, pengurangan, perkalian, pembagian dan
perpangkatan. Karena buku ini tidak didesain sebagai buku acuan tentang materi Struktur Data,
maka teknik yang digunakan untuk menangani proses matematika tersebut tidak terlalu rumit.
Program akan menerima tiga inputan :
Data pertama berupa data numerik yang bertindak sebagai data pertama yang akan
diproses.
Data kedua berupa data karakter yang menyatakan jenis proses yang akan dilakukan.
Data ketiga berupa data numerik menyatakan data kedua yang akan diproses.
Seluruh data inputan tersebut diberikan melalui pengaktifan sejumlah objek button yang tersedia
di layar. Kita tidak melakuan pengetikan, misalnya angka, untuk memasukkan data numerik,
279
sehingga objek textfield yang digunakan kita pasifkan. Method setEnabled(boolean) digunakan
secara luas untuk tujuan mempasifkan suatu objek agar tidak bisa diakses.
Desain Tampilan
Kalkulator ini hanya memiliki 5 (lima) button untuk lima proses matematika, yaitu "+", "-", "*",
"/" dan "^". Sebagai tambahan, sebuah objek berjenis JCheckBox disediakan untuk mengatur
penggunaan karakter pemisah ribuan
Area tampilan
Pemisah ribuan
Hapus
Batal
7
8
4
5
1
2
0
.
Area informasi
Ulang
9
6
3
=
^
*
/
+
Exit
"Area tampilan" merupakan objek berjenis JTextField, tempat dimana angka-angka yang diclick akan ditampilkan. Area ini juga digunakan sebagai tempat untuk menampilkan hasil
proses.
"Pemisah ribuan" merupakan objek berjenis JCheckBox yang digunakan sebagai flag atau
tanda apakah kita akan menggunakan pemisah ribuan atau tidak. Untuk deretan angka yang
cukup banyak, penggunaan pemisah ribuan akan sangat membantu kita membaca data yang
tersaji.
"Hapus" merupakan sebuah objek berjenis JButton yang digunakan untuk menghapus data
yang sedang terlihat di layar satu karakter demi satu karakter dari belakang.
"Batal" merupakan sebuah objek berjenis JButton yang digunakan untuk membatalkan data
yang kali dimasukkan terakhir. Jika button ini di-click pada saat kita memasukkan data
kedua, maka data kedua akan dibatalkan sedangkan data pertama tetap dianggap valid.
"Ulang" merupakan sebuah objek berjenis JButton yang digunakan untuk membatalkan
seluruh data yang telah dimasukkan. Dalam bagan automata di atas respon dari button ini
sama dengan tindakan "cancel".
"Exit" merupakan sebuah objek berjenis JButton yang digunakan untuk mengakhiri jalannya
program. Window akan ditutup dan kendali dikembalikan ke sistem operasi.
280
".", "0" sampai "9" merupakan objek berjenis JButton yang digunakan untuk memasukkan
data numerik dan tanda pemisah desimal pada bilangan pecahan.
"=" merupakan objek berjenis JButton yang digunakan untuk memerintahkan komputer
melakukan proses sesuai dengan data-data yang diberikan, lalu menampilkan hasilnya di
"Area tampilan".
"Area informasi" merupakan objek berjenis JLabel yang kita gunakan untuk menampilkan
informasi biasa, misalnya nama kita.
C.
TUGAS PENDAHULUAN
1. Pelajari kelas kelas di Java yang berhubungan dengan User Interfaces. Kemudan
buatlah daftar kelasnya dan fungsi kelas tersebut.
D.
PERCOBAAN
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class MiniCalculator extends JFrame
implements ActionListener
{
private JPanel panelAtas = new JPanel();
private JPanel panelTengah = new JPanel();
private JPanel panelBawah = new JPanel();
private JTextField tampilan = new JTextField ("");
private JCheckBox pemisahRibuan =
new JCheckBox ("Pemisah ribuan", true);
private Button[] tombolFungsi =
{ new Button ("Hapus"),
new Button ("Ulang"),
new Button ("7"),
new Button ("9"),
new
new
new
new
Button
Button
Button
Button
("Batal"),
("^"),
("8"),
("*"),
281
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
new
new
new
new
new
new
("4"),
("6"),
("1"),
("3"),
("0"),
("="),
new
new
new
new
new
new
Button
Button
Button
Button
Button
Button
("5"),
("/"),
("2"),
("-"),
("."),
("+") };
56
57
58
59
60
61
Button
Button
Button
Button
Button
Button
show();
}
282
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
283
107
108
109
110
111
112
113
114
115
116
117
118
panelTengah.add (tombolFungsi[i]);
}
}
//-----------------------// Mengatur panel bawah
//-----------------------private void setPanelBawah()
{
tombolExit.addActionListener (this);
informasi.setFont (
new Font ("arial", Font.BOLD, 11));
tombolExit.setFont (
new Font ("arial", Font.BOLD, 11));
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
284
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
285
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
= dataPertama + dataKedua;
= dataPertama - dataKedua;
= dataPertama * dataKedua;
= dataPertama / dataKedua;
286
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
break;
case '^' : dataHasil = Math.pow (dataPertama,
dataKedua);
}
if (pemisahRibuan.isSelected())
tampilan.setText (pisahkanRibuan (dataHasil));
else
tampilan.setText (Double.toString (dataHasil));
entryPertama = true;
awalKetikan = true;
}
//-------------------------// Menambah tanda desimal
//-------------------------private void tambahTandaDesimal()
{
if (!entryDesimal && !awalKetikan)
{
entryDesimal = true;
StringBuffer data =
new StringBuffer (tampilan.getText());
tampilan.setText (data.toString() + '.');
}
}
//------------------------------// Action terhadap respon user
//------------------------------public void actionPerformed (ActionEvent event)
{
Object objek = event.getSource();
int lokasi = 0;
if (objek == tombolExit)
System.exit (0);
else
{
for ( ; lokasi<20; lokasi++)
if (objek == tombolFungsi[lokasi])
break;
switch (lokasi)
{
287
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
case
case
case
case
case
case
case
case
case
case
case
case
case
case
case
case
case
case
case
case
0 : hapusKarakter();
break;
1 : batalkanData();
break;
2 : resetNilai();
tampilan.setText ("");
break;
16 : ;
12 : ;
13 : ;
14 : ;
8 : ;
9 : ;
10 : ;
4 : ;
5 : ;
6 : updateData (lokasi);
break;
3 : ;
7 : ;
11 : ;
15 : ;
19 : updateOperator (lokasi);
break;
18 : prosesPerhitungan();
break;
17 : tambahTandaDesimal();
break;
}
}
}
}
//--------------// Class utama
//--------------public class CobaCalculator
{
public static void main (String[] args)
{
new MiniCalculator();
}
}
288
E.
LATIHAN
289
Latihan 3: Buatlah sebuah aplikasi yang menampilkan pilihan checkbox dan radiobutton
seperti pada gambar
Latihan 4: Modifikasi latihan 2 sehingga aplikasi dapat mengubah jarak dari km ke mil.
Petunjuk : Berikan tambahan pilihan konversi berupa radio button.
Latihan 5: Aplikasi konversi suhu Farenheit - Celcius.
Buatlah aplikasi GUI untuk mengkonversi input suhu dari Farenheit ke Celcius dan sebaliknya.
F.
TUGAS
Buatlah sebuah game Memory. Dalam aplikasi ini diberikan grid kotak 2 dimensi yang berisi
pasangan gambar atau string yang sesuai. Ketika mengklik kotak, isinya akan terbuka. Kemudian
klik kotak yang lain. Jika isinya sama, maka kotak akan tetap terlihat isinya. Jika tidak akan
tertutup kembali. Aplikasi dapat dimainkan ulang dengan posisi isi kotak yang teracak, tidak
sama dengan sebelumnya.
G.
LAPORAN RESMI
Kumpulkan hasil percobaan di atas dan tambahkan analisa untuk tiap percobaan, latihan, dan
tugas yang telah dibuat.
290
PRAKTIKUM 30
PROYEK 1
A.
TUJUAN PEMBELAJARAN
1. Mengimplementasikan konsep pemrograman Java dalam sebuah proyek.
B.
DASAR TEORI
Proyek 1 ini mengimplementasikan konsep pemrograman Java yang telah dipelajari. Mahasiswa
diharapkan dapat menghasilkan aplikasi yang memiliki kegunaan dan tujuan.
C.
TUGAS PENDAHULUAN
1. Pelajari kelas kelas di Java yang berhubungan dengan proyek yang dikerjakan.
D.
PERCOBAAN
Tidak Ada
E.
LATIHAN
F.
Mahasiswa wajib membuat aplikasi berbasis Java yang telah diajarkan sebelumnya
Aplikasi yang dibuat memiliki kegunaan yang jelas beserta tujuan aplikasi tersebut
Tidak ada
G.
LAPORAN RESMI
291
PRAKTIKUM 31
PROYEK 2
A.
TUJUAN PEMBELAJARAN
1. Mengimplementasikan konsep pemrograman Java dalam sebuah proyek.
B.
DASAR TEORI
Proyek 1 ini mengimplementasikan konsep pemrograman Java yang telah dipelajari. Mahasiswa
diharapkan dapat menghasilkan aplikasi yang memiliki kegunaan dan tujuan.
C.
TUGAS PENDAHULUAN
1. Pelajari kelas kelas di Java yang berhubungan dengan proyek yang dikerjakan.
D.
PERCOBAAN
Tidak Ada
E.
LATIHAN
F.
Mahasiswa wajib membuat aplikasi berbasis Java yang telah diajarkan sebelumnya
Aplikasi yang dibuat memiliki kegunaan yang jelas beserta tujuan aplikasi tersebut
Tidak ada
G.
LAPORAN RESMI
293
PRAKTIKUM 32
PRESENTASI
A.
TUJUAN PEMBELAJARAN
1. Mengimplementasikan konsep pemrograman Java dalam sebuah proyek.
B.
DASAR TEORI
Presentasi bertujuan untuk mendemokan hasil aplikasi yang telah dikembangkan pada proyek 1
dan proyek 2.
C.
TUGAS PENDAHULUAN
Tidak Ada
D.
PERCOBAAN
Tidak Ada
E.
LATIHAN
Mahasiswa wajib menjelaskan kelas apa saja yang digunakan untuk mengembangkan
aplikasi tersebut.
F.
TUGAS
Tidak ada
G.
LAPORAN RESMI
293
Daftar Pustaka
1. Chuck Cavaness, Geoff Friesen, Special Edition Using JavaTM 2 SE, QUE, 2000
2. Horstmann, Gary cornel, Cay S, Core Java 2 Volume I, Fundamentals 7th Edition, Prentice
hall, 2005
3. Herbert Schildt, The Complete Reference Java J2SETM 5th Edition, Mc Graw-Hill, Osborne,
2005.
4. James Gosling, The JavaTM Language Specification, Third Edition Sun Mycrosystems,
Addison-Wesley, 2005
5. Laura Lemay, Sams Teach Yourself Java 2 in 21 Days, Second Edition, SAMS, 2000
6. Patrick Niemeyer, Jonathan Knudsen, Learning Java, Oreilly, CA, 2000
7. Sun Java Programming, Sun Educational Services, Student Guide, Sun Microsystems 2001.
8. https://sites.google.com/site/icsshdhs/java-a/java-unit-2/2-2-java-string-assignments/2-2-1java-string-exercise-parse-this