Project 4 Introduction - the SeaPort Project series For this set of projects for the course, we wish to simulate some of the aspects of a number of Sea Ports. Here are the classes and their instance variables we wish to define: SeaPortProgram extends JFrame o variables used by the GUI interface o world: World Thing implement Comparable o index: int o name: String o parent: int World extends Thing o ports: ArrayList o time: PortTime SeaPort extends Thing o docks: ArrayList o que: ArrayList // the list of ships waiting to dock o ships: ArrayList // a list of all the ships at this port o persons: ArrayList // people with skills at this port Dock extends Thing o ship: Ship Ship extends Thing o arrivalTime, dockTime: PortTime o draft, length, weight, width: double o jobs: ArrayList PassengerShip extends Ship o numberOfOccupiedRooms: int o numberOfPassengers: int o numberOfRooms: int CargoShip extends Ship o cargoValue: double o cargoVolume: double o cargoWeight: double Person extends Thing o skill: String Job extends Thing - optional till Projects 3 and 4 o duration: double o requirements: ArrayList // should be some of the skills of the persons PortTime o time: int Eventually, in Projects 3 and 4, you will be asked to show the progress of the jobs using JProgressBar's. 2 Here's a very quick overview of all projects: 1. Read a data file, create the internal data structure, create a GUI to display the structure, and let the user search the structure. 2. Sort the structure, use hash maps to create the structure more efficiently. 3. Create a thread for each job, cannot run until a ship has a dock, create a GUI to show the progress of each job. 4. Simulate competing for resources (persons with particular skills) for each job. Project 4 General Objectives Project 4 - Concurrency Resource pools o Threads competing for multiple resources Blocking threads Extending the GUI interface to visualize the resource pools and progress of the various threads.