
Menambahkan Fitur Diskon ke Aplikasi Kasir OOP
Salah satu keunggulan program berbasis OOP adalah mudah dikembangkan. Dalam artikel ini, kita akan menambahkan fitur baru yaitu diskon ke dalam aplikasi kasir yang sudah menggunakan struktur OOP. Ini menunjukkan bagaimana OOP mendukung prinsip open for extension, closed for modification.
1. Tujuan Fitur Diskon
Program akan memberikan diskon sebesar 10% jika total belanja lebih dari 100.000. Dengan menambahkan fitur ini, kita bisa melihat bagaimana class Transaksi
dapat diperluas tanpa merusak logika yang sudah ada.
2. Modifikasi Class Transaksi
Kita tambahkan method baru untuk menghitung diskon dan ubah perhitungan total akhir:
1 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 |
public class Transaksi { Barang barang; public Transaksi(Barang barang) { this.barang = barang; } public double hitungPajak() { return barang.total() * 0.1; } public double hitungDiskon() { return (barang.total() > 100000) ? barang.total() * 0.1 : 0; } public double totalBayar() { double total = barang.total(); return total + hitungPajak() - hitungDiskon(); } public void cetakStruk() { System.out.println("--- Struk ---"); System.out.println("Barang : " + barang.nama); System.out.println("Harga : " + barang.harga); System.out.println("Jumlah : " + barang.jumlah); System.out.println("Diskon : " + hitungDiskon()); System.out.println("Pajak : " + hitungPajak()); System.out.println("Total : " + totalBayar()); } } |
3. Tidak Perlu Ubah Class Barang
Kita tidak mengubah apa pun di class Barang
. Fitur diskon hanya ditambahkan di class Transaksi
. Ini menunjukkan betapa fleksibelnya struktur OOP dalam mengelola tanggung jawab.
4. Testing di main()
Kode di class AplikasiKasir
tetap sama. Kita hanya perlu mencoba input barang dengan total di atas 100.000 dan melihat apakah diskon diterapkan.
5. Keuntungan Arsitektur OOP
- Fitur baru tidak merusak kode lama
- Struktur jelas — class fokus pada satu tanggung jawab
- Mudah diuji — cukup uji
hitungDiskon()
secara terpisah
6. Kesimpulan
Dengan menambahkan fitur diskon tanpa menyentuh class lain, kita sudah menerapkan prinsip OOP yang baik: perubahan hanya pada bagian yang memang perlu. Di artikel selanjutnya, kita akan mengimplementasikan validasi input agar aplikasi kasir lebih tangguh dalam menangani kesalahan pengguna.
Ditulis sebagai bagian dari Seri Tujuh: Studi Kasus dan Refactoring Mini Project di Java