FOP-2425-Marathon/H08/src/main/java/h08/Flight.java
2025-03-16 16:45:18 +01:00

146 lines
3.8 KiB
Java

package h08;
import org.tudalgo.algoutils.student.annotation.StudentImplementationRequired;
import java.time.LocalDateTime;
/**
* Represents a flight. A flight offers information such as the flight details and seat management.
*/
public class Flight {
/**
* The flight number of the flight.
*/
private String flightNumber;
/**
* The departure airport of the flight.
*/
private String departure;
/**
* The destination airport of the flight.
*/
private String destination;
/**
* The departure time of the flight.
*/
private LocalDateTime departureTime;
/**
* The initial number of seats of the flight.
*/
private final int initialSeats;
/**
* The number of available seats.
*/
private int availableSeats;
/**
* Constructs a new flight with the specified flight number, departure airport, destination airport, departure time and initial number of seats.
*
* @param flightNumber the flight number of the flight
* @param departure the departure airport of the flight
* @param destination the destination airport of the flight
* @param departureTime the departure time of the flight
* @param initialSeats the initial number of seats of the flight
*/
public Flight(String flightNumber, String departure, String destination, LocalDateTime departureTime, int initialSeats) {
//TODO H8.2.1
this.flightNumber = flightNumber;
this.departure = departure;
this.destination = destination;
this.departureTime = departureTime;
this.initialSeats = initialSeats;
this.availableSeats = initialSeats;
}
/**
* Validates the flight number.
*
* @param flightNumber the flight number of the flight
*/
@StudentImplementationRequired("H8.2.1")
public void validateFlightNumber(String flightNumber) {
//TODO H8.2.1
org.tudalgo.algoutils.student.Student.crash("H8.2.1 - Remove if implemented");
}
/**
* Returns the flight number of the flight.
*
* @return the flight number of the flight
*/
public String getFlightNumber() {
return flightNumber;
}
/**
* Returns the departure airport of the flight.
*
* @return the departure airport of the flight
*/
public String getDeparture() {
return departure;
}
/**
* Returns the destination airport of the flight.
*
* @return the destination airport of the flight
*/
public String getDestination() {
return destination;
}
/**
* Returns the departure time of the flight.
*
* @return the departure time of the flight
*/
public String getDepartureTime() {
return departureTime.toString();
}
/**
* Returns the number of available seats of the flight.
*
* @return the number of available seats of the flight
*/
public int getAvailableSeats() {
return availableSeats;
}
@StudentImplementationRequired("H8.2.2")
public void bookSeat() {
//TODO H8.2.2
org.tudalgo.algoutils.student.Student.crash("H8.2.2 - Remove if implemented");
}
public void cancelSeat() {
if (availableSeats < initialSeats) {
availableSeats++;
}
}
/**
* Returns a string representation of the flight.
*
* @return a string representation of the flight
*/
@Override
public String toString() {
return "Flight{" +
"flightNumber='" + flightNumber + '\'' +
", departure='" + departure + '\'' +
", destination='" + destination + '\'' +
", departureTime=" + departureTime +
", initialSeats=" + initialSeats +
", availableSeats=" + availableSeats +
'}';
}
}