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