ETS
Nama : Hafidz Panji Ashari
NRP : 5025231278
Kelas : PBO-A
Soal
1. Jelaskan perbedaan antara kelas dan objek dalam pemrograman berorientasi objek. Berikan contoh dengan kode sederhana yang menunjukkan hubungan antara kelas dan objek.
Objects
object adalah instance dari sebuah class. Object berisi data (dalam bentuk atribut/properti) dan metode (fungsi) yang dapat dioperasikan untuk berinteraksi dengan data tersebut. Setiap object dapat memiliki nilai properti yang berbeda walaupun berasal dari class yang sama.
object adalah instance dari sebuah class. Object berisi data (dalam bentuk atribut/properti) dan metode (fungsi) yang dapat dioperasikan untuk berinteraksi dengan data tersebut. Setiap object dapat memiliki nilai properti yang berbeda walaupun berasal dari class yang sama.
Class
class adalah cetak biru (blueprint) atau template untuk membuat objek. Class mendefinisikan atribut (properti atau variabel) dan metode (fungsi atau perilaku) yang akan dimiliki oleh objek yang dibuat dari class tersebut.
class adalah cetak biru (blueprint) atau template untuk membuat objek. Class mendefinisikan atribut (properti atau variabel) dan metode (fungsi atau perilaku) yang akan dimiliki oleh objek yang dibuat dari class tersebut.
Perbedaan antara Class dan Objects
Dalam pemrograman berorientasi objek, kelas adalah blueprint atau template untuk membuat objek. Kelas mendefinisikan atribut dan metode yang dimiliki oleh objek. Sedangkan objek adalah instance dari kelas, yaitu entitas nyata yang dibuat berdasarkan kelas.
Contoh Program
class Mobil {
String merk;
String warna;
public Mobil(String merk, String warna) {
this.merk = merk;
this.warna = warna;
}
public void info() {
System.out.println("Mobil " + merk + " Warna " + warna);
}
}
public class Main {
public static void main(String[] args) {
Mobil mobil1 = new Mobil("Ferrari", "Merah");
Mobil mobil2 = new Mobil("BMW", "Biru");
mobil1.info();
mobil2.info();
}
}
penjelasan
Kelas Mobil mendefinisikan atribut merk dan warna, serta metode info untuk menampilkan informasi mobil. Objek mobil1 dan mobil2 dibuat dari kelas Mobil di dalam fungsi main.
Metode info() dipanggil pada masing-masing objek untuk menampilkan informasi terkait objek tersebut.
2. Buatlah Aplikasi CoffeeMachine yang menyediakan kopi dengan harga tertentu:
Kode Program
import java.util.Scanner;
class CoffeeMachine {
String namaKopi;
double harga;
public CoffeeMachine(String namaKopi, double harga) {
this.namaKopi = namaKopi;
this.harga = harga;
}
public void tampilkanMenu() {
System.out.println(namaKopi + " - Rp " + harga);
}
}
public class Main {
public static void main(String[] args) {
CoffeeMachine KopiSusu = new CoffeeMachine("Kopi-Susu", 15000);
CoffeeMachine KopiGulaAren = new CoffeeMachine("Kopi-GulaAren", 20000);
CoffeeMachine latte = new CoffeeMachine("Kopi-Latte", 25000);
System.out.println("Menu Kopi:");
KopiSusu.tampilkanMenu();
KopiGulaAren.tampilkanMenu();
latte.tampilkanMenu();
Scanner scanner = new Scanner(System.in);
System.out.print("Pilih kopi (1: Kopi-Susu, 2: Kopi-GulaAren, 3: Kopi-Latte): ");
int pilihan = scanner.nextInt();
if (pilihan == 1) {
System.out.println("Anda memilih Kopi-Susu. Harga: Rp " + KopiSusu.harga);
} else if (pilihan == 2) {
System.out.println("Anda memilih Kopi-GulaAren. Harga: Rp " + KopiGulaAren.harga);
} else if (pilihan == 3) {
System.out.println("Anda memilih Kopi-Latte. Harga: Rp " + latte.harga);
} else {
System.out.println("Pilihan tidak valid.");
}
}
}
Hasil :
3. Apa yang dimaksud dengan enkapsulasi dalam pemrograman berorientasi objek?
Berikan contoh bagaimana enkapsulasi diterapkan dalam kelas menggunakan modifier private dan metode akses (getter dan setter).
Enkapsulasi adalah :
konsep untuk membatasi akses langsung ke atribut atau data dalam sebuah objek dan memberikan kontrol penuh atas cara data tersebut dimodifikasi. Atribut-atribut biasanya ditetapkan sebagai private, artinya mereka hanya dapat diakses dari dalam kelas itu sendiri. Untuk memungkinkan pengaksesan atau modifikasi dari luar kelas, digunakan metode akses yang disebut getter dan setter.
contoh program :
class Person {
// Atribut private
private String nama;
private int umur;
// Konstruktor
public Person(String nama, int umur) {
this.nama = nama;
this.umur = umur;
}
// Getter
public String getNama() {
return nama;
}
// Setter
public void setNama(String nama) {
this.nama = nama;
}
// Getter
public int getUmur() {
return umur;
}
// Setter
public void setUmur(int umur) {
if (umur > 0) {
this.umur = umur;
} else {
System.out.println("Umur ga valid.");
}
}
}
public class Main {
public static void main(String[] args) {
Person orang = new Person("Hafidz", 25);
System.out.println("Nama: " + orang.getNama());
System.out.println("Umur: " + orang.getUmur());
// Mengubah nilai 'nama' dan 'umur' melalui setter
orang.setNama("Panji");
orang.setUmur(30);
// Menampilkan nilai setelah perubahan
System.out.println("Nama baru: " + orang.getNama());
System.out.println("Umur baru: " + orang.getUmur());
// Coba mengatur umur yang tidak valid
orang.setUmur(-5);
}
}
Penjelasan:
Modifier private:
Atribut nama dan umur dalam kelas Person bersifat private, sehingga tidak dapat diakses langsung dari luar kelas. Ini mencegah pengguna mengakses atau mengubah data tanpa izin.
Metode akses (getter dan setter):
Getter: Metode getNama() dan getUmur() digunakan untuk mengambil nilai dari atribut nama dan umur.
Setter: Metode setNama() dan setUmur() digunakan untuk mengubah nilai dari atribut nama dan umur. Pada metode setUmur(), ada logika validasi yang memastikan bahwa umur tidak bisa diatur dengan nilai negatif.
4. Buatlah dua kelas, BankAccount dan Customer / Nasabah. Setiap objek Customer memiliki akun bank (BankAccount). Buatlah metode dalam Customer yang memungkinkan nasabah untuk melakukan penyetoran (deposit) dan penarikan (withdraw) melalui akun bank mereka. Pastikan interaksi terjadi melalui metode dalam Customer.
Kode Program :
import java.util.Scanner;
class BankAccount {
private double saldo;
public BankAccount(double saldoAwal) {
this.saldo = saldoAwal;
}
public void setor(double jumlah) {
saldo += jumlah;
System.out.println("Setor berhasil. Saldo sekarang: Rp " + saldo);
}
public void tarik(double jumlah) {
if (jumlah <= saldo) {
saldo -= jumlah;
System.out.println("Tarik berhasil. Saldo sekarang: Rp " + saldo);
} else {
System.out.println("Saldo tidak cukup.");
}
}
public double getSaldo() {
return saldo;
}
}
class Nasabah {
private BankAccount akun;
public Nasabah(double saldoAwal) {
akun = new BankAccount(saldoAwal);
}
public void setor(double jumlah) {
akun.setor(jumlah);
}
public void tarik(double jumlah) {
akun.tarik(jumlah);
}
public void cekSaldo() {
System.out.println("Saldo saat ini: Rp " + akun.getSaldo());
}
}
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Nasabah nasabah = new Nasabah(500000);
while (true) {
System.out.println("\n1. Setor\n2. Tarik\n3. Cek Saldo\n4. Keluar");
System.out.print("Pilih: ");
int pilihan = scanner.nextInt();
if (pilihan == 1) {
System.out.print("Jumlah setor: ");
nasabah.setor(scanner.nextDouble());
} else if (pilihan == 2) {
System.out.print("Jumlah tarik: ");
nasabah.tarik(scanner.nextDouble());
} else if (pilihan == 3) {
nasabah.cekSaldo();
} else if (pilihan == 4) {
System.out.println("Terima kasih.");
break;
} else {
System.out.println("Pilihan tidak valid.");
}
}
}
}
Hasil :
5. Buatlah Desain Class Diagram untuk Trip Application yang digunakan untuk mengelola perjalanan. Setiap perjalanan memiliki atribut destination, distance, dan costPerkm. Fitur aplikasi sebagai berikut:
a. Menghitung total biaya perjalanan berdasarkan jarak dan biaya per kilometer.
b. Menambah penumpang dan mencetak daftar penumpang.
c. Membatalkan perjalanan jika penumpang kurang dari jumlah minimum.
Desain Class Diagram untuk Trip Application:
Penjelasan:
Atribut Trip:
destination: Menyimpan tujuan perjalanan.
distance: Menyimpan jarak perjalanan dalam kilometer.
costPerKm: Menyimpan biaya per kilometer.
passengers: Menyimpan daftar nama penumpang.
minPassengers: Menyimpan jumlah penumpang minimum yang diperlukan untuk perjalanan.
Metode Trip:
calculateTotalCost(): Menghitung total biaya perjalanan berdasarkan jarak dan biaya per kilometer (distance * costPerKm).
addPassenger(String name): Menambah penumpang ke daftar.
printPassengers(): Mencetak atau menampilkan daftar penumpang yang terdaftar untuk perjalanan.
cancelTrip(): Membatalkan perjalanan jika jumlah penumpang kurang dari minPassengers.
Kode Program :
import java.util.ArrayList;
import java.util.List;
class Trip {
private String destination;
private double distance;
private double costPerKm;
private List<String> passengers;
private int minPassengers;
public Trip(String destination, double distance, double costPerKm, int minPassengers) {
this.destination = destination;
this.distance = distance;
this.costPerKm = costPerKm;
this.minPassengers = minPassengers;
this.passengers = new ArrayList<>();
}
// Menghitung total biaya perjalanan
public double calculateTotalCost() {
return distance * costPerKm;
}
// Menambah penumpang
public void addPassenger(String name) {
passengers.add(name);
System.out.println("Penumpang " + name + " telah ditambahkan.");
}
// Mencetak daftar penumpang
public void printPassengers() {
System.out.println("Daftar Penumpang:");
for (String passenger : passengers) {
System.out.println("- " + passenger);
}
}
// Membatalkan perjalanan jika penumpang kurang dari jumlah minimum
public boolean cancelTrip() {
if (passengers.size() < minPassengers) {
System.out.println("Perjalanan dibatalkan karena penumpang kurang dari " + minPassengers);
return true;
} else {
System.out.println("Perjalanan dapat dilanjutkan.");
return false;
}
}
}
public class Main {
public static void main(String[] args) {
// Membuat objek Trip
Trip trip1 = new Trip("Bali", 100, 5.0, 3);
// Menambah penumpang
trip1.addPassenger("Hafidz");
trip1.addPassenger("Panji");
// Mencetak daftar penumpang
trip1.printPassengers();
// Menghitung dan menampilkan total biaya perjalanan
double totalCost = trip1.calculateTotalCost();
System.out.println("Total biaya perjalanan: Rp " + totalCost);
// Membatalkan perjalanan jika penumpang kurang
trip1.cancelTrip();
}
}
Hasil :
LINK YOUTUBE
Comments
Post a Comment