Monday, November 17, 2025

Pertemuan 12 | Rental Kendaraan

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

Pertemuan 13 | Abstract Class

 Nama     : Naufal Daffa Alfa Zain  Nrp         : 5025241066  Kelas      : Pemrograman Web A2 Pada pertemuan ke‑13 kami mendapat dua tugas. ...