import java.util.ArrayList;
import java.util.List;

// Hava Yolu Şirketi
class AirlineCompany {
    private String name;
    private String code;
    private List<Airport> airports;
    private List<Flight> flights;

    public AirlineCompany(String name, String code) {
        this.name = name;
        this.code = code;
        this.airports = new ArrayList<>();
        this.flights = new ArrayList<>();
    }

    public void addAirport(Airport airport) {
        airports.add(airport);
    }

    public void addFlight(Flight flight) {
        flights.add(flight);
    }

    // Getter ve Setter metodları
    public String getName() {
        return name;
    }

    public String getCode() {
        return code;
    }

    public List<Airport> getAirports() {
        return airports;
    }

    public List<Flight> getFlights() {
        return flights;
    }
}

// Havalimanı
class Airport {
    private String name;
    private String address;
    private String code;
    private String manager;

    public Airport(String name, String address, String code, String manager) {
        this.name = name;
        this.address = address;
        this.code = code;
        this.manager = manager;
    }

    // Getter ve Setter metodları
    public String getName() {
        return name;
    }

    public String getAddress() {
        return address;
    }

    public String getCode() {
        return code;
    }

    public String getManager() {
        return manager;
    }
}

// Uçak
class Aircraft {
    private String type;
    private int capacity;
    private int productionYear;
    private List<String> crewMembers;

    public Aircraft(String type, int capacity, int productionYear) {
        this.type = type;
        this.capacity = capacity;
        this.productionYear = productionYear;
        this.crewMembers = new ArrayList<>();
    }

    // Getter ve Setter metodları
    public String getType() {
        return type;
    }

    public int getCapacity() {
        return capacity;
    }

    public int getProductionYear() {
        return productionYear;
    }
}

// Uçuş
class Flight {
    private String flightNumber;
    private Airport departureAirport;
    private Airport arrivalAirport;
    private Aircraft aircraft;
    private String flightTime;
    private String flightDate;
    private String gate;
    private String status;

    public Flight(String flightNumber, Airport departureAirport, Airport arrivalAirport, Aircraft aircraft, String flightTime, String flightDate, String gate, String status) {
        this.flightNumber = flightNumber;
        this.departureAirport = departureAirport;
        this.arrivalAirport = arrivalAirport;
        this.aircraft = aircraft;
        this.flightTime = flightTime;
        this.flightDate = flightDate;
        this.gate = gate;
        this.status = status;
    }

    // Getter ve Setter metodları
    public String getFlightNumber() {
        return flightNumber;
    }
}

// Konum
class Location {
    private String country;
    private String city;

    public Location(String country, String city) {
        this.country = country;
        this.city = city;
    }

    // Getter ve Setter metodları
    public String getCountry() {
        return country;
    }

    public String getCity() {
        return city;
    }
}

// Uçuş Rezervasyonu
class Reservation {
    private String reservationNumber;
    private List<Person> passengers;
    private List<Seat> assignedSeats;
    private String status;

    public Reservation(String reservationNumber) {
        this.reservationNumber = reservationNumber;
        this.passengers = new ArrayList<>();
        this.assignedSeats = new ArrayList<>();
    }

    // Getter ve Setter metodları
    public String getReservationNumber() {
        return reservationNumber;
    }
}

// Güzergah
class Route {
    private Airport departureAirport;
    private Airport arrivalAirport;
    private String creationDate;

    public Route(Airport departureAirport, Airport arrivalAirport, String creationDate) {
        this.departureAirport = departureAirport;
        this.arrivalAirport = arrivalAirport;
        this.creationDate = creationDate;
    }

    // Getter ve Setter metodları
}

// Uçuş Koltuğu
class Seat {
    private String seatNumber;
    private boolean isReserved;

    public Seat(String seatNumber) {
        this.seatNumber = seatNumber;
        this.isReserved = false;
    }

    // Getter ve Setter metodları
    public String getSeatNumber() {
        return seatNumber;
    }
}

// Kişi
class Person {
    private String name;
    private String role; // Customer, Pilot, Crew, Admin

    public Person(String name, String role) {
        this.name = name;
        this.role = role;
    }

    // Getter ve Setter metodları
    public String getName() {
        return name;
    }

    public String getRole() {
        return role;
    }
}

// Ödeme
class Payment {
    private double amount;
    private String paymentMethod;
    private String status;

    public Payment(double amount, String paymentMethod) {
        this.amount = amount;
        this.paymentMethod = paymentMethod;
        this.status = "Pending";
    }

    // Getter ve Setter metodları
    public double getAmount() {
        return amount;
    }

    public String getPaymentMethod() {
        return paymentMethod;
    }

    public String getStatus() {
        return status;
    }
}

// Ana sınıf
public class Main {
    public static void main(String[] args) {
        // Havayolu şirketi oluştur
        AirlineCompany airline = new AirlineCompany("Example Airline", "EA");
        
        // Havalimanları oluştur
        Airport airport1 = new Airport("Istanbul Airport", "Istanbul, Turkey", "IST", "Mr. Smith");
        Airport airport2 = new Airport("London Heathrow", "London, UK", "LHR", "Mrs. Johnson");
        
        // Havalimanlarını havayolu şirketine ekle
        airline.addAirport(airport1);
        airline.addAirport(airport2);
        
        // Uçak oluştur
        Aircraft aircraft = new Aircraft("Boeing 737", 180, 2015);
        
        // Uçuş oluştur
        Flight flight = new Flight("EA123", airport1, airport2, aircraft, "10:00", "2024-12-01", "A1", "Scheduled");
        
        // Uçuşu havayolu şirketine ekle
        airline.addFlight(flight);
        
        // Bilgileri yazdır
        System.out.println("Havayolu Şirketi: " + airline.getName());
        System.out.println("Uçuş Eklendi: " + flight.getFlightNumber());
    }
}
