Tiket Pesawat
Nama : Hafidz Panji Ashari
NRP : 5025231278
Kelas : PBO-A
Kode ini membuat sistem reservasi tiket pesawat yang mendukung tiga kelas penerbangan (Ekonomi, Bisnis, First Class), menghitung tarif berdasarkan kebijakan diskon atau tambahan biaya, dan menampilkan detail tiket yang dimasukkan oleh pengguna.
Superclass Ticket:
- Kelas abstrak yang berfungsi sebagai template dasar untuk semua jenis tiket.
- Memiliki atribut
passengerName(nama penumpang) danbaseFare(tarif dasar). - Metode abstrak
calculateFare()harus diimplementasikan oleh subclass. displayTicketDetails()menampilkan detail tiket.
Subclass EconomyTicket, BusinessTicket, FirstClassTicket:
- Masing-masing subclass mewarisi dari
Ticketdan mengoverride metodecalculateFare():EconomyTicket: Memberikan diskon 10% dari tarif dasar.BusinessTicket: Menambahkan biaya 25% ke tarif dasar.FirstClassTicket: Menambahkan biaya 50% ke tarif dasar.
- Setiap subclass menampilkan informasi tambahan seperti diskon atau biaya tambahan.
Kelas AirlineReservationSystem (Main Class):
- Menggunakan
Scanneruntuk membaca input dari pengguna: nama penumpang, tarif dasar, dan pilihan kelas. - Berdasarkan pilihan pengguna, program membuat objek dari kelas tiket yang sesuai.
- Menampilkan detail tiket menggunakan metode
displayTicketDetails(). - Menutup
Scanneruntuk menghindari kebocoran sumber daya.
import java.util.Scanner;
abstract class Ticket {
protected String passengerName;
protected double baseFare;
public Ticket(String passengerName, double baseFare) {
this.passengerName = passengerName;
this.baseFare = baseFare;
}
public abstract double calculateFare();
public void displayTicketDetails() {
System.out.println("Passenger Name: " + passengerName);
System.out.println("Base Fare: $" + baseFare);
System.out.println("Total Fare: $" + calculateFare());
}
}
class EconomyTicket extends Ticket {
private final double discountRate = 0.10;
public EconomyTicket(String passengerName, double baseFare) {
super(passengerName, baseFare);
}
@Override
public double calculateFare() {
return baseFare - (baseFare * discountRate);
}
@Override
public void displayTicketDetails() {
super.displayTicketDetails();
System.out.println("Class: Economy");
System.out.println("Discount Applied: " + (discountRate * 100) + "%");
}
}
class BusinessTicket extends Ticket {
private final double additionalChargeRate = 0.25;
public BusinessTicket(String passengerName, double baseFare) {
super(passengerName, baseFare);
}
@Override
public double calculateFare() {
return baseFare + (baseFare * additionalChargeRate);
}
@Override
public void displayTicketDetails() {
super.displayTicketDetails();
System.out.println("Class: Business");
System.out.println("Additional Charge: " + (additionalChargeRate * 100) + "%");
}
}
class FirstClassTicket extends Ticket {
private final double additionalChargeRate = 0.50;
public FirstClassTicket(String passengerName, double baseFare) {
super(passengerName, baseFare);
}
@Override
public double calculateFare() {
return baseFare + (baseFare * additionalChargeRate);
}
@Override
public void displayTicketDetails() {
super.displayTicketDetails();
System.out.println("Class: First Class");
System.out.println("Additional Charge: " + (additionalChargeRate * 100) + "%");
}
}
public class AirlineReservationSystem {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter passenger name: ");
String passengerName = scanner.nextLine();
System.out.print("Enter base fare: ");
double baseFare = scanner.nextDouble();
System.out.println("Select class (1: Economy, 2: Business, 3: First Class): ");
int classChoice = scanner.nextInt();
Ticket ticket;
switch (classChoice) {
case 1:
ticket = new EconomyTicket(passengerName, baseFare);
break;
case 2:
ticket = new BusinessTicket(passengerName, baseFare);
break;
case 3:
ticket = new FirstClassTicket(passengerName, baseFare);
break;
default:
System.out.println("Invalid choice. Defaulting to Economy.");
ticket = new EconomyTicket(passengerName, baseFare);
break;
}
System.out.println("\nTicket Details:");
ticket.displayTicketDetails();
scanner.close();
}
}
output

Comments
Post a Comment