Praktikum 2 Tanggal: 24 September 2014 Kelas: PIS-13-03 Waktu:
Persiapan 10 menit (11.30-11.40), Tes Awal 20 menit (11.40-12.00), Istirahat (12.00-12.45), Jurnal 90 menit (12.45-14.15), Pengiriman jawaban (14.15-14.25) Persiapan akhir (14.25-14.30)
Sifat: Internet hanya diperbolehkan untuk membuka rbudiawan.staff.telkomuniversity.ac.id dan email di 15 menit terakhir perkuliahan. Hanya boleh membawa buku catatan, buku teks, alat tulis dan kertas jawaban ke meja praktikum.
Tes Awal: 1. Jelaskanlah tentang hubungan antar kelas inheritance. Untuk apa konsep tersebut digunakan? Dan keyword yang digunakan pada inheritance. 2. Jelaskan simbol-simbol yang digunakan untuk inheritance, abstract class dan interface. 3. Apakah perbedaan antara abstract class dan interface? Jelaskan. 4. Apakah yang dimaksud dengan Virtual Method Invocation?
Jurnal: Nomor: 1 Tipe: Inheritance (Abstract Class) Sebuah bank kelas bawah membuat 2 buah bentuk penyimpanan bagi nasabahnya, RekeningSatu dan RekeningDua. Kesamaan dari 2 rekening adalah saat penarikan. Penarikan dari kedua tipe rekening akan mengurangi saldo nasabah. Perbedaannya ada pada hitung bunga serta hitung pajak. Setiap tipe rekening, pasti memiliki proses perhitungan bunga dan perhitungan pajak. Untuk memastikan proses tersebut diimplementasikan, digunakan abstract class. Abstract class memiliki konstruktor untuk menerima setoran awal. Untuk perhitungan pajak dan perhitungan bunga pada 2 tipe rekening dilakukan sebagai berikut: RekeningSatu Pajak = 5% dari saldo Bunga = 10.000
RekeningDua Pajak = 10% dari saldo + 50.000 Bunga = 20% dari saldo
class diagram yang digunakan adalah sebagai berikut:
Rekening #saldo : double #bunga : double #pajak : double +getSaldo() : double +Rekening(in setoran : double) +hitungBunga() : void +hitungPajak() : void
RekeningSatu
RekeningDua
+RekeningSatu(in setoran : double)
+RekeningSatu(in setoran : double)
Note: setiap perhitngan bunga akan menambah saldo, sedangkan setiap perhitungan pajak akan mengurangi saldo.
Contoh Driver Class adalah sebagai berikut: public class Main { public static void main(String[] args) { //Membuat Rekening 1 System.out.println("Rekening Satu"); RekeningSatu rs = new RekeningSatu(500000); rs.hitungBunga(); System.out.println("Saldo Sekarang: "+rs.getSaldo()); rs.hitungPajak(); System.out.println("Saldo Sekarang: "+rs.getSaldo()); //membuat Rekening 2 System.out.println("\nRekening Dua"); RekeningDua rd = new RekeningDua(500000); rd.hitungBunga(); System.out.println("Saldo Sekarang: "+rd.getSaldo()); rd.hitungPajak(); System.out.println("Saldo Sekarang: "+rd.getSaldo()); } } Contoh Hasil Akhir:
Kodekanlah kasus di atas. Jika tidak mengikuti contoh class diagram, silakan cantumkan class diagram menurut rancangan masing-masing.
Nomor: 2 Tipe: Interface Seorang engineer ingin membuat lampu dengan 1 saklar/tombol. Sebelum membuat rangkaian lampu tersebut, ia membuat simulasinya dalam sebuah program dengan konsep OO. Lampu tersebut dibagi ke dalam 2 tipe, tipe 2 state dan tipe 3 state. Tipe 2 state memiliki 2 tingkat nyala lampu, tingkat 0 (mati), dan tingkat 2 (menyala). Tipe 3 state memiliki 3 tingkat nyala lampu, tingkat 0 (mati), tingkat 1 (menyala redup), dan tingkat 2 (menyala). Tipe 2 state memiliki algoritma sebagai berikut ketika tombol ditekan: a) Cek apakah lampu menyala atau tidak menyala, b) jika menyala, matikan lampu, c) jika tidak menyala, nyalakan lampu Tipe 3 state memiliki algoritma sebagai berikut ketika tombol ditekan: a) Cek apakah lampu menyala, menyala redup atau mati, b) jika lampu mati, hidupkan dengan nyala redup c) jika lampu menyala redup, tambahkan intensitas penyalaan, d) jika lampu menyala, matikan lampu tersebut. Dikarenakan ingin menggunakan konsep interface, berikut adalah class diagram yang dirancang untuk membuat simulasi tersebut: <
>Lampu +MATI : int = 0 +REDUP : int = 5 +NYALA : int = 10 +klik() : void
LampuDuaState
LampuTigaState
-nyala : int = 0
-nyala : int = 0
Note: Sebelum dijalankan/di-klik, pada kondisi awal, lampu dalam kondisi mati.
Contoh dari Driver Class adalah sebagai berikut: public class Main { public static void main(String[] args) { System.out.println("Lampu Dua State"); LampuDuaState ld = new LampuDuaState(); System.out.println("Klik Pertama"); ld.klik(); System.out.println("Klik Kedua"); ld.klik(); System.out.println("Klik Ketiga"); ld.klik(); System.out.println("\n\nLampu Tiga State"); LampuTigaState lt = new LampuTigaState(); System.out.println("Klik Pertama"); lt.klik(); System.out.println("Klik Kedua"); lt.klik(); System.out.println("Klik Ketiga"); lt.klik(); System.out.println("Klik Keempat"); lt.klik(); } }
Output:
Kodekanlah kasus di atas. Jika tidak mengikuti contoh class diagram, silakan cantumkan class diagram menurut rancangan masing-masing.
Pengerjaan & pengumpulan: a) Gunakan editor non-IDE untuk coding. b) Tulislah jawaban jurnal pada sebuah file pdf dengan nama file nim mahasiswa. Kirimkan ke [email protected] dengan subjek PRAKTIKUM 2 PIS-13-03