Tugas Pertemuan 12 - 5025231186

Agym Kamil Ramadhan   
5025231186

Polymorphism Plane Ticket

Penjelasan:

  1. Base Class (PlaneTicket):

    • Merupakan kelas abstrak dengan metode abstrak calculatePrice() yang harus diimplementasikan oleh setiap subclass.
    • Memiliki metode umum displayTicketDetails() untuk menampilkan informasi tiket.
  2. Subclass:

    • EconomyClassTicket: Menghitung harga tiket berdasarkan harga dasar.
    • BusinessClassTicket: Menambahkan biaya layanan ke harga dasar.
    • FirstClassTicket: Menambahkan pajak kemewahan ke harga dasar.
  3. Polymorphism:

    • Polymorphism digunakan saat kita memanggil calculatePrice() pada objek PlaneTicket tanpa mengetahui tipe spesifiknya. Setiap subclass memiliki implementasi yang berbeda untuk metode ini.





// Base class: PlaneTicket
abstract class PlaneTicket {
protected String passengerName;
protected String flightNumber;

public PlaneTicket(String passengerName, String flightNumber) {
this.passengerName = passengerName;
this.flightNumber = flightNumber;
}

// Abstract method for calculating the ticket price
public abstract double calculatePrice();

// General method for displaying ticket details
public void displayTicketDetails() {
System.out.println("Passenger Name: " + passengerName);
System.out.println("Flight Number: " + flightNumber);
System.out.println("Ticket Price: $" + calculatePrice());
}
}

// Economy Class Ticket
class EconomyClassTicket extends PlaneTicket {
private double basePrice;

public EconomyClassTicket(String passengerName, String flightNumber, double basePrice) {
super(passengerName, flightNumber);
this.basePrice = basePrice;
}

@Override
public double calculatePrice() {
return basePrice;
}
}

// Business Class Ticket
class BusinessClassTicket extends PlaneTicket {
private double basePrice;
private double serviceCharge;

public BusinessClassTicket(String passengerName, String flightNumber, double basePrice, double serviceCharge) {
super(passengerName, flightNumber);
this.basePrice = basePrice;
this.serviceCharge = serviceCharge;
}

@Override
public double calculatePrice() {
return basePrice + serviceCharge;
}
}

// First Class Ticket
class FirstClassTicket extends PlaneTicket {
private double basePrice;
private double luxuryTax;

public FirstClassTicket(String passengerName, String flightNumber, double basePrice, double luxuryTax) {
super(passengerName, flightNumber);
this.basePrice = basePrice;
this.luxuryTax = luxuryTax;
}

@Override
public double calculatePrice() {
return basePrice + luxuryTax;
}
}

// Main class for testing
public class PlaneTicketDemo {
public static void main(String[] args) {
// Polymorphism in action
PlaneTicket economyTicket = new EconomyClassTicket("Alice", "FL123", 200);
PlaneTicket businessTicket = new BusinessClassTicket("Bob", "FL456", 500, 100);
PlaneTicket firstClassTicket = new FirstClassTicket("Charlie", "FL789", 1000, 300);

// Display ticket details
economyTicket.displayTicketDetails();
System.out.println();

businessTicket.displayTicketDetails();
System.out.println();

firstClassTicket.displayTicketDetails();
}
}

Komentar

Postingan populer dari blog ini

Pemrograman Berorientasi Objek A - ETS

Tugas Pertemuan 3 - 5025231186

Tugas Pertemuan 4 - 5025231186