Untitled
unknown
plain_text
2 years ago
3.9 kB
7
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...