Tugas Pertemuan 12 Pemrograman Berbasis Objek (PBO) A 2024

Nama : Amadeo Yesa

NRP : 5025231160

Kelas : A

Tahun : 2024


Pada pertemuan 12, diberikan studi kasus sebuah sistem reservasi tiket pesawat yang mendukung tiga jenis kelas penerbangan:

  • Ekonomi
  • Bisnis
  • First Class

Setiap kelas penerbangan memiliki perhitungan tarif yang berbeda-beda. Selain itu, setiap kelas juga memiliki kebijakan khusus, seperti fasilitas tambahan, batas bagasi, atau layanan yang disediakan.


Class Ticket (Superclass)
import java.util.List;

public class Ticket {
    protected double baseFare;
    protected String passengerName;
    protected int passengerAge;
    protected double tax;
    protected double additionalCharge;

    public Ticket(double baseFare, String passengerName, int passengerAge){
        this.baseFare = baseFare;
        this.passengerName = passengerName;
        this.passengerAge = passengerAge;
        this.tax = 0.0;
        this.additionalCharge = 0.0;
    }

    public void setTax(double tax) {
        this.tax = tax;
    }

    public void setAdditionalCharge(double additionalCharge) {
        this.additionalCharge = additionalCharge;
    }

    public double calculateFare(){
        double fareAfterTax = baseFare + (baseFare * (tax / 100));
        return fareAfterTax + additionalCharge;
    }

    public List getFacilities() {
        return List.of("Basic seating");
    }

    public void displayTicketInfo() {
        System.out.println("Passenger Name: " + passengerName);
        System.out.println("Passenger Age: " + passengerAge);
        System.out.println("Base Fare: " + baseFare);
        System.out.println("Tax: " + tax + "%");
        System.out.println("Additional Charges: " + additionalCharge);
        System.out.println("Total Fare: " + calculateFare());
    }
}

Class EconomyTicket
import java.util.List;

public class EconomyTicket extends Ticket {
    private double luggageAllowance;

    public EconomyTicket(double baseFare, String passengerName, int passengerAge) {
        super(baseFare, passengerName, passengerAge);
        this.luggageAllowance = 15.0;
    }

    public double getLuggageAllowance() {
        return luggageAllowance;
    }

    public void setLuggageAllowance(double luggageAllowance) {
        this.luggageAllowance = luggageAllowance;
    }

    @Override
    public double calculateFare(){
        baseFare = baseFare * 0.9;
        double fareAfterTax = baseFare + (baseFare * (tax / 100));
        return fareAfterTax + additionalCharge;
    }

    @Override
    public List getFacilities() {
        return List.of("Basic seating");
    }

    @Override
    public void displayTicketInfo() {
        super.displayTicketInfo();
        System.out.println("Luggage Allowance: " + luggageAllowance + " kg");
    }
}

Class BusinessTicket
import java.util.List;

public class BusinessTicket extends Ticket {
    private double luggageAllowance;

    public BusinessTicket(double baseFare, String passengerName, int passengerAge) {
        super(baseFare, passengerName, passengerAge);
        this.luggageAllowance = 30.0;
    }

    public double getLuggageAllowance() {
        return luggageAllowance;
    }

    public void setLuggageAllowance(double luggageAllowance) {
        this.luggageAllowance = luggageAllowance;
    }

    @Override
    public double calculateFare(){
        baseFare = baseFare * 1.25;
        double fareAfterTax = baseFare + (baseFare * (tax / 100));
        return fareAfterTax + additionalCharge;
    }

    @Override
    public List getFacilities() {
        return List.of("Business seating", "Free meal", "Priority boarding");
    }

    @Override
    public void displayTicketInfo() {
        super.displayTicketInfo();
        System.out.println("Luggage Allowance: " + luggageAllowance + " kg");
    }
}

Class FirstClassTicket
import java.util.List;

public class FirstClassTicket extends Ticket {
    private double luggageAllowance;

    public FirstClassTicket(double baseFare, String passengerName, int passengerAge) {
        super(baseFare, passengerName, passengerAge);
        this.luggageAllowance = 50.0;
    }

    public double getLuggageAllowance() {
        return luggageAllowance;
    }

    public void setLuggageAllowance(double luggageAllowance) {
        this.luggageAllowance = luggageAllowance;
    }

    @Override
    public double calculateFare(){
        baseFare = baseFare * 1.50;
        double fareAfterTax = baseFare + (baseFare * (tax / 100));
        return fareAfterTax + additionalCharge;
    }

    @Override
    public List getFacilities() {
        return List.of("Business seating", "Free meal", "Priority boarding", "Luxury lounge");
    }

    @Override
    public void displayTicketInfo() {
        super.displayTicketInfo();
        System.out.println("Luggage Allowance: " + luggageAllowance + " kg");
    }
}

Main
public class Main {
    public static void main(String[] args) {
        double baseFare = 1000.0;

        Ticket economy = new EconomyTicket(baseFare, "Budi", 20);
        Ticket business = new BusinessTicket(baseFare, "Andi", 24);
        Ticket firstClass = new FirstClassTicket(baseFare, "Bambang", 22);

        economy.setTax(10);
        System.out.println("Economy Ticket:");
        economy.displayTicketInfo();
        System.out.println("Facilities: " + economy.getFacilities());

        business.setTax(10);
        System.out.println("\nBusiness Ticket:");    
        business.displayTicketInfo();
        System.out.println("Facilities: " + business.getFacilities());

        firstClass.setTax(10);
        System.out.println("\nFirst Class Ticket:");
        firstClass.displayTicketInfo();
        System.out.println("Facilities: " + firstClass.getFacilities());
    }
}


Hasil













Source Code:

Comments

Popular posts from this blog

Evaluasi Tengah Semester Pemrograman Berbasis Objek (PBO) A 2024

Tugas Pertemuan 7 Pemrograman Berbasis Objek (PBO) A 2024

Evaluasi Akhir Semester Pemrograman Berbasis Objek (PBO) A 2024