Kamis, 06 November 2025

Pertemuan 11 : Inheritance pada Rental kendaraan

Testing Inheritance PBO - Pertemuan 11

Pemrograman Berbasis Objek (PBO)
Nama: Hosea Felix Sanjaya
NRP: 5025241177
Kelas: B
Tahun: 2025


Penerapan Inheritance pada Sistem Rental Kendaraan

Halo semuanya! 👋
Pada pertemuan kali ini, saya akan membahas tentang penerapan konsep inheritance dalam Java dengan studi kasus sistem rental kendaraan.
Konsep ini memperlihatkan bagaimana kelas induk dapat mewariskan atribut dan metode umum ke beberapa kelas turunan seperti Mobil, Motor, dan Sepeda. Selain itu, juga ditambahkan kelas Penyewa dan MainApp sebagai pengelola interaksi pengguna.

Tujuan

Tujuan dari program ini adalah untuk memahami konsep pewarisan (inheritance) serta penerapannya dalam pembuatan sistem sederhana berbasis OOP menggunakan Java. Setiap jenis kendaraan akan mewarisi atribut dasar dari kelas Kendaraan, dan memiliki perilaku khusus masing-masing.

Kode Program

1 Class Kendaraan

public class Kendaraan {
    private String merk;
    private String model;
    private int tahunProduksi;

    public Kendaraan(String merk, String model, int tahunProduksi) {
        this.merk = merk;
        this.model = model;
        this.tahunProduksi = tahunProduksi;
    }

    public String getMerk() {
        return merk;
    }

    public String getModel() {
        return model;
    }

    public int getTahunProduksi() {
        return tahunProduksi;
    }

    public String getInfo() {
        return merk + " " + model + " (" + tahunProduksi + ")";
    }
}

2 Class Mobil

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;
    }

    @Override
    public String getInfo() {
        return "Mobil: " + super.getInfo() + ", Roda: " + jumlahRoda;
    }
}

3 Class Motor

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;
    }

    @Override
    public String getInfo() {
        return "Motor: " + super.getInfo() + ", Roda: " + jumlahRoda;
    }
}

4 Class Sepeda

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;
    }

    @Override
    public String getInfo() {
        return "Sepeda: " + super.getInfo() + ", Jenis: " + jenisSepeda;
    }
}

5 Class Penyewa

public class Penyewa {
    private String nama;
    private Kendaraan kendaraanDisewa;

    public Penyewa(String nama, Kendaraan kendaraanDisewa) {
        this.nama = nama;
        this.kendaraanDisewa = kendaraanDisewa;
    }

    public String getNama() {
        return nama;
    }

    public Kendaraan getKendaraanDisewa() {
        return kendaraanDisewa;
    }

    public String getInfo() {
        return "Nama: " + nama + "\nKendaraan: " + kendaraanDisewa.getInfo();
    }
}

6 Class MainApp

import java.util.ArrayList;
import java.util.Scanner;

public class MainApp {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        // Daftar kendaraan tersedia
        ArrayList daftarKendaraan = new ArrayList();
        daftarKendaraan.add(new Mobil("Toyota", "Avanza", 2020, 4));
        daftarKendaraan.add(new Motor("Honda", "Beat", 2022, 2));
        daftarKendaraan.add(new Sepeda("Polygon", "Helios", 2021, "Balap"));
        daftarKendaraan.add(new Mobil("Daihatsu", "Xenia", 2019, 4));
        daftarKendaraan.add(new Sepeda("BMX", "Street 3000", 2018, "BMX"));
        daftarKendaraan.add(new Motor("Yamaha", "NMax", 2023, 2));
        daftarKendaraan.add(new Mobil("Honda", "Civic", 2018, 4));
        daftarKendaraan.add(new Sepeda("United", "Trifold", 2020, "Lipat"));
        daftarKendaraan.add(new Motor("Suzuki", "Satria FU", 2017, 2));
        daftarKendaraan.add(new Mobil("Mitsubishi", "Pajero Sport", 2021, 4));

        // Daftar penyewa
        ArrayList daftarPenyewa = new ArrayList();
        daftarPenyewa.add(new Penyewa("Andi", daftarKendaraan.get(0)));
        daftarPenyewa.add(new Penyewa("Budi", daftarKendaraan.get(2)));
        daftarPenyewa.add(new Penyewa("Citra", daftarKendaraan.get(1)));

        int pilihan;

        do {
            System.out.println("\n===== MENU RENTAL KENDARAAN =====");
            System.out.println("1. Tampilkan daftar kendaraan");
            System.out.println("2. Tampilkan daftar penyewa");
            System.out.println("3. Tambah penyewa baru");
            System.out.println("4. Hapus penyewa");
            System.out.println("5. Keluar");
            System.out.print("Pilih menu: ");
            pilihan = input.nextInt();
            input.nextLine(); 
            
            switch(pilihan) {
                case 1:
                    System.out.println("\n=== DAFTAR KENDARAAN TERSEDIA ===");
                    int index = 1;
                    for (Kendaraan k : daftarKendaraan) {
                        System.out.println(index + ". " + k.getInfo());
                        index++;
                    }
                    break;

                case 2:
                    System.out.println("\n=== DAFTAR PENYEWA ===");
                    if (daftarPenyewa.isEmpty()) {
                        System.out.println("Belum ada penyewa.");
                    } else {
                        for (Penyewa p : daftarPenyewa) {
                            System.out.println(p.getInfo());
                            System.out.println("---------------------");
                        }
                    }
                    break;

                case 3:
                    System.out.println("\nTambahkan Penyewa Baru");
                    System.out.print("Nama penyewa: ");
                    String nama = input.nextLine();

                    System.out.println("\nPilih kendaraan yang ingin disewa:");
                    for (int i = 0; i < daftarKendaraan.size(); i++) {
                        System.out.println((i + 1) + ". " + daftarKendaraan.get(i).getInfo());
                    }
                    System.out.print("Masukkan nomor kendaraan: ");
                    int pilihKendaraan = input.nextInt();
                    input.nextLine();

                    if (pilihKendaraan < 1 || pilihKendaraan > daftarKendaraan.size()) {
                        System.out.println("Pilihan tidak valid!");
                    } else {
                        Kendaraan dipilih = daftarKendaraan.get(pilihKendaraan - 1);
                        daftarPenyewa.add(new Penyewa(nama, dipilih));
                        System.out.println("Penyewa berhasil ditambahkan!");
                    }
                    break;

                case 4:
                    System.out.println("\nMasukkan nama penyewa yang akan dihapus: ");
                    String hapusNama = input.nextLine();
                    
                    boolean ditemukan = false;
                    for (int i = 0; i < daftarPenyewa.size(); i++) {
                        if (daftarPenyewa.get(i).getNama().equalsIgnoreCase(hapusNama)) {
                            daftarPenyewa.remove(i);
                            System.out.println("Penyewa berhasil dihapus!");
                            ditemukan = true;
                            break;
                        }
                    }
                    if (!ditemukan) {
                        System.out.println("Penyewa tidak ditemukan.");
                    }
                    break;

                case 5:
                    System.out.println("Terima kasih telah menggunakan sistem rental!");
                    break;

                default:
                    System.out.println("Pilihan tidak valid!");
            }
        } while(pilihan != 5);

        input.close();
    }
}

📸 Dokumentasi

Tidak ada komentar:

Posting Komentar

Pertemuan 15 : Aplikasi CRUD JAVA

Pertemuan 15 - Java CRUD Database Tanggal: 9 Desember 2025 Nama: Hosea Felix Sanjaya NRP: 5025241177 a. Setup & Persiapan Envi...