Nama : Safa Mashita
NRP : 5025241022
Link YouTube : https://youtu.be/wu2RTOUz3sk?si=kzOYO2I_LccgZcAS
ETS PEMROGRAMAN BERBASIS OBJEK
SOAL
Deskripsi Umum
Sistem Vending Coffee Machine adalah aplikasi yang mensimulasikan mesin penjual otomatis untuk minuman kopi. Pengguna dapat memilih jenis kopi, ukuran gelas, menambahkan gula atau susu, melakukan pembayaran, dan menerima kopi yang telah disiapkan oleh mesin.
Sistem ini mengelola stok bahan (kopi, gula, susu, air), memproses pembayaran, serta memberikan laporan transaksi dan status mesin.
Alur Sistem (Flow)
Alur kerja Vending Coffee Machine
- Mesin aktif → menampilkan menu pilihan kopi.
- Pengguna memilih jenis dan ukuran kopi.
- Pengguna menambah gula/susu (opsional).
- Mesin menampilkan total harga.
- Pengguna melakukan pembayaran.
- Mesin memverifikasi pembayaran → jika cukup → membuat kopi.
- Kopi disajikan → sistem mengurangi stok.
- Transaksi disimpan ke log.
- Jika stok habis → admin diingatkan untuk refill.
Ketentuan
- Tentukan fitur yang ada pada mesin
- Gambarkan rancangan kelas dan rancangan obyek vending coffee mashin
- Buatkan output simulasi vending coffe machine
- Implementasikan dalam bentuk aplikasi simulasi vending coffe machine
- Buatlah Video Presentasi yang menjelaskan pekerjaanmu kemudian upload di Youtube
- Buat Dokumentasi pengerjaan di blog, kemudian isi google form Link Pengumpulan ETS
JAWABAN
Program Vending Coffee Machine merupakan simulasi mesin penjual otomatis kopi yang saya buat menggunakan bahasa pemrograman Java (BlueJ).
Fitur-fitur utama yang tersedia antara lain:
-
Menampilkan daftar menu kopi (Espresso, Latte, Americano, Cappuccino, Mocha).
-
Pengguna dapat memilih ukuran gelas (Small, Medium, Large).
-
Pengguna dapat menambahkan gula dan/atau susu secara opsional.
-
Sistem menghitung total harga berdasarkan pilihan pengguna.
-
Pengguna melakukan pembayaran, termasuk kembalian jika uang berlebih.
-
Sistem mengurangi stok kopi setiap kali transaksi berhasil.
-
Menampilkan riwayat transaksi pembelian kopi.
-
Admin dapat melihat stok, melakukan refill stok, dan keluar dari sistem.
-
Program memberikan notifikasi ketika stok habis.
Sistem ini terdiri dari lima kelas utama, yaitu:
-
CoffeeMachine
Berperan sebagai pusat sistem. Kelas ini mengatur seluruh alur kerja mesin kopi, mulai dari menampilkan menu, menerima input dari pengguna, memproses pesanan, mengelola stok, hingga mencatat transaksi. -
Coffee
Kelas yang merepresentasikan jenis kopi. Di dalamnya terdapat atribut seperti nama kopi dan harga dasarnya. -
Order
Kelas yang digunakan untuk menyimpan data pesanan pengguna. Order berisi objek kopi yang dipilih, ukuran gelas, serta pilihan tambahan seperti gula dan susu. -
Payment
Bertugas untuk menangani proses pembayaran. Kelas ini memverifikasi jumlah uang yang dimasukkan oleh pengguna, menentukan apakah cukup, dan menghitung kembalian. -
Transaction
Digunakan untuk menyimpan catatan setiap transaksi yang berhasil dilakukan. Informasi transaksi ini mencakup detail pesanan, harga, dan waktu transaksi.
Saat program dijalankan, objek-objek akan dibuat dan berinteraksi sesuai urutan berikut:
-
Sistem mengaktifkan mesin dan menampilkan daftar menu kopi.
-
Pengguna memilih jenis kopi, lalu menentukan ukuran gelas serta tambahan gula atau susu.
-
Setelah pesanan terbentuk, sistem membuat objek
Orderyang berisi detail pilihan pengguna. -
Sistem menampilkan total harga, lalu pengguna melakukan pembayaran.
-
Kelas
Paymentdigunakan untuk mengecek apakah jumlah uang mencukupi. Jika cukup, sistem akan menghitung kembalian. -
Mesin kemudian menyajikan kopi, mengurangi stok, dan mencatat transaksi ke dalam log menggunakan kelas
Transaction. -
Admin dapat melihat log transaksi, memeriksa stok, atau melakukan pengisian ulang bila stok habis.
Kelas CoffeeMachine menjadi pusat dari sistem.
Kelas ini berinteraksi langsung dengan semua kelas lain:
CoffeeMachine membuat objek dari kelas Coffee sesuai pilihan pengguna.
Setelah pengguna memilih ukuran dan tambahan, CoffeeMachine membuat objek Order yang berisi detail pesanan.
Ketika pengguna membayar, CoffeeMachine memanggil kelas Payment untuk memproses transaksi dan menghitung kembalian.
Jika pembayaran berhasil, CoffeeMachine akan membuat objek Transaction untuk mencatat transaksi ke dalam log.
Selain itu, di dalam kelas CoffeeMachine juga terdapat pengelolaan stok untuk setiap jenis kopi agar mesin dapat memeriksa ketersediaan bahan sebelum pesanan dibuat.
HashMap<String, Integer> coffeeStock: menyimpan stok tiap jenis kopi.-
ArrayList<Transaction> transactions: menyimpan daftar transaksi pembelian.
Method utama :
main(): menjalankan seluruh simulasi.-
handleAdminMenu(): mengatur fitur admin (lihat stok, refill, transaksi, keluar).
Hubungan :
Menggunakan class
Coffee,Order,Payment, danTransaction.
2. Class Coffee
public class Coffee {
private String name;
private String size;
private int basePrice;
public Coffee(String name, String size, int basePrice) {
this.name = name;
this.size = size;
this.basePrice = basePrice;
}
public String getName() {
return name;
}
public String getSize() {
return size;
}
public int getBasePrice() {
return basePrice;
}
public void setBasePrice(int basePrice) {
this.basePrice = basePrice;
}
@Override
public String toString() {
return name + " (" + size + ")";
}
}
name: nama kopi.-
size: ukuran kopi (Small, Medium, Large). -
basePrice: harga dasar kopi.
Method utama :
getPrice()mengembalikan harga kopi.-
toString()menampilkan nama dan ukuran kopi.
Hubungan :
Dipakai oleh class
Orderuntuk menghitung total harga.
Order
public class Order { private Coffee coffee; private boolean addSugar; private boolean addMilk; private int totalPrice;
public Order(Coffee coffee, boolean addSugar, boolean addMilk) { this.coffee = coffee; this.addSugar = addSugar; this.addMilk = addMilk; this.totalPrice = coffee.getBasePrice(); }
public int getTotalPrice() { return totalPrice; }
public Coffee getCoffee() { return coffee; }
public boolean hasSugar() { return addSugar; }
public boolean hasMilk() { return addMilk; }
public String toString() { String desc = coffee.toString(); if (addSugar) desc += " + Gula"; if (addMilk) desc += " + Susu"; return desc; }}
Atribut :coffee: objek kopi yang dipesan.-
sugar: penambahan gula. -
milk: penambahan susu.
Method utama :
getTotalPrice()menghitung total harga pesanan.-
toString()menampilkan deskripsi pesanan.
Hubungan :
Berhubungan langsung dengan
Coffeedan digunakan diCoffeeMachine.
4. Class Payment
public class Payment {
public boolean processPayment(int total, int money) {
if (money < total) {
System.out.println("Uang tidak cukup! Transaksi dibatalkan.");
return false;
} else {
int change = money - total;
System.out.println("Pembayaran berhasil!");
if (change > 0) {
System.out.println("Kembalian: Rp " + change);
}
return true;
}
}
}
Atribut : Tidak memiliki atribut (semua dilakuka di method).
Method utama :
processPayment()memverifikasi pembayaran dan menampilkan kembalian.
Hubungan :
Dipanggil dari
CoffeeMachineuntuk setiap transaksi.
5. Class Transaction
public class Transaction {
private String orderDesc;
private int totalPrice;
public Transaction(String orderDesc, int totalPrice) {
this.orderDesc = orderDesc;
this.totalPrice = totalPrice;
}
public void showTransaction() {
System.out.println(orderDesc + " - Rp " + totalPrice);
}
}
Atribut :
-
orderDesc: deskripsi pesanan. -
totalPrice: total harga transaksi.
Method utama :
-
showTransaction()menampilkan riwayat transaksi.
Hubungan :
-
Disimpan dalam
ArrayList<Transaction>diCoffeeMachine.
Program ini menunjukkan penerapan konsep OOP (Object-Oriented Programming) dengan baik melalui penggunaan lima kelas utama (CoffeeMachine, Coffee, Order, Payment, Transaction) yang saling berhubungan untuk membentuk sistem yang terstruktur.
Tidak ada komentar:
Posting Komentar