Step 1:Define an interface Contact

That has the following methods (notice that some are for type String, this means you'll have to convert them to int's)

1. getLength/setLength (int)
2. getSpeed/setSpeed (int)
3. setSpeed(String)
4. getName/setName (String)
5. getType/setType (String) (This is an arbitrary string label for anything of class Contact)

Step 2: Define an abstract class Ship that implements the Contact Interface. The methods in contact should be defined (no longer abstract, but they can be overriden later on).

Step 3: Define a class Destroyer that subclasses Ship

1. that has the following attributes and get/set methods. Supports int and String setNumberMissiles() arguments. If the String argument of setNumberMissiles() encounters a parsing error, set the numberMissiles to 2.

1. numberMissile

Step 4: Define a class Submarine that subclasses Ship

1. that has the following attributes and get/set methods. Supports int and String setNumberTorpedos() arguments. If the String argument of setNumberTorpedos() encounters a parsing error, set the numberTorpedos to 2

1. numberTorpedos

Step 5: Define an abstract class Aircraft that implements the Contact Interface. This class should also contain a getAltitude/setAltitude(int) method.

Step 6: Define a class P3 that extends the Aircraft abstract class

1. That has the following attributes and get/set methods.

1. numberEngines

Step 7: In a test class:,

1. Create 2 Destroyers
2. Create 2 Submarines
3. Create 2 P3s
4. Make a collection of Destroyers (you select the type of Collection)
5. Make a collection of Submarines (you select the type)
6. Make a collection that holds all Ships
7. Make a collection that holds all Contacts

You get to pick the names and values for the classes above.

Step 8: Print out the list of Contacts to System.out.println(). You should override the toString() method to return something "meaningful" for each class. Again, no hard requirements, just use a little common sense (i.e. print out more than the name).

Note: Use defensive programming whenever you can, for example, none of your methods should let the user set the number of items to a negative number.

You can choose what the constructors set these parameters to in your classes (they can be defaults or you can provide them). Typically, you try to exercise your code as much as possible in a test case so try a bit of each.

In the Test class, again, you can choose what values you wish to assign to the test cases.

Also, in your test class, you should exercise your execption handling case for the submarine by setting the number of torpedoes in one of your submarine classes to the string "Foo".

Academic Honesty!
It is not our intention to break the school's academic policy. Posted solutions are meant to be used as a reference and should not be submitted as is. We are not held liable for any misuse of the solutions. Please see the frequently asked questions page for further questions and inquiries.
Kindly complete the form. Please provide a valid email address and we will get back to you within 24 hours. Payment is through PayPal, Buy me a Coffee or Cryptocurrency. We are a nonprofit organization however we need funds to keep this organization operating and to be able to complete our research and development projects.