04.11.2014 Views

elektronická verzia publikácie - FIIT STU - Slovenská technická ...

elektronická verzia publikácie - FIIT STU - Slovenská technická ...

elektronická verzia publikácie - FIIT STU - Slovenská technická ...

SHOW MORE
SHOW LESS

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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!