public abstract class Kendaraan {
private String merk;
private String model;
private int tahunProduksi;
private boolean tersedia;
public Kendaraan(String merk, String model, int tahunProduksi) {
this.merk = merk;
this.model = model;
this.tahunProduksi = tahunProduksi;
this.tersedia = true;
}
public String getMerk() {
return merk;
}
public String getModel() {
return model;
}
public int getTahunProduksi() {
return tahunProduksi;
}
public boolean isTersedia() {
return tersedia;
}
public void setTersedia(boolean tersedia) {
this.tersedia = tersedia;
}
@Override
public String toString() {
return merk + " " + model + " (" + tahunProduksi + ")";
}
}
public class Mobil extends Kendaraan {
private int jumlahRoda;
public Mobil(String merk, String model, int tahunProduksi, int jumlahRoda) {
super(merk, model, tahunProduksi);
this.jumlahRoda = jumlahRoda;
}
public int getJumlahRoda() {
return jumlahRoda;
}
@Override
public String toString() {
return "Mobil: " + super.toString() + ", jumlah roda: " + jumlahRoda;
}
}
public class Motor extends Kendaraan {
private int jumlahRoda;
public Motor(String merk, String model, int tahunProduksi, int jumlahRoda) {
super(merk, model, tahunProduksi);
this.jumlahRoda = jumlahRoda;
}
public int getJumlahRoda() {
return jumlahRoda;
}
@Override
public String toString() {
return "Motor: " + super.toString() + ", jumlah roda: " + jumlahRoda;
}
}
public class Sepeda extends Kendaraan {
private String jenisSepeda;
public Sepeda(String merk, String model, int tahunProduksi, String jenisSepeda) {
super(merk, model, tahunProduksi);
this.jenisSepeda = jenisSepeda;
}
public String getJenisSepeda() {
return jenisSepeda;
}
@Override
public String toString() {
return "Sepeda: " + super.toString() + ", jenis: " + jenisSepeda;
}
}
public class Penyewa {
private String nama;
private String noIdentitas;
public Penyewa(String nama, String noIdentitas) {
this.nama = nama;
this.noIdentitas = noIdentitas;
}
public String getNama() {
return nama;
}
public String getNoIdentitas() {
return noIdentitas;
}
@Override
public String toString() {
return nama + " (ID: " + noIdentitas + ")";
}
}
public class Rental {
private Penyewa penyewa;
private Kendaraan kendaraan;
public Rental(Penyewa penyewa, Kendaraan kendaraan) {
this.penyewa = penyewa;
this.kendaraan = kendaraan;
this.kendaraan.setTersedia(false);
}
public Penyewa getPenyewa() {
return penyewa;
}
public Kendaraan getKendaraan() {
return kendaraan;
}
@Override
public String toString() {
return "Penyewa: " + penyewa.toString() + " menyewa " + kendaraan.toString();
}
}
import java.util.ArrayList;
import java.util.List;
public class RentalApp {
public static void main(String[] args) {
List<Kendaraan> daftarKendaraan = new ArrayList<>();
daftarKendaraan.add(new Mobil("Toyota", "Avanza", 2022, 4));
daftarKendaraan.add(new Motor("Honda", "Vario", 2021, 2));
daftarKendaraan.add(new Sepeda("Polygon", "Xtrada", 2020, "Gunung"));
daftarKendaraan.add(new Mobil("Suzuki", "Ertiga", 2019, 4));
daftarKendaraan.add(new Sepeda("United", "Miami", 2023, "BMX"));
List<Rental> daftarRental = new ArrayList<>();
Penyewa p1 = new Penyewa("Budi", "KTP001");
Penyewa p2 = new Penyewa("Siti", "KTP002");
// Contoh: Budi sewa Avanza, Siti sewa Sepeda Gunung
Rental r1 = new Rental(p1, daftarKendaraan.get(0));
Rental r2 = new Rental(p2, daftarKendaraan.get(2));
daftarRental.add(r1);
daftarRental.add(r2);
System.out.println("=== Daftar Kendaraan Tersedia ===");
for (Kendaraan k : daftarKendaraan) {
if (k.isTersedia()) {
System.out.println(k);
}
}
System.out.println();
System.out.println("=== Daftar Penyewa dan Kendaraan yang Disewa ===");
for (Rental r : daftarRental) {
System.out.println(r);
}
}
}