Mochamad Kolbi Nuron_5025231183_ETS PBO A

 Nama : Mochamad Kolbi Nuron

NRP : 5025231183

ETS PBO A

1. perbedaan kelas dan objek

  • kelas/class adalah template untuk membuat objek yang berisi atribut (variabel) dan metode (fungsi) yang menggambarkan karakteristik dan perilaku dari objek-objek yang dibuat dari kelas tersebut. sehingga membuat pemrogaman menjadi lebih terstruktur dan efisien. 
  • objek adalah entitas nyata yang memiliki atribut dan dapat berinteraksi dengan metode yang didefinisikan dalam kelas. 


2. Aplikasi CoffeeMachine

import java.util.Scanner;

public class CoffeeMachine {
    private String[] menu = {"Espresso", "Americano", "Latte"};
    private int[] prices = {10000, 15000, 20000};  

    public void displayMenu() {
        System.out.println("Menu CoffeeMachine:");
        for (int i = 0; i < menu.length; i++) {
            System.out.println((i + 1) + ". " + menu[i] + " - Rp " + prices[i]);
        }
    }

    public void calculateTotal(int[] quantities) {
        int totalPrice = 0;
        System.out.println("\nPesanan Anda:");

        for (int i = 0; i < menu.length; i++) {
            if (quantities[i] > 0) {  
                int itemTotal = prices[i] * quantities[i]; 
                totalPrice += itemTotal;
                System.out.println(menu[i] + " x " + quantities[i] + " = Rp " + itemTotal);
            }
        }

        System.out.println("\nTotal harga yang harus dibayar: Rp " + totalPrice);

        handlePayment(totalPrice);
    }

    private void handlePayment(int totalPrice) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("\nMasukkan jumlah uang Anda (dalam Rupiah): ");
        int payment = scanner.nextInt();

        if (payment == totalPrice) {
            System.out.println("Pembayaran berhasil! Pesanan Anda akan segera disajikan.");
        } else if (payment < totalPrice) {
            System.out.println("Pembayaran gagal. Uang Anda kurang.");
        } else {
            System.out.println("Pembayaran berhasil! Pesanan Anda akan segera disajikan. Kembalian Anda: Rp " + (payment - totalPrice));
        }
    }

    public static void main(String[] args) {
        CoffeeMachine machine = new CoffeeMachine();
        Scanner scanner = new Scanner(System.in);

        machine.displayMenu();

        int[] quantities = new int[machine.menu.length];
        String choice;
        
        while (true) {
            System.out.print("\nIngin memesan kopi apa? (ketik 'sudah' jika selesai): ");
            choice = scanner.next();
            
            if (choice.equalsIgnoreCase("sudah")) {
                break; 
            }

            int coffeeChoice = Integer.parseInt(choice);
            
            if (coffeeChoice < 1 || coffeeChoice > machine.menu.length) {
                System.out.println("Pilihan tidak valid, silakan pilih nomor kopi yang sesuai.");
                continue;
            }

            System.out.print("Berapa cangkir? ");
            int cups = scanner.nextInt();

            quantities[coffeeChoice - 1] += cups;  
        }

        machine.calculateTotal(quantities);
    }
}

Hasil Program 



3. apa yang dimaksud enkapsulasi?
Enkapsulasi adalah salah satu konsep utama dalam pemrograman berorientasi objek (OOP). Enkapsulasi mengacu pada pengikatan (binding) data dan metode yang memanipulasi data tersebut menjadi satu unit atau entitas. Ini memungkinkan pengembang untuk menyembunyikan data dari akses langsung luar (dikenal sebagai data hiding), dan hanya memberikan akses ke data tersebut melalui metode yang disediakan, seperti getter dan setter. Dengan demikian, enkapsulasi memastikan bahwa data hanya dapat diakses dan dimodifikasi dengan cara yang terkontrol.

// Definisi kelas Person dengan enkapsulasi
public class Person {
    // Atribut yang di-enkapsulasi dengan modifier private
    private String name;
    private int age;

    // Konstruktor untuk inisialisasi objek
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // Getter untuk atribut 'name'
    public String getName() {
        return name;
    }

    // Setter untuk atribut 'name'
    public void setName(String name) {
        this.name = name;
    }

    // Getter untuk atribut 'age'
    public int getAge() {
        return age;
    }

    // Setter untuk atribut 'age'
    public void setAge(int age) {
        // Validasi: Umur harus positif
        if (age > 0) {
            this.age = age;
        } else {
            System.out.println("Umur harus lebih besar dari 0");
        }
    }

    // Metode untuk menampilkan informasi
    public void displayInfo() {
        System.out.println("Nama: " + name);
        System.out.println("Umur: " + age);
    }

    public static void main(String[] args) {
        // Membuat objek Person
        Person person = new Person("John", 25);

        // Menampilkan informasi awal
        person.displayInfo();

        // Mengubah nilai atribut menggunakan setter
        person.setName("Doe");
        person.setAge(30);

        // Menampilkan informasi setelah perubahan
        person.displayInfo();

        // Mencoba memasukkan umur tidak valid
        person.setAge(-5);  // Output: Umur harus lebih besar dari 0
    }
}

4. Bank Account dan Customer


public class BankAccount {
    private String accountNumber;
    private double balance;

    // Konstruktor untuk inisialisasi objek BankAccount
    public BankAccount(String accountNumber, double initialBalance) {
        this.accountNumber = accountNumber;
        this.balance = initialBalance;
    }

    // Getter untuk nomor akun
    public String getAccountNumber() {
        return accountNumber;
    }

    // Getter untuk saldo
    public double getBalance() {
        return balance;
    }

    // Metode untuk melakukan deposit
    public void deposit(double amount) {
        if (amount > 0) {
            balance += amount;
            System.out.println("Deposit berhasil. Jumlah: Rp " + amount);
        } else {
            System.out.println("Jumlah deposit harus positif.");
        }
    }

    // Metode untuk melakukan penarikan
    public void withdraw(double amount) {
        if (amount > 0 && amount <= balance) {
            balance -= amount;
            System.out.println("Penarikan berhasil. Jumlah: Rp " + amount);
        } else {
            System.out.println("Penarikan gagal. Jumlah tidak valid atau saldo tidak mencukupi.");
        }
    }
}

public class Customer {
    private String name;
    private BankAccount account;

    // Konstruktor untuk inisialisasi objek Customer dengan akun bank
    public Customer(String name, BankAccount account) {
        this.name = name;
        this.account = account;
    }

    // Metode untuk deposit melalui BankAccount
    public void depositToAccount(double amount) {
        account.deposit(amount);
    }

    // Metode untuk withdraw melalui BankAccount
    public void withdrawFromAccount(double amount) {
        account.withdraw(amount);
    }

    // Menampilkan detail akun
    public void showAccountDetails() {
        System.out.println("Nama Customer: " + name);
        System.out.println("Nomor Akun: " + account.getAccountNumber());
        System.out.println("Saldo Saat Ini: Rp " + account.getBalance());
    }

    public static void main(String[] args) {
        // Membuat objek BankAccount
        BankAccount myAccount = new BankAccount("1234567890", 1000000);

        // Membuat objek Customer
        Customer customer = new Customer("John Doe", myAccount);

        // Menampilkan detail akun
        customer.showAccountDetails();

        // Melakukan deposit
        customer.depositToAccount(500000);

        // Melakukan penarikan
        customer.withdrawFromAccount(300000);

        // Menampilkan detail akun setelah transaksi
        customer.showAccountDetails();
    }
}

5.  



























Komentar

Postingan populer dari blog ini

tugas PBOA pengertian dan konsep OOP

Mochamad Kolbi Nuron_5025231183_Tugas PBO 8