„Objektumorientált szoftvertervezés - Vizsga, 2008.06.03.” változatai közötti eltérés

A VIK Wikiből
Ugrás a navigációhoz Ugrás a kereséshez
(Új oldal, tartalma: „{{GlobalTemplate|Infoszak|OotVizsga20080603}} ===OO Vizsga 2008-06-03=== __TOC__ ====1. Hibernate: Mi(k)nek a metódusa createQuery()? (2p)==== * '''session''' -> e…”)
 
 
(3 közbenső módosítás, amit 3 másik szerkesztő végzett, nincs mutatva)
1. sor: 1. sor:
{{GlobalTemplate|Infoszak|OotVizsga20080603}}
 
 
 
===OO Vizsga 2008-06-03===
 
===OO Vizsga 2008-06-03===
  
 
__TOC__
 
__TOC__
  
====1. Hibernate: Mi(k)nek a metódusa createQuery()? (2p)====
+
====Hibernate: Mi(k)nek a metódusa createQuery()? (2p)====
  
 
* '''session''' -> ez a jó
 
* '''session''' -> ez a jó
12. sor: 10. sor:
 
* tranzakció
 
* tranzakció
  
====2. Adott az alábbi kód. Mit csinál, mi a következménye, hogy tehető korrekté? (6p)====
+
====Adott az alábbi kód. Mit csinál, mi a következménye, hogy tehető korrekté? (6p)====
  
 
<pre>
 
<pre>
26. sor: 24. sor:
 
Ezzel a root mögötti objektumot tudjuk törölni.
 
Ezzel a root mögötti objektumot tudjuk törölni.
  
====3. WMC (Weighted Method Class) metrika definíciója. (2p)====
+
====WMC (Weighted Method Class) metrika definíciója. (2p)====
 
* Egy osztályhoz tartozó metódusok CC-je (metódus bonyolultsága) összesen
 
* Egy osztályhoz tartozó metódusok CC-je (metódus bonyolultsága) összesen
 
* Egy osztály elkézítésének bonyolultsága ?
 
* Egy osztály elkézítésének bonyolultsága ?
====4. Egy funkción belül mikor nevezzük a kohéziót procedurálisnak? Miről ismerhető fel könnyen? (2p)====
+
 
 +
====Egy funkción belül mikor nevezzük a kohéziót procedurálisnak? Miről ismerhető fel könnyen? (2p)====
 
* instanceof (???)
 
* instanceof (???)
====5. Aktív objektum mintában az ütemező (Scheduler) a Request_Method példány meghívásakor átad egy paramétert. Mi az és mi a feladata?====
+
 
 +
====Aktív objektum mintában az ütemező (Scheduler) a Request_Method példány meghívásakor átad egy paramétert. Mi az és mi a feladata?====
 
Valószínűleg ez a Servanthoz lesz a referencia, ami majd futtatni fogja a metódus kódját. Másképp honnan tudja a method_request, hogy melyik servanthoz hívjon be? Ez tűnik logikusnak. [https://lists.sch.bme.hu/wws/arc/inftech2009/2009-05/msg00083.html forrás]
 
Valószínűleg ez a Servanthoz lesz a referencia, ami majd futtatni fogja a metódus kódját. Másképp honnan tudja a method_request, hogy melyik servanthoz hívjon be? Ez tűnik logikusnak. [https://lists.sch.bme.hu/wws/arc/inftech2009/2009-05/msg00083.html forrás]
====6. Adott egy bináris fa, a fa csúcsaiban vagy Guard vagy Node objektumok, ezeknek közös az ősük, amely vizitálható. Adott a vizitor interfész, illetve két megvalósítása:====
+
 
 +
====Adott egy bináris fa, a fa csúcsaiban vagy Guard vagy Node objektumok, ezeknek közös az ősük, amely vizitálható. Adott a vizitor interfész, illetve két megvalósítása:====
 
* Visit_Print: ez kiírja a Node-ban tárolt értéket
 
* Visit_Print: ez kiírja a Node-ban tárolt értéket
 
* Sequ3: a faelemet meglátogatja a konstruktorában megadott 3 vizitort (mint a diasorban a Sequence, csak ebben 3 van)
 
* Sequ3: a faelemet meglátogatja a konstruktorában megadott 3 vizitort (mint a diasorban a Sequence, csak ebben 3 van)
43. sor: 44. sor:
 
# A vizitorok létrehozása és meghívása, hogy a fa elemei listázásra kerüljenek (2p)
 
# A vizitorok létrehozása és meghívása, hogy a fa elemei listázásra kerüljenek (2p)
  
====7. 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, 3p)====
+
====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, 3p)====
 +
[[OotElosztottRendszerek]]
 +
 
 +
* Pass-by-Reference
 +
** a metódus a paraméterre mutató referenciát kap
 +
** a metódus a referencián keresztül éri el a paramétert, amit a hívó tart
 +
** azok adhatóak át így, akik implementálják a Remote interfészt
 +
* Pass-by-Value (Copy)
 +
** a paraméter lemásolódik
 +
** a metódus a másolatot kapja meg, és azon dolgozik
 +
** mindenki más így adódik át
  
[[OotElosztottRendszerek]]
+
====Volt egy XSD séma, ahol az elemen belül volt egy simpletype definiálva, át kellett írni olyanra, hogy kívül legyen (2p)====
 +
Egy példa a feladathoz:
 +
; Beágyazott
 +
<xs:element name="car">
 +
  <xs:simpleType>
 +
    <xs:restriction base="xs:string">
 +
      <xs:enumeration value="Zhiguli"/>
 +
      <xs:enumeration value="Moskvitch"/>
 +
      <xs:enumeration value="Zaporozhets"/>
 +
    </xs:restriction>
 +
  </xs:simpleType>
 +
</xs:element>
  
====8. Volt egy XSD séma, ahol az elemen belül volt egy simpletype definiálva, át kellett írni olyanra, hogy kívül legyen (2p)====
+
; Külön típusdefiníció
 +
<xs:element name="car" type="carType"/>
 +
 +
<xs:simpleType name="carType">
 +
  <xs:restriction base="xs:string">
 +
    <xs:enumeration value="Zhiguli"/>
 +
    <xs:enumeration value="Moskvitch"/>
 +
    <xs:enumeration value="Zaporozhets"/>
 +
  </xs:restriction>
 +
</xs:simpleType>
  
====9. XSD sorrendiséget és gyakoriságot befolyásoló tag-ek (felsorolás + 1-1 rövid mondattal jellemzés, 5p)====
+
====XSD sorrendiséget és gyakoriságot befolyásoló tag-ek (felsorolás + 1-1 rövid mondattal jellemzés, 5p)====
 
Sorrendiséghez:
 
Sorrendiséghez:
 
* all - tetszőleges sorrendben
 
* all - tetszőleges sorrendben
57. sor: 88. sor:
 
* minOccurs maxOccurs attribútumok
 
* minOccurs maxOccurs attribútumok
  
====10. Milyen hibákat kaphatunk egy XML dokumentum SAX-al való feldolgozása során? (3p)====
+
====Milyen hibákat kaphatunk egy XML dokumentum SAX-al való feldolgozása során? (3p)====
 
* fatal error - a dokumentum nem jól formált (szintaktikai hiba, nincs lezárva tag)
 
* fatal error - a dokumentum nem jól formált (szintaktikai hiba, nincs lezárva tag)
 
* error - a dokumentum nem valid (szemantikai hiba, pl nem felel meg a sémának)
 
* error - a dokumentum nem valid (szemantikai hiba, pl nem felel meg a sémának)
 
* warning - figyelmeztetés (pl. ha kétszer definiálunk egy típust)
 
* warning - figyelmeztetés (pl. ha kétszer definiálunk egy típust)
  
====11. Mik a SAX (simple api for XML) jellemzői? (3p)====
+
====Mik a SAX (simple api for XML) jellemzői? (3p)====
 
* eseményvezérelt
 
* eseményvezérelt
 
* soros elérésű
 
* soros elérésű
70. sor: 101. sor:
 
* állapotfüggetlen feldolgozás
 
* állapotfüggetlen feldolgozás
  
====12. Mik az AWT konténerek felelősségei? (3p)====
+
====Mik az AWT konténerek felelősségei? (3p)====
 
* komponensek megtalálása
 
* komponensek megtalálása
 
* fókusz továbbadása
 
* fókusz továbbadása
 
* komponensek elhelyezése
 
* komponensek elhelyezése
  
====13. Milyen tervezési mintákat valósítanak meg (Swing)? (4p)====
+
====Milyen tervezési mintákat valósítanak meg (Swing)? (4p)====
  
 
* Konténerek és komponensek összekapcsolása
 
* Konténerek és komponensek összekapcsolása
89. sor: 120. sor:
 
* JTree-nél Null Object pattern
 
* JTree-nél Null Object pattern
  
====14. Miért nem ajánlott beágyazott/mobil környezetben a Listener-alapú eseménykezelés? (2p)====
+
====Miért nem ajánlott beágyazott/mobil környezetben a Listener-alapú eseménykezelés? (2p)====
 
* túlságosan is erőforrásigényes
 
* túlságosan is erőforrásigényes
 
* nem engedheti meg egy beágyazott környezet a beragadott objektumokat
 
* nem engedheti meg egy beágyazott környezet a beragadott objektumokat

A lap jelenlegi, 2013. június 17., 23:39-kori változata

OO Vizsga 2008-06-03

Hibernate: Mi(k)nek a metódusa createQuery()? (2p)

  • session -> ez a jó
  • perzisztens kollekció
  • tábla
  • tranzakció

Adott az alábbi kód. Mit csinál, mi a következménye, hogy tehető korrekté? (6p)

Object object = db.getRoot("username");
ObjectStore.destroy(object);

A getRoot és a destroy közé kell:

db.setRoot("username", null);

Ezzel a root mögötti objektumot tudjuk törölni.

WMC (Weighted Method Class) metrika definíciója. (2p)

  • Egy osztályhoz tartozó metódusok CC-je (metódus bonyolultsága) összesen
  • Egy osztály elkézítésének bonyolultsága ?

Egy funkción belül mikor nevezzük a kohéziót procedurálisnak? Miről ismerhető fel könnyen? (2p)

  • instanceof (???)

Aktív objektum mintában az ütemező (Scheduler) a Request_Method példány meghívásakor átad egy paramétert. Mi az és mi a feladata?

Valószínűleg ez a Servanthoz lesz a referencia, ami majd futtatni fogja a metódus kódját. Másképp honnan tudja a method_request, hogy melyik servanthoz hívjon be? Ez tűnik logikusnak. forrás

Adott egy bináris fa, a fa csúcsaiban vagy Guard vagy Node objektumok, ezeknek közös az ősük, amely vizitálható. Adott a vizitor interfész, illetve két megvalósítása:

  • Visit_Print: ez kiírja a Node-ban tárolt értéket
  • Sequ3: a faelemet meglátogatja a konstruktorában megadott 3 vizitort (mint a diasorban a Sequence, csak ebben 3 van)
  • Visit_InOrder: a Sequ3-ból származik, a fa inorder bejárását végzi el, közben minden Node element végrehajtja a konstruktorában megadott vizitort. Ez nincs készen, ez a c) feladat
  1. Visitor interfészbe a metódusok beírása az UML diagramon (1p)
  2. Az inorder bejáráshoz szükséges egyéb vizitorok megadása az UML-diagramon és konstruktoraikkal, metódusaikkal (4p)
  3. Visit_InOrder konstruktorának megírása a fenti többi vizitor használatával (4p)
  4. A vizitorok létrehozása és meghívása, hogy a fa elemei listázásra kerüljenek (2p)

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, 3p)

OotElosztottRendszerek

  • Pass-by-Reference
    • a metódus a paraméterre mutató referenciát kap
    • a metódus a referencián keresztül éri el a paramétert, amit a hívó tart
    • azok adhatóak át így, akik implementálják a Remote interfészt
  • Pass-by-Value (Copy)
    • a paraméter lemásolódik
    • a metódus a másolatot kapja meg, és azon dolgozik
    • mindenki más így adódik át

Volt egy XSD séma, ahol az elemen belül volt egy simpletype definiálva, át kellett írni olyanra, hogy kívül legyen (2p)

Egy példa a feladathoz:

Beágyazott
<xs:element name="car">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:enumeration value="Zhiguli"/>
      <xs:enumeration value="Moskvitch"/>
      <xs:enumeration value="Zaporozhets"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>
Külön típusdefiníció
<xs:element name="car" type="carType"/>

<xs:simpleType name="carType">
  <xs:restriction base="xs:string">
    <xs:enumeration value="Zhiguli"/>
    <xs:enumeration value="Moskvitch"/>
    <xs:enumeration value="Zaporozhets"/>
  </xs:restriction>
</xs:simpleType>

XSD sorrendiséget és gyakoriságot befolyásoló tag-ek (felsorolás + 1-1 rövid mondattal jellemzés, 5p)

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

Milyen hibákat kaphatunk egy XML dokumentum SAX-al való feldolgozása során? (3p)

  • fatal error - a dokumentum nem jól formált (szintaktikai hiba, nincs lezárva tag)
  • error - a dokumentum nem valid (szemantikai hiba, pl nem felel meg a sémának)
  • warning - figyelmeztetés (pl. ha kétszer definiálunk egy típust)

Mik a SAX (simple api for XML) jellemzői? (3p)

  • eseményvezérelt
  • soros elérésű
    • alacsony memória-igény
    • nagy sebesség
    • nem lehet előre- és visszaugrani
  • állapotfüggetlen feldolgozás

Mik az AWT konténerek felelősségei? (3p)

  • komponensek megtalálása
  • fókusz továbbadása
  • komponensek elhelyezése

Milyen tervezési mintákat valósítanak meg (Swing)? (4p)

  • Konténerek és komponensek összekapcsolása
  • Eseménykezelés
  • LayoutManager használata
  • JScrollPane használata

Szerintem inkább ez kell ide:

  • Konténerek + komponensek - Composite pattern
  • Eseménykezelés - Observer pattern
  • LayoutManager - Strategy pattern
  • JScrollPane-nél Decorator pattern
  • JTree-nél Null Object pattern

Miért nem ajánlott beágyazott/mobil környezetben a Listener-alapú eseménykezelés? (2p)

  • túlságosan is erőforrásigényes
  • nem engedheti meg egy beágyazott környezet a beragadott objektumokat
  • sokszor dinamikusan jönnek létre és szűnnek meg az objektumok

-- aldaris - 2009.05.27.

-- buc - 2008.06.03.

-- Csádám - 2010.05.31.