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






Tidak ada komentar:
Posting Komentar