На основе 2 или 3 лабораторной работы расширить имеющуюся иерархию новыми классами с помощью динамической загрузки модуля (плагина). Новые модули должны добавлять или расширять функциональность базовой программы: новый класс в иерархии, функции по работе с ним, новые элементы в пользовательскм интерфейсе для работы с новым классом. Загружать модули можно из папки либо посредством строки-параметра в главном модуле с именем нового модуля и возможной перекомпиляцией. В идеале добавление нового модуля должно выполняться его динамической загрузкой, т.е. вообще не должно требовать изменения кода программы.
Сделать подпись плагина с последующей проверкой базовой программой данной подписи на достоверность (время активации и целостность). Разработать механизм подписывания плагинов.
Проект должен разрабатываться с использование системы контроля версий git/svn. Все методы, большие блоки кода должны содержать комментарии. Язык комментариев - английский.