Untitled
unknown
plain_text
2 years ago
3.9 kB
12
Indexable
import java.util.HashMap;
import java.util.Map;
// Abstract class representing an airline
abstract class Airline {
protected double operatingCost;
public Airline(double operatingCost) {
this.operatingCost = operatingCost;
}
public abstract double calculateTicketCost(double distance, String seatingClass);
}
// Concrete airline class - Delta
class Delta extends Airline {
private static final double PER_MILE_COST = 0.50;
public Delta(double operatingCost) {
super(operatingCost);
}
@Override
public double calculateTicketCost(double distance, String seatingClass) {
return distance * (PER_MILE_COST + operatingCost);
}
}
// Concrete airline class - United
class United extends Airline {
private static final double PER_MILE_COST = 0.75;
private static final double PREMIUM_PER_MILE_COST = 0.10;
public United(double operatingCost) {
super(operatingCost);
}
@Override
public double calculateTicketCost(double distance, String seatingClass) {
double cost = distance * (PER_MILE_COST + operatingCost);
if (seatingClass.equals("Premium")) {
cost += PREMIUM_PER_MILE_COST * distance;
}
return cost;
}
}
// Concrete airline class - Southwest
class Southwest extends Airline {
private static final double PER_MILE_COST = 1.00;
public Southwest(double operatingCost) {
super(operatingCost);
}
@Override
public double calculateTicketCost(double distance, String seatingClass) {
return distance * PER_MILE_COST;
}
}
// Concrete airline class - LuigiAir
class LuigiAir extends Airline {
private static final double FIXED_COST = 100.0;
private static final double OPERATING_COST_MULTIPLIER = 2.0;
public LuigiAir(double operatingCost) {
super(operatingCost);
}
@Override
public double calculateTicketCost(double distance, String seatingClass) {
double luigiAirOperatingCost = OPERATING_COST_MULTIPLIER * operatingCost;
double luigiAirCost = Math.max(FIXED_COST, luigiAirOperatingCost);
return luigiAirCost;
}
}
// Singleton class to manage airlines and ticket calculation
class AirlineTicketManager {
private static AirlineTicketManager instance;
private Map<String, Airline> airlines;
private AirlineTicketManager() {
airlines = new HashMap<>();
airlines.put("Delta", new Delta(0.0));
airlines.put("United", new United(0.0));
airlines.put("Southwest", new Southwest(0.0));
airlines.put("LuigiAir", new LuigiAir(0.0));
}
public static AirlineTicketManager getInstance() {
if (instance == null) {
instance = new AirlineTicketManager();
}
return instance;
}
public double calculateTicketCost(String airlineName, double distance, String seatingClass) {
Airline airline = airlines.get(airlineName);
if (airline != null) {
return airline.calculateTicketCost(distance, seatingClass);
}
throw new IllegalArgumentException("Invalid airline: " + airlineName);
}
}
// Example usage
public class Main {
public static void main(String[] args) {
AirlineTicketManager manager = AirlineTicketManager.getInstance();
double cost1 = manager.calculateTicketCost("United", 150.0, "Premium");
double cost2 = manager.calculateTicketCost("Delta", 60.0, "Business");
double cost3 = manager.calculateTicketCost("Southwest", 1000.0, "Economy");
double cost4 = manager.calculateTicketCost("LuigiAir", 50.0, "Business");
System.out.println(cost1); // Output: 152.50
System.out.println(cost2); // Output: 95.00
System.out.println(cost3); // Output: 1000.00
System.out.println(cost4); // Output: 125.00
}
}
Editor is loading...