Objektumorientált szoftvertervezés - Vizsga, 2012.05.22.
Ez az oldal a korábbi SCH wikiről lett áthozva.
Ha úgy érzed, hogy bármilyen formázási vagy tartalmi probléma van vele, akkor, kérlek, javíts rajta egy rövid szerkesztéssel!
Ha nem tudod, hogyan indulj el, olvasd el a migrálási útmutatót.
OOterv vizsga 2012.05.22.
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)
public void zhcohesion(A param) { if (param instanceOf B) { ...; } else { ...; } }
Refaktorálja a fenti tervet! Adja meg a D osztály metódus(ai)nak szignatúráját! (4 pont)
public void zhcohesion (B param) {} public void zhcohesion (C param) {}
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!
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.
If_then_else(v1,v2,v3)= Choice(Sequence(v1,v2),v3)
-- gabooo - 2012.06.02.
3. Az alábbi ábrán látható a standard Command tervezési minta szerkezeti leírása.
Feleltesse meg az "Aktív objektum" CDP minta szereplőit a fenti minta elemeinek! (5 pont)
Client | |
Invoker | |
Command | |
Receiver | |
ConcreteCommand |
4. Töltse ki az alábbi táblázatot! (5 pont)
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<V> 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.
Á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: 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ű.
-- 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:
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; }
Mi történik az alábbi utasítások hatására?
Account a=...; a.transferAmount(1000, a);
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.)
-- gabooo - 2012.06.02.
-- Gollam - 2012.06.02.