diff --git a/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/README.md b/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/README.md new file mode 100644 index 0000000..9569837 --- /dev/null +++ b/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/README.md @@ -0,0 +1,18 @@ +# Program Penjualan Buah +Program ini merupakan program skala kecil oop terkait penjualan buah di toko Pak Warmi. Pada program ini pengguna dapat membeli buah sesuai dengan masukan pengguna. Harga per kilogram dan persediaan setiap buah dapat diedit manual pada Main.java. + +# Design Pattern +Design pattern yang digunakan pada program ini adalah design pattern singleton. Dapat dilihat dari class mangga, apel, durian, melon, semangka, pisang setiap class tersebut terdapat satu instance sebuah kelas. Saya memilih singleton karena paling mudah diimplementasikan. + +# Bahasa yang Digunakan +Program ini dibuat dengan menggunakan bahasa java versi 19. + +# Requirement Program +Untuk menjalankan program ini, cukup menyediakan environment yang biasa digunakan untuk menjalankan program java pada umumnya. Pengguna hanya perlu menyiapkan Java Development Kit (JDK) pada perangkat yang digunakan. + +# Cara Menggunakan + Pengguna dapat mengubah file Main.java pada folder ``src`` menjadi Main.class atau langsung menjalankan Main.class pada folder ``bin``. Jika pengguna ingin mengubah file Main.java menjadi Main.class terlebih dahulu, maka dapat dilakukan dengan +1. Membuka terminal pada folder dimana Main.java berada. +2. ketik ``javac Main.java`` pada terminal. + +Setelah Main.class ada, pengguna dapat menjalankan program dengan mengetik ``java Main`` pada terminal. diff --git a/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/bin/Apel.class b/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/bin/Apel.class new file mode 100644 index 0000000..b66e606 Binary files /dev/null and b/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/bin/Apel.class differ diff --git a/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/bin/Buah.class b/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/bin/Buah.class new file mode 100644 index 0000000..4439cf3 Binary files /dev/null and b/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/bin/Buah.class differ diff --git a/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/bin/Durian.class b/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/bin/Durian.class new file mode 100644 index 0000000..2d12d31 Binary files /dev/null and b/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/bin/Durian.class differ diff --git a/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/bin/Main.class b/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/bin/Main.class new file mode 100644 index 0000000..4018117 Binary files /dev/null and b/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/bin/Main.class differ diff --git a/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/bin/Mangga.class b/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/bin/Mangga.class new file mode 100644 index 0000000..94dba28 Binary files /dev/null and b/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/bin/Mangga.class differ diff --git a/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/bin/Melon.class b/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/bin/Melon.class new file mode 100644 index 0000000..669f58b Binary files /dev/null and b/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/bin/Melon.class differ diff --git a/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/bin/Output.class b/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/bin/Output.class new file mode 100644 index 0000000..ac0207f Binary files /dev/null and b/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/bin/Output.class differ diff --git a/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/bin/Pisang.class b/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/bin/Pisang.class new file mode 100644 index 0000000..bffa252 Binary files /dev/null and b/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/bin/Pisang.class differ diff --git a/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/bin/Semangka.class b/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/bin/Semangka.class new file mode 100644 index 0000000..c590393 Binary files /dev/null and b/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/bin/Semangka.class differ diff --git a/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/src/Apel.java b/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/src/Apel.java new file mode 100644 index 0000000..50c5793 --- /dev/null +++ b/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/src/Apel.java @@ -0,0 +1,11 @@ +public class Apel extends Buah { + public Apel(int persediaan, int hargaPerKilo) { + this.persediaan = persediaan; + this.hargaPerKilo = hargaPerKilo; + } + + @Override + public int getHarga(int bobot) { + return hargaPerKilo * bobot; + } +} \ No newline at end of file diff --git a/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/src/Buah.java b/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/src/Buah.java new file mode 100644 index 0000000..dce3e1e --- /dev/null +++ b/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/src/Buah.java @@ -0,0 +1,11 @@ +abstract public class Buah { + int persediaan; // Bobot semua buah yang tersedia (Dalam Kg) + int hargaPerKilo; + abstract int getHarga(int bobot); + boolean bisaBeli(int amount) { + return amount <= persediaan; + } + void beli(int amount) { + this.persediaan = persediaan - amount; + } +} \ No newline at end of file diff --git a/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/src/Durian.java b/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/src/Durian.java new file mode 100644 index 0000000..7d1f884 --- /dev/null +++ b/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/src/Durian.java @@ -0,0 +1,11 @@ +public class Durian extends Buah { + public Durian(int persediaan, int hargaPerKilo) { + this.persediaan = persediaan; + this.hargaPerKilo = hargaPerKilo; + } + + @Override + public int getHarga(int bobot) { + return hargaPerKilo * bobot; + } +} \ No newline at end of file diff --git a/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/src/Main.java b/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/src/Main.java new file mode 100644 index 0000000..fccad11 --- /dev/null +++ b/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/src/Main.java @@ -0,0 +1,45 @@ +import java.util.Scanner; + +public class Main { + public static void main(String[] args) { + // Set up objek dan variabel + Scanner input = new Scanner(System.in); + String buyExit; + int pilihanBuah; + + // Set up bobot dan persediaan + Buah mangga = new Mangga(15, 23000); + Buah pisang = new Pisang(18,23000); + Buah apel = new Apel(12, 41000); + Buah durian = new Durian(7, 50000); + Buah melon = new Melon(14, 26000); + Buah semangka = new Semangka(13, 17000); + + Output.tampilkanWelcome(); + buyExit = input.next(); + while (!(buyExit.equals("1") || buyExit.equals("2"))) { + System.out.println("Masukan tidak sesuai\n"); + Output.tampilkanWelcome(); + buyExit = input.next(); + } + + while (buyExit.equals("1")) { + Output.tampilkanPilihanBuah(); + pilihanBuah = input.nextInt(); + while (!(1 <= pilihanBuah && pilihanBuah <= 6)) { + System.out.println("Masukan tidak sesuai\n"); + Output.tampilkanPilihanBuah(); + pilihanBuah = input.nextInt(); + } + System.out.println(); + Output.tampilkanDetailBuah(pilihanBuah, mangga, apel, durian, melon, pisang, semangka); + Output.tampilkanWelcome(); + buyExit = input.next(); + while (!(buyExit.equals("1") || buyExit.equals("2"))) { + System.out.println("Masukan tidak sesuai\n"); + Output.tampilkanWelcome(); + buyExit = input.next(); + } + } + } +} \ No newline at end of file diff --git a/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/src/Mangga.java b/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/src/Mangga.java new file mode 100644 index 0000000..9186833 --- /dev/null +++ b/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/src/Mangga.java @@ -0,0 +1,11 @@ +public class Mangga extends Buah { + public Mangga(int persediaan, int hargaPerKilo) { + this.persediaan = persediaan; + this.hargaPerKilo = hargaPerKilo; + } + + @Override + public int getHarga(int bobot) { + return hargaPerKilo * bobot; + } +} \ No newline at end of file diff --git a/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/src/Melon.java b/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/src/Melon.java new file mode 100644 index 0000000..650d5e6 --- /dev/null +++ b/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/src/Melon.java @@ -0,0 +1,11 @@ +public class Melon extends Buah { + public Melon(int persediaan, int hargaPerKilo) { + this.persediaan = persediaan; + this.hargaPerKilo = hargaPerKilo; + } + + @Override + public int getHarga(int bobot) { + return hargaPerKilo * bobot; + } +} diff --git a/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/src/Output.java b/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/src/Output.java new file mode 100644 index 0000000..b0890f7 --- /dev/null +++ b/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/src/Output.java @@ -0,0 +1,116 @@ +import java.util.Scanner; + +public class Output { + public static void tampilkanWelcome() { + System.out.println("Selamat datang di toko buah Pak Warmi"); + System.out.println("1. Belanja"); + System.out.println("2. Exit"); + } + public static void tampilkanPilihanBuah() { + System.out.println("Berikut buah-buahan yang tersedia di toko kami:"); + System.out.println("1. Mangga"); + System.out.println("2. Apel"); + System.out.println("3. Durian"); + System.out.println("4. Melon"); + System.out.println("5. Pisang"); + System.out.println("6. Semangka"); + System.out.println("Silahkan pilih buah yang ingin anda beli"); + } + public static void tampilkanDetailBuah(int pilihanBuah, Buah mangga, Buah apel, Buah durian, Buah melon, Buah pisang, Buah semangka) { + Scanner input = new Scanner(System.in); + int amountBeli; + + switch (pilihanBuah) { + case (1) -> { + System.out.println("Mangga"); + System.out.printf("Persediaan: %d Kg%n", mangga.persediaan); + System.out.printf("Harga per Kilogram: Rp %d%n%n", mangga.hargaPerKilo); + System.out.println("Ingin beli berapa Kilogram?"); + amountBeli = input.nextInt(); + if (mangga.bisaBeli(amountBeli)) { + System.out.printf("Harga yang harus dibayar: Rp %d%n", mangga.getHarga(amountBeli)); + mangga.beli(amountBeli); + System.out.println("Terima kasih sudah berbelanja di toko Pak Warmi\n"); + } + else { + System.out.println("Maaf, jumlah pemesanan melebihi persediaan\n"); + } + } + case (2) -> { + System.out.println("Apel"); + System.out.printf("Persediaan: %d Kg%n", apel.persediaan); + System.out.printf("Harga per Kilogram: Rp %d%n%n", apel.hargaPerKilo); + System.out.println("Ingin beli berapa Kilogram?"); + amountBeli = input.nextInt(); + if (apel.bisaBeli(amountBeli)) { + System.out.printf("Harga yang harus dibayar: Rp %d%n", apel.getHarga(amountBeli)); + apel.beli(amountBeli); + System.out.println("Terima kasih sudah berbelanja di toko Pak Warmi\n"); + } + else { + System.out.println("Maaf, jumlah pemesanan melebihi persediaan\n"); + } + } + case (3) -> { + System.out.println("Durian"); + System.out.printf("Persediaan: %d Kg%n", durian.persediaan); + System.out.printf("Harga per Kilogram: Rp %d%n%n", durian.hargaPerKilo); + System.out.println("Ingin beli berapa Kilogram?"); + amountBeli = input.nextInt(); + if (durian.bisaBeli(amountBeli)) { + System.out.printf("Harga yang harus dibayar: Rp %d%n", durian.getHarga(amountBeli)); + durian.beli(amountBeli); + System.out.println("Terima kasih sudah berbelanja di toko Pak Warmi\n"); + } + else { + System.out.println("Maaf, jumlah pemesanan melebihi persediaan\n"); + } + } + case (4) -> { + System.out.println("Melon"); + System.out.printf("Persediaan: %d Kg%n", melon.persediaan); + System.out.printf("Harga per Kilogram: Rp %d%n%n", melon.hargaPerKilo); + System.out.println("Ingin beli berapa Kilogram?"); + amountBeli = input.nextInt(); + if (melon.bisaBeli(amountBeli)) { + System.out.printf("Harga yang harus dibayar: Rp %d%n", melon.getHarga(amountBeli)); + melon.beli(amountBeli); + System.out.println("Terima kasih sudah berbelanja di toko Pak Warmi\n"); + } + else { + System.out.println("Maaf, jumlah pemesanan melebihi persediaan\n"); + } + } + case (5) -> { + System.out.println("Pisang"); + System.out.printf("Persediaan: %d Kg%n", pisang.persediaan); + System.out.printf("Harga per Kilogram: Rp %d%n%n", pisang.hargaPerKilo); + System.out.println("Ingin beli berapa Kilogram?"); + amountBeli = input.nextInt(); + if (pisang.bisaBeli(amountBeli)) { + System.out.printf("Harga yang harus dibayar: Rp %d%n", pisang.getHarga(amountBeli)); + pisang.beli(amountBeli); + System.out.println("Terima kasih sudah berbelanja di toko Pak Warmi\n"); + } + else { + System.out.println("Maaf, jumlah pemesanan melebihi persediaan\n"); + } + } + default -> { + System.out.println("Semangka"); + System.out.printf("Persediaan: %d Kg%n", semangka.persediaan); + System.out.printf("Harga per Kilogram: Rp %d%n%n", semangka.hargaPerKilo); + System.out.println("Ingin beli berapa Kilogram?"); + amountBeli = input.nextInt(); + if (semangka.bisaBeli(amountBeli)) { + System.out.printf("Harga yang harus dibayar: Rp %d%n", semangka.getHarga(amountBeli)); + semangka.beli(amountBeli); + System.out.println("Terima kasih sudah berbelanja di toko Pak Warmi\n"); + } + else { + System.out.println("Maaf, jumlah pemesanan melebihi persediaan\n"); + } + } + } + } +} \ No newline at end of file diff --git a/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/src/Pisang.java b/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/src/Pisang.java new file mode 100644 index 0000000..9f3eaa2 --- /dev/null +++ b/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/src/Pisang.java @@ -0,0 +1,11 @@ +public class Pisang extends Buah { + public Pisang(int persediaan, int hargaPerKilo) { + this.persediaan = persediaan; + this.hargaPerKilo = hargaPerKilo; + } + + @Override + public int getHarga(int bobot) { + return hargaPerKilo * bobot; + } +} \ No newline at end of file diff --git a/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/src/Semangka.java b/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/src/Semangka.java new file mode 100644 index 0000000..fe0fb2f --- /dev/null +++ b/Muhammad Equilibrie Fajria_Institut Teknologi Bandung/src/Semangka.java @@ -0,0 +1,11 @@ +public class Semangka extends Buah { + public Semangka(int persediaan, int hargaPerKilo) { + this.persediaan = persediaan; + this.hargaPerKilo = hargaPerKilo; + } + + @Override + public int getHarga(int bobot) { + return hargaPerKilo * bobot; + } +}