Overview:
A new airways company wants to make a simple application to keep track of flights and passengers.
In this TMA, it is required to help the head of the company implement the required application.
Requirements:
After a quick meeting with the head of the company, you got the following information:
· It is required to store the whole data in one collection
· Each flight has a number, a pilot and a specific date. In addition, passengers could be added or removed within a given limit for the maximum number of passengers who could be in the same flight. Furthermore, there are other attributes (add at least 3 attributes from your choice). Of course, flight number is unique within the same date.
· Each pilot has a unique ID, a name and other attributes (add at least 2 attributes from your choice).
· Each passenger has a unique passport number, a name and other attributes (add at least 2 attributes from your choice but one of them should be common with pilots).
Moreover, you have been informed that the following operations happen frequently:
· Offering a new flight
· Adding a passenger to a specified flight
· Removing a passenger from a specified flight
· Retrieving the average number of passengers per flight of a specified date
· Displaying all available flights in a format similar to the following: date1: flightNo1 flightNo2 flightNo3 …
date2: flightNo1 flightNo2 flightNo3 …
…
where dates and flights are sorted in ascending order
· Saving all the data into a text file
Analysis:
Q1: There are common attributes and methods between passengers and pilots. What is the best choice for designing and writing the codes of these two classes? Explain your answer.
Q2: Draw a simple class diagram showing only relationships between the classes.
Implementation:
After analysing the given requirements, implement the required application:
· with Object Oriented Programming style
· following the rules of good programming style (e.g. adding comments, etc.)
· using only the material covered in M251 (and its prerequisites)
Hints:
· For each class, it is required to implement constructors, setters, getters, toString() method, and any other necessary method
· If the user tries to do an operation that could violate the state of objects, the operation should be ignored and the application should display an error message (e.g. adding a passenger to the same flight twice, etc.)
· Checking equality of any 2 objects should be done via the equals() method
· There is a class that will do the main job of as follows:
o It has one collection to store the whole data (all flights)
o It has static methods, one for each operation happens frequently
o For each adding or removing operation, a message should be displayed to the user to explain the status of the operation (i.e. if it was successful or not)
Testing:
After implementing the required classes, design and implement a testing class to test them as follows:
- Create at least 7 flights in at least 3 different dates and add them to the collection that stores the whole data then add and remove some passengers from them.
- Try to violate the state of the objects and show that your code prevents all violations.
- Show that the other operations that happen frequently are working fine
- At the end, the whole data should be saved into a text file and this file should be saved automatically inside the folder contains your Java project