„Objektumorientált szoftvertervezés - Vizsga, 2012.05.22.” változatai közötti eltérés

A VIK Wikiből
Új oldal, tartalma: „{{GlobalTemplate|Infoszak|OotVizsga20120522}} ===OOterv vizsga 2012.05.22.=== __TOC__ ====1. Adott az alábbi szerkezet, és a D osztály ''zhcohesion'' metódusának …”
 
Ferrero (vitalap | szerkesztései)
A lap tartalmának cseréje erre: # Java metódus kohéziója # Visitor combinator tervezési minta felhasználása # Aktív objektum tervezési mintás feladat # REST, RMI, WS és CORBA összeha…
1. sor: 1. sor:
{{GlobalTemplate|Infoszak|OotVizsga20120522}}
# Java metódus kohéziója
 
# Visitor combinator tervezési minta felhasználása
===OOterv vizsga 2012.05.22.===
# Aktív objektum tervezési mintás feladat
__TOC__
# REST, RMI, WS és CORBA összehasonlítása
====1. Adott az alábbi szerkezet, és a D osztály ''zhcohesion'' metódusának vázlata. Milyen a metódus kohéziója? (3 pont)====
# WSDL 1.1 részei, mire valóak
 
# RMI távoli eljáráshívás során engedélyezett paraméterek
<pre>
# SwingWorker
public void zhcohesion(A param) {
# Java szálak állapotai
if (param instanceOf B) { ...; }
# CORBA: XHelper és XHolder osztály
else { ...; }
# Java szálkezelés, deadlockot kellett keresni
}
</pre>
 
{{InLineImageLink|Infoszak|OotVizsga20120522|feladat1_1.png}}
 
=====Refaktorálja a fenti tervet! Adja meg a D osztály metódus(ai)nak szignatúráját! (4 pont)=====
 
<pre>
 
public void zhcohesion (B param) {}
 
public void zhcohesion (C param) {}
 
</pre>
 
=====Hogyan érhető el, hogy a refaktorált zhcohesion metódus kliensének ne kelljen ismernie az A-t implementáló különböző konkrét típusokat? (2 pont)=====
 
pl. visitor minta használatával
 
=====Rajzolja be az ábrán az áttervezést követően fennálló relációkat!=====
 
{{InLineImageLink|Infoszak|OotVizsga20120522|feladat1_2.png}}
 
====2. Az ismert vizitor kombinátorok (Identity, Fail, Sequence, Choice, Try) felhasználásával készítse el az ''if v1 then v2 else v3'' vizitort. Ha v1 rendben lefut akkor v2, ha v1 hibás, akkor v3 legyen végrehajtva. Tételezze fel, hogy v2 és v3 mindig lefut.====
 
<pre>
If_then_else(v1,v2,v3)= Choice(Sequence(v1,v2),v3)
</pre>
 
-- [[ApagyiGabor|gabooo]] - 2012.06.02.
 
====3. Az alábbi ábrán látható a standard Command tervezési minta szerkezeti leírása.====
 
{{InLineImageLink|Infoszak|OotVizsga20120522|feladat3.png}}
 
=====Feleltesse meg az "Aktív objektum" CDP minta szereplőit a fenti minta elemeinek! (5 pont)=====
 
{| border="1"
| Client ||
|-
| Invoker ||
|-
| Command ||
|-
| Receiver ||
|-
| ConcreteCommand ||
|}
 
====4. Töltse ki az alábbi táblázatot! (5 pont)====
 
{| border="1"
| || '''REST''' || '''RMI''' || '''WS''' || '''CORBA'''
|-
| '''Igaz-e, hogy különböző programnyelvek között is működik?''' || igen || nem || igen || igen
|-
| '''Mi a kommunikációs protokoll?''' || HTTP || RMI || SOAP || IIOP
|-
| '''Mi az interfészleíró?''' || nincs / WADL || Java Interface || WSDL || IDL
|}
 
====5. Sorolja fel a WSDL 1.1 részeit, és foglalja össze 1-1 mondatban, hogy melyik rész mire való! (5 pont)====
 
====6. Mik az engedélyezett paraméter-típusok RMI távoli eljáráshívás során? 1-1 rövid mondatban írjon mindegyik típus átadásának jellemzőiről! (3 pont)====
 
====7. Kinek a feladata az alábbi ''SwingWorker'' metódusok meghívása, és mi történik a meghívás hatására? (2 pont)====
 
* protected final void publish(V... chunks)
* protected final void process(List&lt;V&gt; chunks)
 
====8. Sorolja fel a Java szálak állapotait, röviden jellemezze őket, és adja meg, mely állapotok követhetik őket! (8 pont)====
 
5 állapot van, ennyi biztos.
 
{| border="1"
| '''Állapot''' || '''Jellemző''' || '''Követő állapot'''
|-
| NEW || újonnan létrehozva || RUNNABLE
|-
| RUNNABLE || futásra kész || BLOCKED, WAITING, TIMED_WAITING, TERMINATED
|-
| BLOCKED || monitorra vár || RUNNABLE
|-
| WAITING, TIMED_WAITING || várakozó szál, Object.wait() || BLOCKED
|-
| TERMINATED || befejezte a működését || nincs
|}
 
A diákon rajta van egy lista, amin öt állapot van. Utána meg van egy kép, amin már hat állapottal van ábrázolva (viszont ott a Running dőlt betűvel van szedve). A megoldókulcsban ugyan úgy volt mint a listán a diában, illetve a java ref-ben: [http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Thread.State.html Java ref.]. Az a trükk, hogy a Runnable és a Running igazából ugyanaz, a képen "csak a jobb megértést támogatva" szerepel a Running, valójában ilyen állapot nincs. A követő állapotok meg a diasorból egyértelmű.
 
-- [[ApagyiGabor|gabooo]] - 2012.06.02.
 
====9. CORBA-ban IDL-t fordítottunk Java-ra. Létrejött az [[XHelper]] és [[XHolder]] osztály. Mi a felelősségük?====
 
====10. Adott az alábbi kód:====
 
<pre>
 
synchronized public void placeAmount(double d) throws RemoteException {
amount += d;
}
 
synchronized public boolean transferAmount(double d, Account to) throws RemoteException {
if (to == null) return false;
amount -= d;
to.placeAmount(d);
return true;
}
</pre>
 
Mi történik az alábbi utasítások hatására?
 
<pre>
 
Account a=...;
 
a.transferAmount(1000, a);
 
</pre>
 
Deadlock lesz, mert különböző szálból hívunk. (Egyébként ha jól emlékszek, akkor ez az egész úgy nézett ki, hogy RMI-vel hívunk távoli függvényt.)
 
-- [[ApagyiGabor|gabooo]] - 2012.06.02.
 
-- [[HinelBalazs|Gollam]] - 2012.06.02.
 


[[Category:Infoszak]]
[[Category:Infoszak]]

A lap 2012. december 17., 16:50-kori változata

  1. Java metódus kohéziója
  2. Visitor combinator tervezési minta felhasználása
  3. Aktív objektum tervezési mintás feladat
  4. REST, RMI, WS és CORBA összehasonlítása
  5. WSDL 1.1 részei, mire valóak
  6. RMI távoli eljáráshívás során engedélyezett paraméterek
  7. SwingWorker
  8. Java szálak állapotai
  9. CORBA: XHelper és XHolder osztály
  10. Java szálkezelés, deadlockot kellett keresni