This project is seperated to 2 parts:
- Part 1 - Implementing a Flight management system.
- Part 2 - Implementing a Course Registration system.
- Flight - Represents a flight.
- Company - Represents a company that operates flights.
- Airport - Represents an airport that will manage all the flights and airlines that operate in it.
- Customer - Represents a customer that can book a flight.
- Worker - Represents a crew member that can work on a flight. each worker has a job title. (e.g. pilot, ground crew, etc.)
- FlightManager - Represents a manager that can manage the flights and workers.
- NotificationManager - Represents a manager that can send notifications to customers and workers.
- SearchManager - Represents a manager that handle the search of flights for the company.
- SubCompanyManager - Represents a manager that can manage the sub-companies of the Company.
- Singleton - Used in the Airport class, as we want to have only one instance of the airport to work with.
- Observer - Used in the NotificationManager class as the Notification manager implements Subject interface and the Customer and Worker classes implement the Observer interface.
- Strategy - Used in the SearchManager class, based on the preferences of the user, the SearchManager will use the appropriate search strategy.
- Composite - Used in the Company class, as the company can have sub-companies and we want to treat the sub-companies and the company as the same.