В классе BotPanel имеется ряд абстрактных членов, которые необходимо реализовать в классах наследниках. Рассмотрим на примере. Создадим класс робота и установим BotPanel в качестве родительского:
internal class Absorption : BotPanel
{
}
Программа будет ругаться на то, что наш класс не реализует абстрактные члены. При наведении на имя класса, visual studio предложит реализовать их:
Рис. 1. Подсказки от visual studio.
Рис. 2. Генерация методов при помощи visual studio.
Студия продолжит ругаться, потому что базовый класс имеет конструктор с параметрами, поэтому проделываем то же действие и жмем «сгенерировать конструктор»:
Рис. 3. Генерация конструктора при помощи visual studio.
Мы видим, что класс каждого робота должен принимать два параметра, это уникальное имя робота, задаваемое пользователем при создании и тип программы, в которой создается экземпляр бота.
Так же BotPanel требует реализовать методы:
1. GetNameStrategyType() – как правило возвращает строку с названием класса робота.
2. ShowIndividualSettingsDialog() - обычно содержит логику для вызова окна с настройками для бота. Фактически здесь можно реализовать любой функционал, связанный с конфигурированием алгоритма.
Создадим окно настроек для нашего робота и назовем его AbsorptionUi:
Рис. 4. Создание окна настроек для стратегии.
Теперь мы сможем использовать это окно в методе ShowIndividualSettingsDialog:
В итоге получаем следующий код:
Рис. 5. Итог кодогенерации программой.
Комментарии