Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: THEend8_
Assignment
Revision: 1.0.1
Abstract
The goal of this assignment is to implement and test a set of classes and interfaces1
, which build
on the solution for the first assignment.
Language requirements: Java version 11, JUnit 4.
Please carefully read the Appendix A Document. It outlines critical mistakes
which you must avoid in order to avoid losing marks. This is being heavily emphasised
here because these are critical mistakes which must be avoided.
If at any point you are even slightly unsure, please check as soon as possible with
course staff !
Preamble
All work on this assignment is to be your own individual work. As detailed in Lecture 1, code
supplied by course staff (from this semester) is acceptable, but there are no other exceptions.
All times are given in Australian Eastern Standard Time. It is your responsibility to ensure that
you adhere to this timezone for all assignment related matters. Please bear this in mind, especially
if you are enrolled in the External offering and may be located in a different time zone.
Introduction
In this assignment you will finish building a simple simulation of an air traffic control (ATC)
system.
In the first assignment you implemented the core model for the ATC. In the second assignment
you will implement some of the more advanced logic to provide a very simple simulation for the
ATC.
In this assignment, aircraft queues will be introduced. There are two types of aircraft queue;
a landing queue and a takeoff queue. Aircraft can be added or removed from queues. It is also
possible to check if an aircraft is in a queue, and to retrieve a list of all aircraft in the queue in
order.
A control tower was introduced in the first assignment, but it had limited functionality. This
will now be expanded. A control tower can undertake actions such as trying to land or takeoff
aircraft, and placing aircraft in queues. The functionality for finding unoccupied gates will also be
expanded from the first assignment.
1From now on, classes and interfaces will be shortened to simply “classes”
1
A control tower initialiser is also introduced in this assignment. The purpose of this is primarily
to load information from 4 data files (which store information about aircraft and their tasks,
terminals and gates, queues, and the number of ticks elapsed) into the ATC model when the
program starts. This information will allow the simulation to be run, and for aircraft to move
between various tasks.
Passenger and freight aircraft will now also have the ability to unload their passengers or cargo.
Multiple entities within the ATC now have the option to be encoded, and have hashcode and/or
equals methods.
A simple GUI has been provided to you as part of the provided code. It is in the towersim.display
package. It will not work until you have implemented the other parts of the assignment that it uses.
The GUI has been implemented using JavaFX and consists of three classes. View creates the
main window for the ATC GUI. AirportCanvas displays the structure of the airport. ViewModel
represents the ATC model that is to be displayed. The ATC application is initialised and started
by the Launcher class in the towersim package. It loads the tick, aircraft, queue, and terminals
and gates data and creates the GUI. Most of the GUI code has been provided to you.
In ViewModel you need to implement some of the logic that is executed by events in the simulation
when buttons are pressed, and to save information in the ATC model to data files.
The functionality you need to implement in ViewModel is to:
? ViewModel.getDroneAlertHandler().
Defines what happens when the ”Drone Alert” button is clicked.