Nama : Naufal Daffa Alfa Zain
NRP : 5025241066
Kelas : Pemrograman Berbasis Objek A
Pada pertemuan ke dua belas mata kuliah Pemrograman Berorientasi Objek (PBO A), kami diminta untuk membuat dan menjalankan proyek sistem Rental Kendaraan menggunakan bahasa Java di platform BlueJ. Program ini merupakan aplikasi berbasis konsol sederhana yang mensimulasikan proses penyewaan kendaraan, di mana pengguna dapat melihat daftar kendaraan, memilih jenis kendaraan untuk disewa, memproses penyewaan dan pengembalian, serta melihat status dan detail kendaraan yang tersedia. Melalui proyek ini, kita dilatih untuk memahami penerapan pewarisan (inheritance) dan hubungan antarkelas dalam sebuah sistem informasi kecil.
Source Code:
Main.Java
public class Main {
public static void main(String[] args) {
Rental rental = new Rental();
rental.tambahKendaraan(new Sepeda("Sepeda Gunung", "Polygon", "SP-01", 5000));
rental.tambahKendaraan(new Motor("Motor Matic", "Honda Beat Street", "MT-02", 10000));
rental.tambahKendaraan(new Motor("Motor Matic", "Honda Beat Street", "MT-03", 10000));
rental.tambahKendaraan(new Motor("Motor Matic", "Aerox", "MT-04", 15000));
rental.tambahKendaraan(new Mobil("Mobil Listrik", "Omoda E5", "MB-03", 30000));
rental.tambahKendaraan(new Mobil("Mobil Big Size", "Daihatsu Xenia", "MB-04", 25000));
rental.tampilkanKendaraan();
Penyewa penyewa1 = new Penyewa("Andi", "0812-3456-7890");
Penyewa penyewa2 = new Penyewa("Budi", "0823-4567-8901");
rental.sewa("MB-04", penyewa1, 24);
rental.sewa("MT-02", penyewa2, 10);
rental.tampilkanKendaraan();
}
}
Kendaraan.Java
public class Kendaraan {
protected String nama;
protected String merk;
protected String platNomor;
protected double tarifPerJam;
protected boolean tersedia = true;
public Kendaraan(String nama, String merk, String platNomor, double tarifPerJam) {
this.nama = nama;
this.merk = merk;
this.platNomor = platNomor;
this.tarifPerJam = tarifPerJam;
}
public String getPlatNomor() {
return platNomor;
}
public boolean isTersedia() {
return tersedia;
}
public void setTersedia(boolean status) {
this.tersedia = status;
}
public double hitungBiaya(int jumlahJam) {
return tarifPerJam * jumlahJam;
}
public String info() {
return nama + " " + merk + " (" + platNomor + ") - " + (tersedia ? "tersedia" : "disewa");
}
}
Motor.Java
public class Motor extends Kendaraan {
public Motor(String nama, String merk, String platNomor, double tarifPerJam) {
super(nama, merk, platNomor, tarifPerJam);
}
@Override
public double hitungBiaya(int jumlahJam) {
double biaya = super.hitungBiaya(jumlahJam);
return biaya + 5000;
}
}
Mobil.Java
public class Mobil extends Kendaraan {
public Mobil(String nama, String merk, String platNomor, double tarifPerJam) {
super(nama, merk, platNomor, tarifPerJam);
}
@Override
public double hitungBiaya(int jumlahJam) {
return super.hitungBiaya(jumlahJam) * 1.2;
}
}
Sepeda.Java
public class Sepeda extends Kendaraan {
public Sepeda(String nama, String merk, String platNomor, double tarifPerJam) {
super(nama, merk, platNomor, tarifPerJam);
}
@Override
public double hitungBiaya(int jumlahJam) {
double biaya = super.hitungBiaya(jumlahJam);
return biaya * 0.8;
}
}
Penyewa.Java
public class Penyewa {
private final String nama;
private final String noHp;
public Penyewa(String nama, String noHp) {
this.nama = nama;
this.noHp = noHp;
}
public String getNama() {
return nama;
}
public String getNoHp() {
return noHp;
}
}
Rental.Java
import java.util.ArrayList;
import java.util.List;
public class Rental {
private final List<Kendaraan> daftarKendaraan = new ArrayList<>();
public void tambahKendaraan(Kendaraan kendaraan) {
daftarKendaraan.add(kendaraan);
}
public void tampilkanKendaraan() {
System.out.println("Daftar kendaraan:");
for (Kendaraan kendaraan : daftarKendaraan) {
System.out.println("- " + kendaraan.info());
}
}
public double sewa(String platNomor, Penyewa penyewa, int jumlahJam) {
for (Kendaraan kendaraan : daftarKendaraan) {
if (kendaraan.getPlatNomor().equalsIgnoreCase(platNomor) && kendaraan.isTersedia()) {
kendaraan.setTersedia(false);
double biaya = kendaraan.hitungBiaya(jumlahJam);
System.out.println(penyewa.getNama() + " (" + penyewa.getNoHp() + ") menyewa " + kendaraan.info() + " selama " + jumlahJam + " jam.");
System.out.println("Total biaya: " + biaya);
return biaya;
}
}
System.out.println("Kendaraan dengan plat " + platNomor + " tidak tersedia.");
return 0;
}
public void kembalikan(String platNomor) {
for (Kendaraan kendaraan : daftarKendaraan) {
if (kendaraan.getPlatNomor().equalsIgnoreCase(platNomor) && !kendaraan.isTersedia()) {
kendaraan.setTersedia(true);
System.out.println("Kendaraan " + platNomor + " telah dikembalikan.");
return;
}
}
System.out.println("Tidak ditemukan kendaraan untuk dikembalikan.");
}
}
No comments:
Post a Comment