OO Design
Our battleships game needs several different kinds of ship - we need a type to store the ships and information about it.
Create a base class called Ship
Create child classes for each of the ship types in the game (https://en.wikipedia.org/wiki/Battleship_(game)#Description) that inherit from Ship
Ships should have the following properties
- A private array of positions
o A Position is composed of an X and Y coordinate - you should create a struct to encapsulate this
- A read only length
o The constructor for each inherited type should set this to the correct length for the ship type
- A read only color to be drawn in
o The constructor for each inherited type should set this to a different ConsoleColor for drawing
- A flag called Sunk
o This should default to false for all ships
- A property called IsBattleship
o This property should be overridden by each child type. Only the BattleShip should return true.
- A method called Reset
o This method should reset the members to their empty defaults
- A method called Place(Position start, Direction direction)
o Direction should be an enumeration of either Horizontal or Vertical
o This will complete the Position array with the set of coordinates that the ship is covering
e.g Place(new Position(1, 1), Direction.Horizontal) on a patrol boat will fill the array with the points (1, 1) and (2, 1)
Notes:
- This is a separate program from previous weeks. You do not need to consider or implement anything to do with the grid or guessing
- You should choose the correct types and access modifiers for each type.
Create a test program that can run code such as the following:
AircraftCarrier ac = new AircraftCarrier();
Console.WriteLine(ac.IsBattleShip);
ac.Place(new Position(1, 1), Direction.Horizontal);
ac.Reset();
You should write additional code to test all of the methods and ship types.
Given that the positions array is private how can you test that the values are correct?