Tugas Pertemuan 12 - 5025231186
Agym Kamil Ramadhan
5025231186
Polymorphism Plane Ticket
Penjelasan:
Base Class (
PlaneTicket):- Merupakan kelas abstrak dengan metode abstrak
calculatePrice()yang harus diimplementasikan oleh setiap subclass. - Memiliki metode umum
displayTicketDetails()untuk menampilkan informasi tiket.
- Merupakan kelas abstrak dengan metode abstrak
Subclass:
EconomyClassTicket: Menghitung harga tiket berdasarkan harga dasar.BusinessClassTicket: Menambahkan biaya layanan ke harga dasar.FirstClassTicket: Menambahkan pajak kemewahan ke harga dasar.
Polymorphism:
- Polymorphism digunakan saat kita memanggil
calculatePrice()pada objekPlaneTickettanpa 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
Posting Komentar