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 63<br />

Nové triedy sa vytvárajú odvodením od existujúcich tried. Podtrieda zdedí rozhrania<br />

a ich implementácie z rodiovskej triedy. Metódy môžeme preaži. Nové metódy môžu<br />

by pridané, staré môžu by preažené. SOM podporuje viacnásobné dedenie.<br />

Rozhrania k SOM objektom sa definujú pomocou SOM IDL (Interface Definition<br />

Language), ktoré je rozšírením CORBA IDL o možnos špecifikova dodatoné informácie<br />

o implementácii. Objekt špecifikujeme v IDL (príklad 2-5), pre ktoré SOM IDL kompilátor<br />

vytvorí jazykovo špecifické previazania pre cieový kompilátor (podporované sú C a C++)<br />

korešpondujúce s definíciou triedy v jazyku IDL.<br />

#include <br />

interface Hello : SOMObject<br />

{<br />

void sayHello();<br />

}<br />

Príklad 2-5. Jednoduchý IDL súbor.<br />

Previazania sú jazykovo špecifické makrá a procedúry obsahujúce volania do SOM spúš-<br />

acieho prostredia, ktoré zabezpeuje vytváranie a manipuláciu so SOM objektmi. Previazania<br />

umožujú programátorovi jednoduchú interakciu so SOM pomocou syntaxe vhodnej<br />

pre príslušný programovací jazyk.<br />

Napr. pre implementáciu objektu v jazyku C, IDL kompilátor vytvorí súbory .H, .IH<br />

a .C, ktoré obsahujú prázdne funkcie pripravené pre programátora na doplnenie špecifickej<br />

funkcionality (príklad 2-6).<br />

#include <br />

SOM_SCOPE void SOMLINK sayHello(Hello somSelf, Environment *ev)<br />

{<br />

/* HelloData *somThis = HelloGetData(somSelf); */<br />

HelloMethodDebug("Hello", "sayHello");<br />

}<br />

printf("Hello!\n");<br />

Príklad 2-6. Implementácia metódy objektu.<br />

Výsledná implementácia je zlinkovaná do knižnice DLL alebo EXE súboru. Použitie DLL<br />

súboru umožuje flexibilne použi vytvorenú knižnicu SOM objektov v klientskej aplikácií,<br />

ktorá je schopná DLL súbor naíta (napr. aj v procedurálnom jazyku, príklad 2-7).<br />

#include <br />

int main(int argc, char *argv[])<br />

{<br />

Hello obj;<br />

obj = HelloNew();<br />

_sayHello(obj, somGetGlobalEnvironment());<br />

_somFree(obj);<br />

return 0;<br />

}<br />

Príklad 2-7. Ukážka implementácie klienta v jazyku C.

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

Saved successfully!

Ooh no, something went wrong!