Kolesa Group
- 1 year ago
- 0
- 0
KOL (Key Objects Library) — библиотека объектных типов для программирования в среде Delphi и Lazarus . Основная цель KOL — уменьшение размера конечной программы ( Win32 , GUI ) в 5—10 раз по сравнению с тем, что даёт библиотека VCL . Поддерживаются все 32-разрядные версии Delphi , начиная с Delphi 2 и заканчивая BDS 2010.
MCK (Mirror Classes Kit) — это набор зеркальных классов, позволяющих разрабатывать проект на основе библиотеки KOL визуально. Компоненты MCK устанавливаются на палитру компонентов, работа с ними происходит так же, как это обычно делается в Delphi при визуальной разработке. В откомпилированном проекте визуальные компоненты замещаются своими невизуальными двойниками из KOL. Использование MCK сокращает размер исполнимой программы так же, как и при использовании KOL невизуально. Преимуществом является визуальная разработка, недостатком же — зависимость от версии Delphi (поддерживаются Delphi2, Delph3, Delphi4, Delphi5, Delphi6, Delphi7, BDS 2005—2012, Kylix а также Free Pascal Compiler 1.0.5 и выше).
Проект KOL ведётся программистом Владимиром Кладовым уже около десяти лет. Проекты KOL и MCK содержат в себе сотни компонентов.
Одна из проблем систем типа RAD — размеры исполняемого модуля приложения. Основной виновник этого — реализация технологий ООП библиотеками визуального проектирования ( VCL , MFC , Qt ). Одна из причин — система наследования с высоким уровнем абстракции, значительно увеличивающая код базовых классов. Учитывая довольно внушительную иерархию графических компонентов VCL, их большой размер вполне объясним. Вторая причина — реализация виртуальных методов компилятором Delphi . Обычные, невиртуальные методы Delphi может исключить при компоновке, если они нигде не вызываются в коде. Виртуальные же методы жестко прописаны в VMT, размер которой компилятор пересчитывать не умеет, поэтому виртуальные методы включаются в компонуемый код всегда, даже если нигде реально не вызываются.
Разработчик KOL/MCK сумел предложить компромиссное решение, дающее аналог VCL с возможностью визуального проектирования, но с выходным размером исполняемого модуля в 5—10 раз меньше, чем с VCL. Здесь сыграли свою роль и оптимизация многих участков на ассемблере, и интересное решение с фактическим отказом от наследования в традиционном смысле: все визуальные компоненты KOL являются экземплярами единого огромного TControl, реализующего функциональность сразу всех интерфейсных элементов ОС. Можно говорить, что решение KOL — это ОО-надстройка над описателем окна (handle) «в лоб», не делающая различий между разными классами элементов интерфейса, как не делает их сама ОС. Вероятно, KOL — единственная объектно-ориентированная библиотека с такой архитектурой.
Для библиотеки KOL (точнее, первоначально, для её предшественника, библиотеки XCL) Владимир Кладов разработал генератор документации XHelpGen, принцип работы которого схож с Doxygen .
Справочные файлы генерируются автоматически на основе комментариев вида
{* }
, помещаемых в исходных текстах в интерфейсной части модулей. (символ
*
опциональный и может комплекте быть замещён любым другим; более того, возможно использовать несколько различных символов, например — для локализации справочных файлов).
Генерация выполняется автоматически на основе комментариев к исходному коду (на языке Delphi Pascal ), и происходит в случае, когда xHelpGen при запуске обнаруживает, что какие-либо исходные файлы в сканируемом каталоге изменены. Справка формируется в формате HTML и доступна для просмотра из любого браузера .