Objektumorientált szoftvertervezés - Vizsga, 2009.05.28.
OO Vizsga 2009-05-28
Meg volt adva egy A osztály, melynek volt 1 private, 1 public, 1 static és 1 transient tagváltozója. Mellette egy kódrészlet, ahol egy A objektum létre van hozva, bevannak állítgatva a változói, majd le van szerializálva. Ezután még egy létre van hozva, bellítgatva és szerializálva. Végül a streamből be van olvasva egy A, és a kérdés, hogy mik lesznek a változóinak az értékei. (4 pont)
- A private és a public arra áll vissza ami az első serializalt példánynál volt, a tranzient az null lesz, a static meg annak az érteket veszi fel amit masodik peldanynal allitottunk be. (ez utóbbi nem a szerializálás miatt ugyebár, de akkor is az lesz, mert osztályszintű a static, és A az A a beolvasásnál is, tehát valójában nem deserializálva lett hanem inicializálva) PZs
Booleant szeretnénk betenni OO adatbázisba. createRoot("bool",XXX). XXX helyére mit írhatunk
- boolean értéket
- Persistence aware objektumot, melynek van booleant visszaadó fv-je
- Persistence ready objektumot, melynek van boolean tagváltozója
- Előző 3-at
- Mást: ............
- Hat ha ez itt most a nagybetus Boolean, akkor csomgolot kell letrehozni, tehat "new Boolean(b)"-t peldaul, ahol b lehet true/false v. "true"/"false" is.
* Mehet sima boolean, mert az autoboxing miatt Boolean lesz belőle. Feltéve, hogy nem a fos 1.3-as verziót kérik vissza... CsL
Meg volt adva egy Line osztály és 4 fv: create(m,b),getM(),getB(),y(x). Az y metódus a paraméterként kapott x koordinátához tartozó y koordinátát számolja ki az egyenes egyenletéből. Mennyi a LCOM? Mennyi a P és Q?
(A X B = A metszet B)
Acreate(m,b) = {m,b}
AgetM() = {m}
AgetB() = {b}
Ay(x) = {m,b}
Acreate(m,b) X AgetM() = {m}
Acreate(m,b) X AgetB() = {b}
Acreate(m,b) X Ay(x) = {m,b}
AgetM() X AgetB() = {}
AgetM() X Ay(x) = {m}
AgetB() X Ay(x) = {b}
P = 1 (AgetM() X AgetB()) Q=5 (tobbi)
LCOM = P - Q = 1 - 5 // *signum(x), ha negatív az eredmény, akkor 0 a megoldás!!!
LCOM = 0
Acceptor-Connector milyen problémán alapszik? Hogyan lehet megoldani?
- Probléma: összefonódik akapcsolódó és a kommunikációs szerep.
- Megoldás: a kapcsolódás és inicializálás különválasztása a szolgáltatás nyújtásától.
Hibernate-ben az objektumoknak milyen állapotai a persistence contexthez képest?
- tranziens
- perzisztens
- lecsatolt (detached)
Ismert Visitor Combinatorokkal(Sequence, Choice, Try,Identity, Fail) if-then-else-t csinálni. Tehát ha v1 nem hal el, akkor v2, egyébként v3.
- Choice(Sequence(V1, V2), V3) - Ha V1 exeptiont dob V2 nem fut le a Choice elkapja és lefut V3
(Ezzel már csak az a kérdésem maradt, hogy az nem baj, hogy a Sequence-nél nincsen throws VF ???, ha igen akkor kétségesnek tartom, hogy megoldható-e a feladat egyáltalán.) -- SzSzilveszter - 2011.05.23.
Fehérek játszanak feketék ellen. Mezőkön lépkednek, amin lehetnek aknák és sütik. A játékosok ütközhetnek aknával, sütivel, és egymással. Az ütközést Visitor patternnel kell megcsinálni. UML-t kell rajzolni ezekből, és metódusokat feltüntetni.
Holtponthoz vezet-e, ha B-t példányosítjuk? Miért?
class A { synchronized void bar() { System.out.println("Deadlocked"); } } class B { private A a; public B() { a = new A(); } void foo() { synchronized(a) { a.bar(); } } }
Nem, a példányosítás során semmi szinkronizálandó dolog nem fut. De ha meghívjuk B foo() metódusát, akkor sem, mert ezek egymásba ágyazhatóak.
RMI során átadható paraméterek osztályozása és a paraméterátadás módja (felsorolás + 1-1 rövid mondattal jellemzés)
XSD-ben sorrendiséget és gyakoriságot befolyásoló attribútumok
- Sorrendiséghez:
- all - tetszőleges sorrendben
- choice - a listából csak az egyik
- sequence - pontosan ugyanabban a sorrendben
- Gyakoriság:
- minOccurs maxOccurs attribútumok
Mi legyen Q és T, hogy a lehető legtágabb lehetőségekre legyen igaz?
class MySet<E> { MySet() {...} void push(E e) {...} E pop() {...} public E moveAndTake(MySet<T> m1, MySet<Q> m2){ E last = null; while (!m1.isEmpty()){ last = m1.pop(); m2.push(last); } last = pop(); return last; } }
- T - ? extends E
- Q - ? super E
Milyen plusz függvényei vannak a ListIterator-nak az Iterator-hoz képest?
- previousIndex()
- nextIndex()
- hasPrevious()
- previous()
- add()
- set()
Verziókezelők fajtáiról írjon pár mondatot
- RCS (Revision Control System)
- CVS (Concurrent Versions System)
- SVN (Subversion)
-- Endre - 2009.06.11.
-- Csádám - 2010.05.31.