Pemrograman Berorientasi Object dengan Java Teknik Informatika Universitas Muhammadiyah Malang Tugas 2 -- Semester 2 2011/2012 Pendahuluan Mahasiswa diminta untuk mengimplementasikan dasar-dasar program Java menggunakan Java SE 5.0. Tugas dirancang untuk: - Melatih kemampuan mendisain class di Java - Melatih pengimplementasian berbagai jenis class di Java - Melatih penggunaan polymorphism - Melatih error handling di Java Ini adalah tugas individu dengan bobot 30% total nilai akhir Integritas Akademik Tugas yang dikumpulkan adalah hasil karya mahasiswa pribadi. Nilai tidak akan diberikan untuk setiap bagian yang tidak dibuat oleh mahasiswa bersangkutan. Plagiarisme(kecurangan) tidak ditolelir di jurusan Teknik Informatika dan akan mendapatkan sanksi yang serius. Plagiarisme meliputi penyalinan pekerjaan dari mahasiswa lain, internet atau sumber lainnya tanpa menyebutkan referensi dengan jelas. Seringkali mahasiswa belajar dan mengerjakan tugas bersama-sama, kemudian mengumpulkan tugas yang serupa; hal ini termasuk plagiarisme. Harap diperhatikan bahwa mahasiswa harus membuat programnya sendiri meskipun memiliki ide yang sama dengan mahasiswa lain. Perangkat lunak pendeteksi plagiarisme akan digunakan untuk tiap tugas yang dikumpulkan. Hukuman akan diterapkan untuk setiap kasus plagiarisme. Deskripsi Masalah Skenario merupakan pengembangan dari tugas 1. Tugas kali ini adalah untuk implementasi sistem di geek cafe Cafe for Geeks Cafe Geek saat ini telah maju pesat. Cafe sekarang menjual bermacam jenis makanan, yang meliputi: cake, kopi dan shake serta memiliki rencana rewards untuk pelanggan setianya. Jenis cake yang dijual meliputi Blueberry, Pisang, Vanila dan spesial cake yang disebut diet cake. Jenis-jenis kopi meliputi Mocha, Cappuccino, Espresso; sedangkan jenis-jenis shake adalah Mangga, Pisang dan Strawberry. Setiap jenis makanan ini dijual dengan harga sebagaimana ditunjukkan pada tabel di bawah.
Makanan
Harga
Dapat Dikombo?
Discount
Cake Blueberry
Rp 3.500,-
Yes
10%
Pisang
Rp 3.500,-
Yes
15%
Vanila
Rp 2.500,-
Yes
5%
Diet
Rp 4.250,-
Tidak
Mocha
Rp 3.000,-
Yes
5%
Cappuccino
Rp 2.750,-
Yes
10%
Espresso
Rp 2.500,-
Tidak
Mangga
Rp 4.500,-
Tidak
Pisang
Rp 4.250,-
Tidak
Strawberry
Rp 5.000,-
Tidak
Kopi
Shake
Combo 1 Cake Blueberry + 1 Kopi Mocha Selain menjual makanan per satuan, cafe juga menjual makanan secara combo dengan harga discount. Combo merupakan combinasi beberapa makanan, misalkan Cake Blueberry dengan Mocha. Harga combo dihitung berdasarkan pada nilai discount per jenis makanan (lihat kolom discount tabel di atas). Manajer cafe dapat membuat dan menghapus combo kapan saja. Namun, ada pembatasan dalam membuat combo, dimana tidak semua makanan bisa dicombo (lihat kolom dapat dikombo). Pelanggan: Pelanggan cafe dibedakan menjadi 2, yakni mereka yang terdaftar dan yang tidak terdaftar. Bagi mereka yang terdaftar, mendapat keuntungan dengan mengumpulkan point reward. Untuk setiap proses penjualan, sistem memeriksa apakah pembeli adalah pembeli terdaftar atau bukan. Saat aplikasi pertama kali dijalankan, ada data standar yang di-load ke aplikasi sesuai dengan tabel pelanggan berikut ini
Nama Pelanggan
ID Pelanggan
Point
Bambang Urip
001
6
Endang Hayati
002
8
Slamet Sugeng
003
5
Pelanggan yang terdaftar mendapatkan 1 point untuk setiap uang Rp 2.000,- yang dibelanjakan. Setiap point bernilai Rp 500,- dan dapat digunakan untuk melakukan pembelian baru oleh pelanggan yang sama kapanpun juga. Sebagai catatan, cafe tidak memberikan uang tunai sebagai ganti point. Misalkan pelanggan memiliki 10 point, maka dia dapat menggunakan 3 point untuk membeli Cappuccino dengan menambah uang Rp 1.250,-. Tidak ada poin untuk pembelian ini karena uang yang dibayarkan tidak lebih dari Rp 2.000,-. Point dapat digunakan untuk membeli semua jenis makanan. Namun, pelanggan yang tidak terdaftar tidak menerima point. Cafe: Cafe dibuka setiap hari dengan 25 cake untuk setiap jenisnya. Manajer cafe dapat memerintahkan untuk membuat 25 cake lagi jika membutuhkan. Kopi dan shake selalu tersedia, dan dibuat langsung saat ada pesanan. Jika pelanggam memesan cake dengan jumlah melebihi persediaan, maka akan dimunculkan pesan bahwa persediaan tidak mencukupi. Cafe menyimpan detail transaksi untuk setiap penjualan yang dilakukan. Transaksi Jual: Transaksi pembelian bisa terdiri dari lebih satu macam makanan atau combo. Cafe menyimpan semua transaksi, termasuk makanan yang dijual, jumlah, harga, point yang digunakan dan ID pelanggan. Jika yang membeli adalah mereka yang tidak terdaftar, ID pelanggan yang digunakan adalah “-999”. Daftar transaksi ini digunakan untuk menampilkan laporan penjualan. Laporan Penjualan: Manajer dapat melihat laporan penjualan kapanpun. Laporan penjualan ada dua jenis, satu untuk keperluan cafe dan satu untuk keperluan pelanggan. Untuk keperluan cafe, laporan berupa detail penjualan untuk setiap jenis makanan, data pendapatan, discount, sisa cake yang tidak terjual serta point yang digunakan dan yang diberikan. Laporan untuk keperluan pelanggan berupa detail penjualan oleh setiap pelanggan. Manajemen Cafe: Kapan saja, manajer dapat mengubah harga setiap makanan, menambah atau menghapus combo serta melihat laporan. Jika manajer mengubah harga ke nilai negatif atau menjadi dua kali harga asal, maka exception harus dilempar dan message harus ditampilkan ke pemakai aplikasi. Jika manajer menambahkan combo dan combo ternyata sudah dibuat atau combo baru mengandung makanan yang tidak boleh dicombo, maka akan dilempar exception dan mucul peringatan untuk pemakai aplikasi.
Pengerjaan Aplikasi: 1. Gunakan abstract class atau interface dan custom exception untuk memodelkan skenario di atas. 2. Paling sedikit gunakan class hierarki 2 level untuk memodelkan item makanan 3. Gunakan JCF sebagai ganti array 4. Tangani inputan yang masuk agar program tidak berhenti tanpa sebab yang jelas 5. Dianjurkan untuk meng-extends abstract class Makanan ke class Cake, Kopi dan Shake Asusmsi: 1. Tidak ada duplikasi nama pelanggan 2. Harga adalah Rupiah BAGIAN 1 (total point: 20) Tampilan menu yang diharapkan adalah:
! ! !
a) Pesan ! > Masukkan ID pelanggan, jika bukan tekan enter ! > Pilih item makanan / combo ! > Masukkan jumlahnya b) Atur Cafe 1. Ubah harga 2. Tambah combo 3. Hapus combo c) Tampilkan laporan penjualan 1. Laporan item makanan 2. Laporan pelangkan d) Keluar
============================================================= The Geek Cafe ============================================================= a) b) c) d) Pilih
Pesan Atur Cafe Tampilkan laporan penjualan Keluar menu: a
Masukkan ID pelanggan (tekan enter untuk lewati): 001 Selamat datang Bambang, Pilih makanan: 1. Cake Blueberry 2. Cake Vanila 3. Cake Pisang 4. Cake Diet
5. Kopi Mocha 6. Kopi Cappuccino 7. Kopi Espresso 8. Shake Mangga 9. Shake Pisang 10. Shake Strawberry 11. Combo Cake Blueberry + Kopi Mocha 12. Selesai Silahkan pilih: 11 Berapa banyak combo yang akan dibeli: 1 Combo: Cake Blueberry + Kopi Mocha dipilih Pilih makanan: 1. Cake Blueberry 2. Cake Vanila 3. Cake Pisang 4. Cake Diet 5. Kopi Mocha 6. Kopi Cappuccino 7. Kopi Espresso 8. Shake Mangga 9. Shake Pisang 10. Shake Strawberry 11. Combo Cake Blueberry + Kopi Mocha 12. Selesai Silahkan pilih: 2 Berapa banyak cake yang ingin dibeli: 5 Cake Vanila dipilih Pilih makanan: 1. Cake Blueberry 2. Cake Vanila 3. Cake Pisang 4. Cake Diet 5. Kopi Mocha 6. Kopi Cappuccino 7. Kopi Espresso 8. Shake Mangga 9. Shake Pisang 10. Shake Strawberry 11. Combo Cake Blueberry + Kopi Mocha 12. Selesai Silahkan pilih: 12 Tersedia 6 point, berapa banyak yang akan digunakan: 6
Total discount: Rp 3.000,Yang harus dibayar: Rp 15.500,Silahkan masukkan uang: Rp 20000 Kembalian: Rp 4.500,Point yang didapatkan: 7 ============================================================= The Geek Cafe ============================================================= a) b) c) d) Pilih
Pesan Atur Cafe Tampilkan laporan penjualan Keluar menu: a
Selamat tinggal !!! BAGIAN 2 (total point: 10) Buatlah tambahan class untuk menjalankan aplikasi di bagian 1 dengan mode GUI. Aplikasi bagian 2 ini bisa jadi merupakan pengembangan atau modifikasi dari aplikasi bagian 1. Perlu diperhatikan, bahwa dengan mengerjakan bagian 2, bukan berarti aplikasi berbasis console di bagian 1 tidak dapat dijalankan, namun kedua-duanya dapat dijalankan. Pastikan anda menyelesaikan bagian 1 terlebih dahulu sebelum mengerjakan bagian 2. Jika point bagian 1 tidak mencapai 15 point, dan anda mengerjakan bagian 2, maka bagian 2 didak akan dinilai. Ketentuan Umum Nilai akan dikurangi jika mahasiswa tidak mengikuti aturan penulisan program yang baik yang meliputi comments, konsisten indentation, dll (Lihat http://java.sun.com/docs/ codeconv/CodeConventions.pdf). Pengumpulan Tugas - Pengumpulan bagian 1 paling lambat Jum’at 1 Juni 2012 pk 17.59 di server lab - Pengumpulan bagian 2 paling lambat Jum’at 8 Juni 2012 pk 17.59 di server lab Mahasiswa harus menyertakan file berikut pada saat pengumpulan: - semua file java yang berhubungan dengan aplikasi - file readme.txt yang menjelaskan cara compile aplikasi dan cara menjalankan aplikasi Keterlambatan pengumpulan berakibat pada pengurangan nilai 10% per hari. Keterlambatan lebih dari 5 hari menyebabkan tugas tidak dinilai. Informasi Lain - Mekanisme pengumpulan akan diterangkan lebih lanjut