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();
}
}
Komentar
Posting Komentar