UCL Logo

Problem Class Questions 2006
for COMP1008 (Object-Oriented Programming)

Week 3 (Starting 30th January)

These questions are to get you thinking about the design of very large and complex programs, taking an object-oriented perspective. Of course, as yet you have had very little experience of designing programs of any size, so you are not in a position to propose any realistic design. Instead the aim is to get more practice in designing a program in terms of classes, objects, methods, method calls and so on.

1. Consider a national air traffic control system. It will be composed of many parts or sub-systems, for example (this is not in any way complete list) a database to record flight schedules and flight plans, radar tracking systems, numerous consoles to input and display information. The sub-systems need to communicate across networks and will be at many locations. People interacting with the system form an important part of it.

a) Identify and list all the parts of the air traffic control system you can think of. Draw a diagram to show the connections between the parts, using arrows to show how information flows between the parts. Take care to keep the level of abstraction consistent - you are identifying the high level parts, so don't start including low level details such as data files, lines of code or small components such as keyboards.

Do you need to show parts such as aircraft, pilots, runways, airports, terminal buildings? Are these part of the system or parts that need to be shown so the system can be seen in context. Not all parts will be physical entities. For example, you might need flight paths, routing information, queues (of planes) or maps. What about things such as weather information?

b) Look at each part identified in a), consider it as a class and write down a brief description of the class. What instance variables and methods will be needed for each class? Methods can be outlined using pseudocode not real Java code. Don't forget that you are still working at a high-level of abstraction so be careful about introducing low-level detail but do make sure what you are proposing is plausible.

c) Using your classes from b), adding more if needed, show the sequence of method calls on objects of your classes to allow an air traffic controller to do the following:

  • Accept an aircraft ready for take off at an airport, guide it to a runway and set it on a flight path.
  • Pass an aircraft to a different regional control centre.
  • Divert an aircraft to a different airport.
  • Forward an aircraft to the control system of another country.

Note, an air traffic controller is a person who works in a control centre to control and guide the movements of planes. They might be working in a airport control tower or in a regional contol centre.

d) Consider an automated system to handle aircraft landing at an airport. Outline step-by-step the high-level algorithms needed to:

  • Get aircraft in position to land. Assume aircraft arrive at irregular but frequent intervals and can only land at the maximum rate of one every three minutes. Arriving aircraft have to be queued in the air to await their turn to land. Optimum use of the runway must be made so a plane should be ready to land whenever the runway is clear. Aircraft cannot get too close together and must avoid mid-air collisions.
  • Divert all the waiting aircraft to another airport if the runway is suddenly closed.

 

All of these questions potentially require a lot of detail, which becomes complex the more you examine the issues. You must control the level of detail to give plausible answers at the right level of abstraction (not trivial but not over complex). Use your judgement to fill in all the details required but not mentioned in the questions.

Last updated: September 2, 2006

Computer Science Department - University College London - Gower Street - London - WC1E 6BT - Telephone: +44 (0)20 7679 7214 - Copyright 1999-2006 UCL


 Search by Google