Objektumorientált szoftvertervezés - KisZH-k, 2009.

A VIK Wikiből

1. KisZH (Java)

A csoport

  1. Milyen template paramétert adjunk meg az osztálynak/függvénynek a kipontozott helyekre, hogy a lehető legáltalánosabb megoldást kapjuk?

Ilyen jellegűek voltak, 4 helyre kellett behelyettesíteni:

public E popTo(Fifo[...] f1, Fifo[...] f2){
  E last = null;
  while (!f1.isEmpty()){
	 last = f1.pop();
	 f2.push(last);
  }
  return last;
}

Ajánlatos az 1. diasor 10-11. oldalán lévő kódokat nézegetni, ott meg is találjátok a megoldásokat!

  1. Mit ír ki?
public class A {
  private void f1(){System.out.println("A.f1");}
  public void f2() {System.out.println("A.f2");}
  public void f3() { f1(); }
  public void f4() { f2(); }
}

public class B extends A {
  private void f1() {System.out.println("B.f1");}
  public void f2() {System.out.println("B.f2");}
  public static void main(String[] args) {
	 A a2 = new B();
	 a2.f3(); // A.f1
	 a2.f4(); // B.f2
  }
}

Ehhez a feladathoz magyarázat az 1. diasor 2. oldalán (18-as dia)

B csoport

  • 1. Ugyanez volt a feladat, minimálisan különböző függvényekkel. Persze ez pont elég volt, hogy más template paramétert várjanak! :)
  • 2. Hasonló volt a feladat, de f1-ek publikusak voltak. (Így működött a virtuális függvények felülírása a leszármazottban.)

2. KisZH (Perzisztencia)

A csoport

  1. Melyik interface deklarálja a out.writeObject(_SerializableClass) metódust?
    ObjectOutput
  2. Mire jó a Hibernate-ben a <discriminator>?
    table-per-class-hierarchy esetén meghatározza a gyerekosztály (subclass) típusát
  3. Milyen állapotai vannak Hibernate-ben a Session-höz képest a perzisztens objektumoknak?(4db)
    • Tranziens (Transient): objektumot kódból hoztuk létre, adatbázisban nem szerepel
    • Perzisztens (Persistent): az objektum szinkronizálva van az adatbázis táblákkal (unit of work commitnál íródik ki ténylegesen)
    • Lekapcsolt (Detached): perzisztens volt, de az adatbázissal azóta megszűnt a kapcsolat, így jelenleg nincs szinkronban. Új Sessionhöz később hozzá lehet kapcsolni.
    http://docs.jboss.org/hibernate/core/3.3/reference/en/html/objectstate.html#objectstate-overview
  4. Igazakat kellett bejelölni: OO adatbázisban:
    • Nem lehetnek párhuzamos Session-ök egy adatb-hez - HAMIS
    • Nem lehetnek más JVMből indított Session-ök egy adatb-hez - HAMIS
    • Lehet több, azonos JVMből indított Session egy adatb-hez - IGAZ
  5. Volt egy osztály egy statikus int-tel (minsalary), valamint egy getSalary() metódussal. Meg volt adva egy query, amiben a feltétel: getSalary()>minsalary (OO adatb). Igazakat kellett jelölni:
    • Hibás, mert csak tagváltozók szerepelhetnek a query-ben
    • Hibás, mert statikus változók nem szerepelhetnek a query-ben
    • Hibás, mert kollekció kellene, és nem osztály (?)
    • Korrekt

B csoport

3. KisZH (Hálózatkezelés, RMI)

A csoport

  • 1. Mik a (natív) TCP/IP alapú hálózatkezelés jellemzői? (2 pont)

(9 hely volt kihagyva)

  • 2. (Hasonló az B csoporthoz)
  • 3. Mik az mobil ügynök megérkezésével kapcsolatos problémák? (2 pont)

B csoport

  • 1. Mik a hálózati keretrendszer alapú hálózatkezelés jellemzői? (2 pont)

(9 hely volt kihagyva)

  • 2. Mi a hiba az adott kódban? Szintaktikai hiba nincs. (2 pont)

A feladat arra akart volna rámmeni, hogy minden függvény dob-e RemoteException-t és hogy a bemenő és kimenő paraméterek szerializálhatóak-e.

public class W extends Runnable {...} // adott 
public class T extends Serializable {...} // adott

void foo(...) throws IOException
void bar(...) throws RemoteException
double baz(...) throws Exception
T goo(...) throws NumberFormatException
  • 3. Mik a mobil ügynökkel kapcsolatos biztonsági problémák? (2 pont)

4. KisZH (Java ablakkezelés, Swing)

A csoport

  • 1. Mik a konténerek felelősségei? (2 pont)
  • 2. A1 ablak K1 komponenséből átkattintunk az A2 ablak K2 komponensére. Milyen sorrendben következnek be a következő események? (2 pont)
    • K1: LOST_FOCUS
    • A1: WINDOW_LOST_FOCUS
    • A1: WINDOW_DEACTIVATED
  • Mi a GridBagConstraint osztály felelőssége? (2 pont)

B csoport

  • 1. Milyen tervezési mintát valósítanak meg az alábbi osztályok (2 pont)
    • BorderLayout
    • ActionAdapter
    • JScrollPane
  • 2. A1 ablak K1 komponenséből átkattintunk az A2 ablak K2 komponensére. Milyen sorrendben következnek be a következő események? (2 pont)
    • K2: FOCUS_GAINED
    • A2: WINDOW_GAINED_FOCUS
    • A2: WINDOW_ACTIVATED
  • 3. Ha AWT-s alkalmazásunkat Swingesre szeretnénk átírni, miért nem lehet a java.awt.List osztályt egyszerű névcserével lecserélni javax.swing.JList-re? (2 pont)


5. KisZH

hasonló a 2008-as kisZH-hoz

-- Velias - 2009.03.17.