SOAL UTS PBO DOSEN : Teguh Sutanto, M.Kom. TAKE HOME WAKTU 25 Jam
1. 2. 3.
4. 5. 6. 7.
PETUNJUK UMUM Soal Ujian Tengah Semester ini dikerjakan secara mandiri Jawaban soal UTS disimpan dalam sebuah folder dengan nama MID.PBO.NIM_PENDEK Jawaban soal UTS terdiri dari: a. Kode program (fileName.java) b. Penjelasan jawaban soal dalam sebuah file dengan format .doc/.docx Folder yang berisi jawaban soal tersebut di atas kemudian dimampatkan dalam format ZIP Kirimkan jawaban yang sudah anda mampatkan (kompres) sebagai lampiran surat elektronik (email) ke :
[email protected] dengan judul: MID_PBO_NIM_PENDEK Jawaban harus sudah diterima oleh mail server paling lambat 1 hari + 1 jam setelah tanggal dan jam pelaksanaan UTS Pengiriman jawaban ujian di luar ketentuan di atas tidak akan diterima
PENILAIAN Secara Umum 1. Penulisan kode program sesuai dengan kaidah OOP 2. Penanganan kesalahan (ExceptionHandling) 3. Dapat dikompilasi dan dijalankan 4. Kemudahan dalam menjalankan hasil program 5. Originalitas Secara Teknis 1. Menampilkan Menu (10%) a. Menu Awal: 1)halaman admin, 2)halaman pembeli b. Menu Vending Machine: 1) Masukan nomer kartu, 2)pilih nama minuman 2. Menambah Kartu Baru (10%) 3. Mencatat log transaksi (10%) a. Transaksi di Kartu Pintar b. Transaksi di Penjualan 4. Melakukan transaksi(30%) a. Pembelian minuman b. Mencatat transaksi penjualan c. Mengurangi saldo kartu pintar 5. Struktur class(40%)
a. b. c. d. e.
Array atau vector of class Penamaan class Penamaan attribute Penamaan operation/method Visibility f. Penggunaan class (relasi class)
STUDY KASUS: PROGRAM VENDING MACHINE DENGAN KARTU PINTAR SEBAGAI ALAT PEMBAYARAN
Deskripsi Vending machine adalah sebuah mesin yang memungkinkan pembeli melakukan pembelian barang secara mandiri dan otomatis. Pada studi kasus ini mensimulasikan vending machine untuk penjualan minuman kaleng. Pada studi kasus ini akan ada dua user: user pengguna dan user admin. Mesin ini terdiri dari dua program utama, yaitu program untuk admin dan program untuk user. Ketika program dijalankan akan menampilkan pilihan apakah masuk admin atau pembeli. Jika memilih menu pembeli maka secara umum cara kerja vending machine adalah sebagai berikut: pembeli memasukan kartu pintar (smar card) kemudian mesin akan membaca kartu pintar dan melakukan verifikasi apakah kartunya valid atau tidak. Kalau kartu pintar valid maka mesin akan menampilkan menu minuman apa saja yang bisa dibeli. Pembeli akan memilih salah satu minuman yang akan dibeli. Mesin akan membaca saldo yang tersimpan dalam kartu pintar. Jika saldo mencukupi maka mesin akan mengurangi daldo sebesar harga minuman yang dibeli, kemudian mesin akan mengurangi stok minuman dan mencatat penjualan dalam tabel penjualan.
Soal Berdasarkan deskripsi di atas maka: 1. 2. 3. 4.
Buatlah rancangan program sesuai dengan deskripsi di atas Buatlah program sesuai rancangan no.1 Buatlah laporan implementasi dan evaluasi dalam format *.doc/*.docx Anda dapat menggunakan class yang sudah disediakan dan memodifikasi dengan menambahkan method atau prosedur yang dibutuhkan
Kerangka Class Berikut ini adalah kerangka class yang dapat digunakan untuk menyelesaikan studi kasus di atas:
Class KartuPintar public class KartuPintar{ public static final int SALDO_AWAL=10000; private String id; private int saldo; public KartuPintar(){ id="0000"; saldo=SALDO_AWAL; } public KartuPintar(String id, int saldo){ this.id=id; this.saldo=saldo; } public void topUp(){ saldo += SALDO_AWAL; } public void topUp(int value){ saldo +=value; } public String toString(){ return id+"->saldo: " + saldo; } public String getId(){ return id; } public int getSaldo(){ return saldo; } public void debet(int value){ saldo -=value; } }
Class CounterKartuPintar import java.util.*; public class CounterKartuPintar{ private Vector
daftarKartu=new Vector();
public void kartuBaru(KartuPintar kartuBaru){ daftarKartu.add(kartuBaru); } public void viewAllKartu(){ for(KartuPintar kartu:daftarKartu) System.out.println(kartu); } public void topUp(String idKartu, int value){ int idx=cariKartu(idKartu); if(idx!=-1){ daftarKartu.elementAt(idx).topUp(value); System.out.println("Id Kartu: " +idKartu + " BERHASIL di topUp"); System.out.println("Saldo Saat ini: "); cetakSaldo(idKartu); } else System.out.println("No Kartu Tidak Ada !"); } public void debet(String idKartu, int value){ } public void cetakSaldo(String id){ int idx=cariKartu(id); if(idx!=-1){ System.out.println(daftarKartu.elementAt(idx)); } else System.out.println("No Kartu Tidak Ada !"); } private int cariKartu(String id){ int idx=-1; int i=0; do{ if(daftarKartu.elementAt(i).getId().equals(id)) { idx=i; i=daftarKartu.size(); } i++; }while(i
}
Class MinumanKaleng public class MinumanKaleng { private int stock; public int getStock() { return stock; } public void addStock(int jml){ this.stock +=jml; } public void decStock(int jml){ this.stock -=jml; } private String namaMinuman; public MinumanKaleng(String namaMinuman, int harga, int isi) { super(); this.namaMinuman = namaMinuman; this.harga = harga; this.isi = isi; this.stock=10; } public String getNamaMinuman() { return namaMinuman; } public void setNamaMinuman(String namaMinuman) { this.namaMinuman = namaMinuman; } public int getHarga() { return harga; } public void setHarga(int harga) { this.harga = harga; } public int getIsi() { return isi; } public void setIsi(int isi) { this.isi = isi; } private int harga; private int isi; }