Разделение логики и пользовательского интерфейса на основе классов
К первому заданию по курсу "Введение в компьютерную графику" студентам АСВК в рамках практикума добавляются требования:

При проектировании модуля обучения классификатора необходимо всю логику вынести в отдельный класс или классы (движок) с архитектурой MVC. Классы, реализующие логику (движок), НЕ должны заниматься каким-либо взаимодействием с пользовательским интерфейсом. Все взаимодействия должны происходить через отдельный класс-контроллер.
Требуется реализовать два пользовательских интерфейса - оконный и консольный. То есть результатом работы должны быть два .exe-файла, либо один exe-файл, работающий в двух режимам - GUI и консольном. Класс (или классы) движка включается в оба exe на этапе компиляции. Возможно (но не обязательно) оформить классы движка в отдельную библиотеку (lib/dll). Оконный интерфейс должен предлагать пользователю ряд настроек алгоритма обучения (это могут быть используемые признаки, пороги, коэффициенты, другие специфические настройки алгоритмов), консольный – представляет собой ввод тех же настроек в виде параметров командной строки.
Оконный интерфейс должен иметь набор стандартных управляющих элементов (текстовых полей, checkbox’ы, кнопка для запуска счета алгоритма и т.п.).