Разработать программу, реализующую игру морской бой на языке javа. При проектировании классов выделить один класс контейнер, в переменные
экземпляра которого заносятся объекты других классов. Предусмотреть возможность
сериализации объекта класса контейнера, для сохранения и восстановления
состояния игры. Разработать абстрактный класс, в котором выделить два метода
(draw(, update(), отвечающих за отображение и изменение состояния объектов, а
также необходимые переменные экземпляра, отображающие общие характеристики
всех объектов. Объекты всех классов, кроме класса контейнера, впоследствии
должны наследоваться от абстрактного класса, переопределяя и реализуя его методы
(draw(), update(). В одном из методов класса контейнера, реализующего логику игры
(игровой цикл), вызывать переопределенные методы draw( и update( для объектов
других классов. Описать правила игры. Построить диаграмму классов. Разработать
основные алгоритмы. Реализовать и протестировать программу.