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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Softvérové súiastky 55<br />

Predpokladajme, že potrebujeme sprístupni objekty realizujúce poítadlo implementované<br />

triedou Counter pre klientov v distribuovanom prostredí.<br />

class Counter<br />

{<br />

private int value;<br />

public int getValue()<br />

{<br />

return value;<br />

}<br />

public void setValue(int v)<br />

{<br />

value = v;<br />

}<br />

public void increment()<br />

{<br />

value++;<br />

}<br />

}<br />

Príklad 2-1. Zdrojový kód triedy Counter.<br />

Prvým krokom je vytvorenie opisu rozhrania pre poítadlo. Na opis rozhraní CORBA –<br />

podobne ako väšina technológií na volanie vzdialených procedúr – používa špecializovaný<br />

jazyk s názvom CORBA IDL (Interface Definition Language). Ide o jazyk vychádzajúci<br />

zo syntaxe C++ s podporou preddefinovaných aj používateských dátových typov, postupností,<br />

polí, dedenia, výnimiek a vstupných i výstupných (in/out) parametrov. Opis<br />

rozhrania pre poítadlo je vemi jednoduchý:<br />

interface Counter<br />

{<br />

long getValue();<br />

void setValue(in long value);<br />

void increment();<br />

};<br />

Príklad 2-2. Opis rozhrania poítadla.<br />

Tento opis rozhrania je vstupom pre predkompilátor, ktorý vygeneruje niekoko súborov,<br />

realizujúcich stub a skeleton pre poítadlo.<br />

Aby sme triedu Counter mohli použi ako implementáciu objektu v distribuovanej<br />

aplikácii, musíme ju trochu upravi (zmeny sú vyznaené tuným písmom):<br />

class CounterImpl extends CounterPOA<br />

{<br />

// ostatne casti triedy ostali bez zmeny<br />

}<br />

Príklad 2-3. Upravený zdrojový kód triedy Counter.<br />

Okrem zmeny názvu triedy (nutnej pre jej odlíšenie od abstraktného rozhrania Counter)<br />

bola pridaná väzba implementaným dedením na vygenerovaný skeleton obsiahnutý<br />

v triede CounterPOA.<br />

Nasledujúci kód na strane klienta ilustruje princíp transparentného prístupu<br />

k vzdialeným procedúram resp. metódam:

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

Saved successfully!

Ooh no, something went wrong!