Nama : Safa Mashita
NRP : 5025241022
Pertemuan 12 - Aplikasi Rental Kendaraan
Tujuannya adalah memahami konsep inheritance (pewarisan kelas) di Java, serta bagaimana berbagai jenis objek kendaraan dapat dikelola secara terstruktur melalui hubungan antar kelas.
Program ini terdiri dari beberapa kelas utama:
-
Kendaraan (class induk)
-
Mobil (class turunan)
-
Motor (class turunan)
-
Sepeda (class turunan)
-
Penyewa (class pengguna kendaraan)
-
MainRental (class utama untuk menjalankan program)
Setiap kelas memiliki tanggung jawab masing-masing agar sistem mudah dikembangkan dan dipahami.
A. Visualisasi Hubungan Antar Kelas (Class Diagram dengan Menggunakan Inheritance)
Kelas
Kendaraanadalah superclass (kelas induk) yang menyimpan atribut umum seperti merk, model, dan tahun produksi.-
Kelas
Mobil,Motor, danSepedamerupakan subclass (kelas turunan) yang mewarisi atribut dariKendaraan, lalu menambahkan atribut khusus masing-masing. -
Kelas
Penyewaberisi nama penyewa dan objekKendaraanyang disewanya. -
Kelas
MainRentalberfungsi untuk menjalankan program dan menampilkan daftar kendaraan serta daftar penyewa.
Program membuat beberapa objek kendaraan dari jenis yang berbeda (Mobil, Motor, Sepeda).
-
Semua kendaraan dimasukkan ke dalam daftar “kendaraan tersedia”.
-
Program membuat beberapa objek
Penyewayang masing-masing menyewa satu kendaraan dari daftar. -
Program menampilkan daftar kendaraan dan daftar penyewa lengkap dengan kendaraan yang disewanya.
Kendaraan
public class Kendaraan { protected String merk; protected String model; protected int tahunProduksi;
public Kendaraan(String merk, String model, int tahunProduksi) { this.merk = merk; this.model = model; this.tahunProduksi = tahunProduksi; }
public void displayInfo() { System.out.println("Merk: " + merk); System.out.println("Model: " + model); System.out.println("Tahun Produksi: " + tahunProduksi); }}
Kegunaan :Menjadi kelas dasar bagi semua jenis kendaraan.
Atribut:
-
merk: merek kendaraan -
model: tipe/model kendaraan -
tahunProduksi: tahun pembuatan kendaraan
Method:
-
displayInfo(): menampilkan informasi umum kendaraan.
Hubungan:
Menjadi superclass dari Mobil, Motor, dan Sepeda.
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; }
public void displayInfo() { super.displayInfo(); System.out.println("Jumlah Roda: " + jumlahRoda); }}
Kegunaan :Mewakili kendaraan berjenis mobil.
Atribut:
jumlahRoda: jumlah roda (biasanya 4).
Method:
Turunan dari Kendaraan.
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;
}
public void displayInfo() {
super.displayInfo();
System.out.println("Jumlah Roda: " + jumlahRoda);
}
}
Kegunaan :
Mewakili kendaraan bermotor roda dua.
Atribut:
jumlahRoda: jumlah roda motor.
4. Class Sepeda
public class Sepeda extends Kendaraan { private String jenis;
public Sepeda(String merk, String model, int tahunProduksi, String jenis) { super(merk, model, tahunProduksi); this.jenis = jenis; }
public void displayInfo() { super.displayInfo(); System.out.println("Jenis Sepeda: " + jenis); }}
Kegunaan :
Mewakili kendaraan sepeda.
Atribut:
jenis: tipe sepeda (misalnya BMX, balap, gunung).
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 void displayInfo() { System.out.println("Nama Penyewa: " + nama); kendaraanDisewa.displayInfo(); System.out.println(); }}
Kegunaan :
Menyimpan informasi penyewa beserta kendaraan yang disewanya.
Atribut:
nama: nama lengkap penyewa
-
kendaraanDisewa: objek kendaraan yang disewa
6. Class MainRental
import java.util.ArrayList;
public class MainRental { public static void main(String[] args) { ArrayList<Kendaraan> daftarKendaraan = new ArrayList<>(); daftarKendaraan.add(new Mobil("Toyota", "Avanza", 2021, 4)); daftarKendaraan.add(new Mobil("Honda", "Civic", 2020, 4)); daftarKendaraan.add(new Motor("Yamaha", "NMAX", 2022, 2)); daftarKendaraan.add(new Motor("Suzuki", "Satria", 2021, 2)); daftarKendaraan.add(new Sepeda("Polygon", "Heist", 2019, "Balap"));
ArrayList<Penyewa> daftarPenyewa = new ArrayList<>(); daftarPenyewa.add(new Penyewa("Budi Santoso", daftarKendaraan.get(0))); daftarPenyewa.add(new Penyewa("Sinta Maharani", daftarKendaraan.get(2))); daftarPenyewa.add(new Penyewa("Ahmad Rizky", daftarKendaraan.get(4)));
System.out.println("=== Daftar Kendaraan Tersedia ==="); for (Kendaraan k : daftarKendaraan) { k.displayInfo(); System.out.println(); }
System.out.println("=== Daftar Penyewa Kendaraan ==="); for (Penyewa p : daftarPenyewa) { p.displayInfo(); } }}
Kegunaan :
Menjalankan program utama.
Atribut:
Membuat daftar kendaraan dan penyewa.
-
Menampilkan semua informasi di konsol.
D. Output Program/Aplikasi
E. KesimpulanKonsep Inheritance memudahkan pembuatan struktur kelas yang efisien dengan menghindari duplikasi kode.
-
Kelas Kendaraan berfungsi sebagai dasar bagi semua jenis kendaraan, sementara kelas turunannya (Mobil, Motor, Sepeda) menambahkan atribut unik masing-masing.
-
Kelas Penyewa digunakan untuk mengaitkan manusia (penyewa) dengan objek kendaraan yang disewa.
-
MainRental menjadi pusat eksekusi untuk menampilkan data kendaraan dan penyewa.
-
Dengan pendekatan OOP berbasis inheritance, program menjadi lebih modular, mudah diperluas, dan mudah dikelola.
Tidak ada komentar:
Posting Komentar