Objektumorientált szoftvertervezés - Vizsga, 2012.06.05.
A VIK Wikiből
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.06.05.
1. Rajzolja fel a JPA entitások életét leíró állapotdiagramot! (6 pont)
Ezen a helyen volt linkelve a ScreenShot2012-06-06at23.38.00.png nevű kép a régi wiki ezen oldaláról. (Kérlek hozd át ezt a képet ide, különben idővel el fog tűnni a régi wikivel együtt)
2. Legyen a következö objektumunk:
@Entity public class Person { @Id private String name; @OneToMany public List<Person> gyerekek = new ArrayList<Person>(); ...; }
Elkészítettük a következö JPA lekérdezést:
Query q = em.createQuery("SELECT p.name, p.gyerekek FROM Person p");
Hajtsa végre a lekérdezést! (1 pont)
q.getResultList();
Mi (milyen osztály) lesz a végrehajtás eredménye? (3 pont)
List<Object[]>
Definiálja az eredményül kapott adatszerkezetet DTD-vel! Adjon egy XML példát, amelyben Jóskának két fia van, Béla és Péter! (extra 5 pont - spéci kód nem használható fel)
<!DOCTYPE result [ <!ELEMENT result ((Person, gyerekek*)*)> <!ELEMENT Person (gyerekek?)> <!ELEMENT gyerekek (Person*)> <!ATTRIBUTE Person name> ]> <Person name = "Jóska"> <gyerekek> <Person name = "Béla"> <Person name = "Péter"> </gyerekek> </Person>
=3. Mi a hasonlóság és a különbség az Objectstore root-kezelés és az RMI Registry között? (5 pont)
Objectstore | RMI Registry | |
mi azonosítja a szolgáltatást? | ||
mi a célja? | ||
mire kereshetünk? |
4. Készítsen egy _Rnd_ visitor combinatort, amely két visitor közül látogatásként véletlenül választva az egyik visitorral látogatja meg az Elem-et.
Ezen a helyen volt linkelve a 2012-06-0510.19.07-1.jpg nevű kép a régi wiki ezen oldaláról. (Kérlek hozd át ezt a képet ide, különben idővel el fog tűnni a régi wikivel együtt)
Véletlen szám generáláshoz használja a standard Math class random metódusát, amely az API szerint: static double random() Returns a double value with a positive sign, greater than or equal to 0.0 and less than 1.0. Írja meg az Rnd osztály kódját (attribútumokat, metódusokat ...) Java nyelven! (5 pont)
public class Rnd implements Visitor { private Visitor V1; private Visitor V2; public Rnd(Visitor _v1, Visitor _v2){ V1 = _v1; V2 = _v2; } public void Visit_Elem(Elem e){ if(Math.random()>0.5) e.accept(V1); else e.accept(V2); } }
5. Mire használható a SAX és a DOM? Mi a különbség a kettö között? (7 pont)
6. Az alábbi ábrán megjelenik az elosztott keretrendszerek általános modelljének elemei. Jelölje az egyes elemekre érvényes igaz állításokat! (5 pont)
<img src="%ATTACHURLPATH%/ooterv.jpg" alt="feladat_6" width="1141" height="308" /
Állítás | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Fejlesztö definiálja, specifikálja | |||||||
Fejlesztö implementálja | |||||||
Webservice-ek esetén WSDL adja meg | |||||||
Csak a CORBA Trading Service része | |||||||
CORBA esetén az OIOP/IIOP specifikálja | |||||||
Keretrendszer fordítási idöben generálja | |||||||
Callback minta esetén a kliens oldalon szerepel | |||||||
CORBA esetén IDL-ben specifikáljuk | |||||||
Keretrendszerben gyárilag implementálva van | |||||||
Webservice-ek esetén SOAP |
7. Milyen tervezési mintát valósítanak meg az alábbi Java osztályok és interfészek? (3 pont)
java.concurrent.CopyOnWriteArrayList
java.util.Comparator : Comparator minta
javax.swing.JScrollPane : Decorator minta
java.rmi.server.RemoteStub : Proxy minta
javax.swing.GroupLayout.Paralellgroup : Strategy minta
8. Mi a felelössége az alábbi kivételtípusoknak (mit jeleznek, mit kell velük tenni)? (4 pont)
Throwable:
Exception:
Error:
RuntimeException:
9. A CORBA Event Service Proxyjának mi a felelössége? (5 pont)
=10. Jelölje X-szel az egyes interfészek esetén, hogy mely metódusokat tartalmazzák? (5 pont)
Metódus | List<X> | Set<X> | Iterator<T> | ListIterator<T> |
void add(T t) | ||||
void add(int i, T t) | ||||
void set(T t) | ||||
T get(int i) | ||||
boolean compare(T t) | ||||
Iterator<T> iterator() | ||||
boolean hasNext() | ||||
T remove(int i) | ||||
void remove() | ||||
T previous() |
11. Az alábbi táblázatban jelölje X-szel, hogy melyik kifejezést kell az egyes X_? típusok helyére írni, ha a legáltalánosabb megoldást szeretnénk elérni. (3 pont)
public class MySet<E> { Collection<E> v; ...; public void push(E e) {...} public E pop() {...} boolean isEmpty() {...} void pushAll(MySet<X_1> a) { while (!a.isEmpty()) { push(a.pop()); } } public E popTo(MySet<X_2> f1, MySet<X_3> f2) { E last = null; while (!f1.isEmpty()) { last = f1.pop(); f2.push(last); } return last; } }
E | ? super E | ? extends E | ? | |
X_1 | X | |||
X_2 | X | |||
X_3 | X |
=Eredmények értékelése
Pontszám | Osztályzat |
21- | 2 |
28- | 3 |
35- | 4 |
42- | 5 |