Senin, 03 November 2025

Pertemuan 12 - Aplikasi Rental Kendaraan

 Nama     : Safa Mashita

 NRP       : 5025241022

Pertemuan 12 - Aplikasi Rental Kendaraan

Pada pertemuan kali ini, saya mempelajari bagaimana membangun sistem sederhana berbasis Object-Oriented Programming (OOP) di Java untuk mengelola data rental kendaraan. Sistem ini memungkinkan pengguna untuk melihat daftar kendaraan yang tersedia dan daftar penyewa beserta kendaraan yang mereka sewa.

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 Kendaraan adalah superclass (kelas induk) yang menyimpan atribut umum seperti merk, model, dan tahun produksi.

  • Kelas Mobil, Motor, dan Sepeda merupakan subclass (kelas turunan) yang mewarisi atribut dari Kendaraan, lalu menambahkan atribut khusus masing-masing.

  • Kelas Penyewa berisi nama penyewa dan objek Kendaraan yang disewanya.

  • Kelas MainRental berfungsi untuk menjalankan program dan menampilkan daftar kendaraan serta daftar penyewa.


B. Alur Program
  1. Program membuat beberapa objek kendaraan dari jenis yang berbeda (Mobil, Motor, Sepeda).

  2. Semua kendaraan dimasukkan ke dalam daftar “kendaraan tersedia”.

  3. Program membuat beberapa objek Penyewa yang masing-masing menyewa satu kendaraan dari daftar.

  4. Program menampilkan daftar kendaraan dan daftar penyewa lengkap dengan kendaraan yang disewanya.


C. Kode dan Penjelasan

1. Class 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.


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

    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. Kesimpulan
  • Konsep 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

Pertemuan 16 - Membuat Aplikasi CRUD Java

 Nama          : Safa Mashita  NRP            : 5025241022 Membuat Aplikasi CRUD Java - Manajemen Buku Perpustakaan Pada pertemuan ini, saya...