Latihan Polimorphism

Nama: Valensio Arvin Putra Setiawan
Kelas: PBO G
NRP: 5025231273


1. Ticket.java

Cara Kerja:

  • Superclass: Kelas dasar yang mendefinisikan struktur dan metode umum untuk semua jenis tiket.
  • Atribut:
    • passengerName: Nama penumpang.
    • flightNumber: Nomor penerbangan.
    • baseFare: Tarif dasar tiket.
  • Konstruktor:
    • Menginisialisasi atribut umum (passengerName, flightNumber, baseFare) saat objek dari subclass dibuat.
  • Metode calculateFare():
    • Bersifat abstrak, sehingga setiap subclass wajib mengoverride metode ini sesuai dengan kebijakan tarif masing-masing kelas.
  • Metode getTicketDetails():
    • Menggabungkan informasi penumpang, nomor penerbangan, dan tarif tiket (dihitung dengan calculateFare()), lalu mengembalikan detail tiket sebagai string.

2. EconomyTicket.java

Cara Kerja:

  • Subclass: Mewakili tiket kelas ekonomi, yang menerapkan kebijakan tarif dengan diskon 10%.
  • Konstruktor:
    • Memanggil konstruktor superclass (Ticket) menggunakan super untuk mengisi atribut umum (passengerName, flightNumber, baseFare).
  • Metode calculateFare():
    • Mengoverride metode abstrak di superclass.
    • Mengurangi tarif dasar sebesar 10% menggunakan rumus:
      return baseFare * 0.9;

3. BusinessTicket.java

Cara Kerja:

  • Subclass: Mewakili tiket kelas bisnis, yang menerapkan kebijakan tarif dengan tambahan biaya 25%.
  • Konstruktor:
    • Memanggil konstruktor superclass (Ticket) menggunakan super untuk mengisi atribut umum.
  • Metode calculateFare():
    • Mengoverride metode abstrak di superclass.
    • Menambahkan tarif dasar sebesar 25% menggunakan rumus:
      return baseFare * 1.25;

4. FirstClassTicket.java

Cara Kerja:

  • Subclass: Mewakili tiket kelas First Class, yang menerapkan kebijakan tarif dengan tambahan biaya 50%.
  • Konstruktor:
    • Memanggil konstruktor superclass (Ticket) menggunakan super untuk mengisi atribut umum.
  • Metode calculateFare():
    • Mengoverride metode abstrak di superclass.
    • Menambahkan tarif dasar sebesar 50% menggunakan rumus:
      return baseFare * 1.5;

5. Main.java

Cara Kerja:

  1. Membuat Objek Tiket:

    • Membuat tiga objek:
      • economyTicket dari kelas EconomyTicket.
      • businessTicket dari kelas BusinessTicket.
      • firstClassTicket dari kelas FirstClassTicket.
    • Setiap objek diinisialisasi dengan nama penumpang, nomor penerbangan, dan tarif dasar.
  2. Menggunakan Polimorfisme:

    • Semua objek (economyTicket, businessTicket, firstClassTicket) disimpan dalam referensi bertipe Ticket (superclass).
    • Ketika metode getTicketDetails() dipanggil pada referensi Ticket, implementasi calculateFare() yang sesuai dengan subclass (Ekonomi, Bisnis, atau First Class) dijalankan.
  3. Menampilkan Output:

    • Output mencetak detail tiket, termasuk tarif yang dihitung berdasarkan kebijakan masing-masing kelas.

Contoh Alur Kerja

Input:

  • Nama penumpang: Alice, Bob, Charlie.
  • Nomor penerbangan: FL123, FL124, FL125.
  • Tarif dasar: 500, 800, 1200.

Eksekusi:

  1. Objek economyTicket dibuat:
    • baseFare = 500.
    • Diskon 10% diterapkan: 500 * 0.9 = 450.
  2. Objek businessTicket dibuat:
    • baseFare = 800.
    • Tambahan biaya 25% diterapkan: 800 * 1.25 = 1000.
  3. Objek firstClassTicket dibuat:
    • baseFare = 1200.
    • Tambahan biaya 50% diterapkan: 1200 * 1.5 = 1800.




Comments

Popular posts from this blog

Implementasi Rental Kendaraan

Latihan Ticket Machine