elektronická verzia publikácie - FIIT STU - Slovenská technická ...
elektronická verzia publikácie - FIIT STU - Slovenská technická ...
elektronická verzia publikácie - FIIT STU - Slovenská technická ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Softvérové súiastky 61<br />
Spolonos IBM vytvorila technológiu System Object Model (SOM) (Dansforth, 1994),<br />
ktorá adresuje vekú as nedostatkov, ktoré prišli s objektovo orientovanými jazykmi.<br />
SOM obsahuje flexibilný objektový model, ktorého dve hlavné výhody sú binárna kompatibilita<br />
novších verzií knižnice so staršími a možnos znovupoužitia knižnice objektov<br />
v iných (aj procedurálnych) programovacích jazykoch bez ohadu na jazyk, v ktorom bola<br />
knižnica vytvorená.<br />
SOM umožuje vývojárom implementova objekty v ich preferovanom programovacom<br />
jazyku, priom výstupy budú použitené aj v ostatných jazykoch. Objektový model<br />
SOM je oddelený od objektových modelov konkrétnych programovacích jazykov<br />
a umožuje tak prida objektové mechanizmy aj do procedurálnych jazykov; existujú implementácie<br />
pre C a Cobol.<br />
2.5.1 Problémy a ciele<br />
Objektovo orientované programovacie jazyky prinášajú výhody oproti procedurálnym<br />
jazykom, najmä vaka zapuzdreniu dát a operácií nad nimi. Vznikajú ale aj nové problémy<br />
súvisiace s binárnou kompatibilitou predchádzajúcich verzií knižníc a zdieaním objektov<br />
medzi rôznymi programovacími jazykmi (Hamilton, 1996).<br />
V procedurálnom jazyku postauje, aby nová <strong>verzia</strong> knižnice zachovala kompatibilné<br />
signatúry funkcií a aby pridané nové funkcie nekolidovali s menami v klientskej aplikácii.<br />
Udržiava kompatibilitu definícií tried v objektovo orientovaných jazykov ale nie je také<br />
ahké. V statických jazykoch (napr. C++, Java) je v klientskom kóde skompilované množstvo<br />
informácií o použitej triede (vekos, poradie a umiestnenie metód, offset 5 od rodiovskej<br />
triedy) a aj malá zmena vo vnútornej štruktúre triedy spôsobí nutnos prekompilova<br />
klientsky kód. V dynamických jazykoch (napr. Smalltalk), ktoré informácie o triedach<br />
spravujú poas vykonávania programu, tieto problémy nevznikajú.<br />
alší problém je spôsobený zdieaním kódu medzi jazykmi, ke v prípade objektovo<br />
orientovaných programovacích jazykov neexistuje žiadna štandardná reprezentácia objektov,<br />
ktorá by umožnila používa objekty napr. zo Smalltalku v C++.<br />
Problémy nastávajú už aj medzi rôznymi kompilátormi C++, kde každý môže používa<br />
rozliné zarovnanie objektov v pamäti a použitie objektovej knižnice vytvorenej<br />
v inom kompilátore sa tak stáva neschodné. Naopak, v procedurálnych jazykoch linkovací<br />
proces v operanom systéme dodržuje urité konvencie, o umožuje vola knižnice medzi<br />
rôznymi procedurálnymi jazykmi (napr. C, Fortran) relatívne jednoducho.<br />
Technológia SOM sprístupujúca objekty bola navrhnutá ako riešenie obmedzení<br />
pre širšie použitie knižníc objektových tried (IBM, 1994) s nasledujúcimi ciemi:<br />
1. Možnos odvodi novú objektovú triedu z binárneho tvaru knižnice, bez nutnosti ma<br />
k dispozícii pôvodný zdrojový kód základnej triedy.<br />
2. Možnos používa objektové triedy a odvodzova nové triedy bez ohadu na programovací<br />
jazyk, v ktorom bola objektová knižnica alebo klientska aplikácia implementovaná.<br />
3. Umožni následné zmeny (vylepšenia, opravy) vo vytvorených súiastkach bez nutnosti<br />
rekompilácie existujúcich klientskych aplikácií, ktoré ich používajú.<br />
5<br />
Posun v skompilovanom (binárnom) kóde.