Objektumorientált szoftvertervezés - Vizsga, 2009.05.28.

A VIK Wikiből
A lap korábbi változatát látod, amilyen Unknown user (vitalap) 2012. október 21., 21:44-kor történt szerkesztése után volt. (Új oldal, tartalma: „{{GlobalTemplate|Infoszak|OotVizsga20090528}} ===OO Vizsga 2009-05-28=== __TOC__ ====01. Meg volt adva egy A osztály, melynek volt 1 private, 1 public, 1 static és…”)
(eltér) ← Régebbi változat | Aktuális változat (eltér) | Újabb változat→ (eltér)

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.


OO Vizsga 2009-05-28

01. 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

02. 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

03. 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

04. 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.

05. Hibernate-ben az objektumoknak milyen állapotai a persistence contexthez képest?

  • tranziens
  • perzisztens
  • lecsatolt (detached)

06. 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.

07. 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.

%ATTACHURL%/uml.jpg

Ezen a helyen volt linkelve a(z) uml.jpg nevű fájl ("Kép" link szöveggel) a régi wiki http://wiki-old.sch.bme.hu/bin/view/Infoszak/OotVizsga20090528 oldaláról. (Ha szükséged lenne a fájlra, akkor a pontos oldalmegnevezéssel együtt küldd el a wiki@sch.bme.hu címre a kérésedet)

és

Ezen a helyen volt linkelve a(z) uml.uml nevű fájl ("StarUML" link szöveggel) a régi wiki http://wiki-old.sch.bme.hu/bin/view/Infoszak/OotVizsga20090528 oldaláról. (Ha szükséged lenne a fájlra, akkor a pontos oldalmegnevezéssel együtt küldd el a wiki@sch.bme.hu címre a kérésedet)
fájl csatolva.

08. 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.

09. 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)

10. 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

11. 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<<b>T</b>> m1, MySet<<b>Q</b>> m2){
		  E last = null;
		  while (!m1.isEmpty()){
				last = m1.pop();
				m2.push(last);
		  }
		  last = pop();
		  return last;
	 }
}
  • T - ? extends E
  • Q - ? super E

12. Milyen plusz függvényei vannak a ListIterator-nak az Iterator-hoz képest?

  • previousIndex()
  • nextIndex()
  • hasPrevious()
  • previous()
  • add()
  • set()

13. 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.