Адмирал командует флотом, корабли которого могут быть разных типов - крейсер, фрегат, линкор. Фрегаты вооружены ядрами, корветы - шрапнелью, линкоры - обоими видами вооружения.
Адмирал может отдавать команды флоту следующих видов:
1) Огонь всем.
2) Огонь всем, у кого ядра (аналогичная операция с шрапнелью).
3) Огонь фрегатам (аналогичные операции с другими типами кораблей.
У каждого корабля свое имя и свое (случайное количество) орудий. Когда корабль стреляет, он должен “доложить” (вывести в консоль) информацию о своем имени и из скольких орудий был произведен выстрел.
Цель - написать программу, которая поможет производить взаимодействия с флотом, отдавать приказы и выводить информацию о выстрелах.
Программа должна быть написана в соответствии с паттерном проектирования MVC. Используйте механизмы наследования, инъекции зависимостей, абстрактные классы при написании кода программы.