KOL | |
---|---|
Typ | Knihovna |
Vývojář | Vladimír Kladov |
Zapsáno v | Pascal |
Operační systém | Windows , Windows Mobile , Linux |
Nejnovější verze | 3.23.5 (27.02.2015) |
Stát | aktivní [1] |
Licence | Freeware |
webová stránka | sourceforge.net/projects… |
KOL (Key Objects Library) je knihovna typů objektů pro programování v prostředí Delphi a Lazarus . Hlavním cílem KOL je zmenšit velikost výsledného programu ( Win32 , GUI ) 5-10krát ve srovnání s tím, co poskytuje knihovna VCL . Jsou podporovány všechny 32bitové verze Delphi , od Delphi 2 po BDS 2010.
MCK (Mirror Classes Kit) je sada zrcadlových tříd, které umožňují vizuálně vyvíjet projekt založený na knihovně KOL. Komponenty MCK jsou instalovány na paletě komponent, práce s nimi je stejná jako obvykle v Delphi při vizuálním vývoji. V sestaveném projektu jsou vizuální komponenty nahrazeny jejich nevizuálními protějšky z KOL. Použití MCK snižuje velikost spustitelného programu stejným způsobem jako použití KOL nevizuálně. Výhodou je vizuální vývoj, nevýhodou závislost na verzi Delphi (podporovány jsou Delphi2, Delph3, Delphi4, Delphi5, Delphi6, Delphi7, BDS 2005-2012, Kylix a Free Pascal Compiler 1.0.5 a vyšší).
Projekt KOL vede programátor Vladimir Kladov zhruba deset let. Projekty KOL a MCK obsahují stovky komponent.
Jedním z problémů systémů jako RAD je velikost spustitelného souboru aplikace. Hlavním viníkem je implementace OOP technologií knihovnami vizuálního designu ( VCL , MFC , Qt ). Jedním z důvodů je vysoký systém dědičnosti abstrakce, který výrazně zvyšuje kód základních tříd. Vzhledem k poměrně působivé hierarchii grafických komponent VCL je jejich velká velikost celkem pochopitelná. Druhým důvodem je implementace virtuálních metod kompilátorem Delphi . Obyčejné, nevirtuální metody mohou být vyloučeny Delphi v době propojení, pokud nejsou volány nikde v kódu. Virtuální metody jsou napevno zakódovány ve VMT, jejichž velikost kompilátor nedokáže přepočítat, takže virtuální metody jsou vždy zahrnuty v kompilovaném kódu, i když se ve skutečnosti nikde nevolají.
Vývojář KOL/MCK dokázal nabídnout kompromisní řešení, které dává analog VCL s možností vizuálního designu, ale s výstupní velikostí spustitelného modulu 5-10x menší než u VCL. Svou roli zde sehrála jak optimalizace mnoha sekcí v assembleru, tak zajímavé řešení se skutečným odmítnutím dědičnosti v tradičním smyslu: všechny vizuální komponenty KOL jsou instancemi jediného obrovského TControl, který implementuje funkčnost všech prvků rozhraní OS na jednou. Dá se říci, že řešení KOL je OO doplněk přes okenní kliku (kliku) „na čelo“, který nerozlišuje mezi různými třídami prvků rozhraní, stejně jako to nedělá samotný OS. KOL je pravděpodobně jediná objektově orientovaná knihovna s takovou architekturou.
Pro knihovnu KOL (přesněji zpočátku pro její předchůdkyni, knihovnu XCL) vyvinul Vladimir Kladov generátor dokumentace XHelpGen, jehož princip je podobný Doxygenu .
Soubory nápovědy jsou generovány automaticky na základě komentářů typu {* }, umístěných ve zdrojových textech v rozhraní části modulů. (symbol *je volitelný a může být nahrazen jakýmkoli jiným, navíc je možné použít několik různých symbolů, např. pro lokalizaci souborů nápovědy).
Generování se provádí automaticky na základě komentářů ke zdrojovému kódu (v jazyce Delphi Pascal ) a dochází k němu, když xHelpGen při spuštění zjistí, že se jakékoli zdrojové soubory v naskenovaném adresáři změnily. Nápověda je generována ve formátu HTML a je dostupná pro prohlížení v jakémkoli prohlížeči .