„OOP vizsga kikérdező” változatai közötti eltérés

Nincs szerkesztési összefoglaló
Nincs szerkesztési összefoglaló
 
(5 közbenső módosítás ugyanattól a felhasználótól nincs mutatva)
191. sor: 191. sor:
# Igaz
# Igaz
# Hamis
# Hamis
== Mely tervezési minták kerültek alkalmazásra? ==
[[Fájl:Oop vizsga vasut 1.png|Keret]]
Egy vasúti hálózatban vannak sínek, váltók és állomások. A hálózatban vonatok közlekednek. Egy mozdony különböző színű vagonokat húz, és a megfelelő színű vagont a megfelelő színű állomásra kell eljuttatni . Ha egy vonat egy állomáshoz ér, akkor azok az utasok , akik ugyanolyan színű kocsiban ülnek, mint az állomás színe, leszállnak, decsak akkor , ha minden előttük lévő (azaz a köztük és a mozdony között lévő) kocsi üres (vagyis nincs rajtuk utas). A játéknak akkor van vége , ha minden utast sikerült eljuttatni a megfelelő állomásra . A játékos veszít , ha két vonat összeütközik. Tekintsük a játék egy lehetséges megoldásaként az alábbi osztálydiagramot ! (Feltételezhetjük , hogy a privát attribútumokhoz tartoznak megfelelő getter-setter függvények , amelyeket az ábra nem jelöl .)
{{Kvízkérdés|típus=több|válasz=1,3,5,7}}
# Singleton
# Abstract Factory
# Decorator
# Template Method
# Visitor
# Memento
# Observer
# Composite


== Igaz-e az alábbi állítás? ==
== Igaz-e az alábbi állítás? ==
258. sor: 245. sor:
# Hamis
# Hamis


== Az opcionális elemeket tartalmazásként implementáljuk, ne öröklődésként! ==
== Az alábbi OO tervezési heurisztikának melyik a leginkább megfelelő code smell vagy refaktorálási transzformáció? ==
A fenti OO tervezési heurisztikának melyik a leginkább megfelelő code smell vagy refaktorálási transzformáció?  
Az opcionális elemeket tartalmazásként implementáljuk, ne öröklődésként!
{{Kvízkérdés|típus=egy|válasz=3}}
{{Kvízkérdés|típus=egy|válasz=3}}
# Data Class
# Data Class
267. sor: 254. sor:
# Replace Type Code with Class
# Replace Type Code with Class


== Kerüljük a csak adattárolásra használt osztályokat! ==
Kerüljük a csak adattárolásra használt osztályokat!  
A fenti OO tervezési heurisztikának melyik a leginkább megfelelő code smell vagy refaktorálási transzformáció?
{{Kvízkérdés|típus=egy|válasz=1}}
{{Kvízkérdés|típus=egy|válasz=1}}
# Data Class
# Data Class
276. sor: 262. sor:
# Replace Type Code with Class
# Replace Type Code with Class


== Ne ellenőrizzük egy objektum típusát, helyette használjunk polimorfizmust! ==
Ne ellenőrizzük egy objektum típusát, helyette használjunk polimorfizmust!  
A fenti OO tervezési heurisztikának melyik a leginkább megfelelő code smell vagy refaktorálási transzformáció?
{{Kvízkérdés|típus=egy|válasz=5}}
{{Kvízkérdés|típus=egy|válasz=5}}
# Data Class
# Data Class
285. sor: 270. sor:
# Replace Type Code with Class
# Replace Type Code with Class


== Minimalizáljuk az együttműködő osztályok közötti metódushívások számát! ==
Minimalizáljuk az együttműködő osztályok közötti metódushívások számát
A fenti OO tervezési heurisztikának melyik a leginkább megfelelő code smell vagy refaktorálási transzformáció? {{Kvízkérdés|típus=egy|válasz=4}}
{{Kvízkérdés|típus=egy|válasz=4}}
# Data Class
# Data Class
# Extract Superclass
# Extract Superclass
293. sor: 278. sor:
# Replace Type Code with Class
# Replace Type Code with Class


== A közös adat és viselkedés olyan magasan legyen az öröklési hierarchiában, amilyen magasan csak lehet! ==
A közös adat és viselkedés olyan magasan legyen az öröklési hierarchiában, amilyen magasan csak lehet!
A fenti OO tervezési heurisztikának melyik a leginkább megfelelő code smell vagy refaktorálási transzformáció?
{{Kvízkérdés|típus=egy|válasz=2}}
{{Kvízkérdés|típus=egy|válasz=2}}
# Data Class
# Data Class
451. sor: 435. sor:
# Igaz
# Igaz
# Hamis
# Hamis
== Tegye sorrendbe az alábbi API tervezési és megvalósítási lépéseket! ==
{{Kvízkérdés|típus=több|válasz=1,2,3,4,5}}
# Követelmények összegyűjtése
# Use-case-ek írása
# API definiálása
# Példák írása az API használatára
# API implementálása


== A HTTP cookie-k milyen állapottárolást tesznek lehetővé? ==
== A HTTP cookie-k milyen állapottárolást tesznek lehetővé? ==
559. sor: 534. sor:
# Smell: Feature envy
# Smell: Feature envy
# Smell: Inappropriate intimacy
# Smell: Inappropriate intimacy
== Igaz vagy hamis az alábbi állítás? ==
A Decorator tervezési minta sérti az OCP elvet.
{{Kvízkérdés|típus=egy|válasz=2}}
# Igaz
# Hamis
== Igaz vagy hamis az alábbi állítás? ==
Az Abstract Factory tervezési minta sérti az OCP elvet.
{{Kvízkérdés|típus=egy|válasz=2}}
# Igaz
# Hamis
== Igaz vagy hamis az alábbi állítás? ==
Egy osztály interfésze ugyanaz, mint az általa implementált interfészek halmaza.
{{Kvízkérdés|típus=egy|válasz=2}}
# Igaz
# Hamis
== Igaz vagy hamis az alábbi állítás? ==
Egy szoftver tervezése során mindig minden lehetséges követelményváltozásra fel kell készülni.
{{Kvízkérdés|típus=egy|válasz=2}}
# Igaz
# Hamis
== Igaz vagy hamis az alábbi állítás? ==
A DbC elv szerint a prekondíciókat nem szabad erősíteni.
{{Kvízkérdés|típus=egy|válasz=1}}
# Igaz
# Hamis
== Igaz vagy hamis az alábbi állítás? ==
A DIP elv egy lehetséges megfogalmazása az, hogy absztrakcióktól függjünk.
{{Kvízkérdés|típus=egy|válasz=1}}
# Igaz
# Hamis
== Ki számít ismerősnek a Demeter-törvény szerint? ==
{{Kvízkérdés|típus=egy|válasz=4}}
# Aki létrehozott minket
# Aki velünk egy a csomagban van
# Aki ismer minket
# Akit mi hoztunk létre
== Tekintsük az alábbi csomagokat! ==
Mely csomagok instabilak?
[[Fájl:Oop vizsga csomagok1.png|Keret]]
{{Kvízkérdés|típus=több|válasz=1,3}}
# A
# C
# D
# B
== Tekintsük az alábbi osztálydiagramot! ==
Teljesül-e a bar függvényre a Liskov-elv?
[[Fájl:Oop vizsga liskov 3.png|Keret]]
{{Kvízkérdés|típus=egy|válasz=1}}
# Teljesül
# Sérül
== Párosítsa az alábbi OO tervezési heurisztikákat a nekik leginkább megfelelő tervezési mintákkal! ==
Egy tervezési mintát legfeljebb egyszer használjon fel!
Az öröklődés helyett preferáljuk a tartalmazást!
{{Kvízkérdés|típus=egy|válasz=1}}
# Adapter
# Prototype
# Strategy
# Template Method
# Singleton
Az öröklődés célja mindig a viselkedés újrahasznosítása!
{{Kvízkérdés|típus=egy|válasz=4}}
# Adapter
# Prototype
# Strategy
# Template Method
# Singleton
A gyakran változó dinamikus szemantikát és kényszereket külső viselkedésként implementáljuk!
{{Kvízkérdés|típus=egy|válasz=3}}
# Adapter
# Prototype
# Strategy
# Template Method
# Singleton
== Tekintsük az alábbi osztálydiagramot (követelmények mutatása/elrejtése)! ==
Mely OO tervezési heurisztikák teljesülnek az alábbiak közül?
[[Fájl:OOP vizsga varvedelem.png|Keret]]
{{Kvízkérdés|típus=több|válasz=3,4,5}}
# Implementáljuk a sztenderd metódusokat!
# Kerüljük a csak adattárolásra használt osztályokat!
# Egy osztály ne függjön a saját leszármazottaitól!
# Kerüljük az isten-osztályokat!
# Ne keverjük össze a statikus és a dinamikus kényszereket!
== Tekintsük az alábbi osztálydiagramot (követelmények mutatása/elrejtése)! ==
Mely OO tervezési heurisztikák teljesülnek az alábbiak közül?
[[Fájl:OOP vizsga varvedelem.png|Keret]]
{{Kvízkérdés|típus=több|válasz=1,2,3,4}}
# Ne készítsünk függvényeket a típusok vagy képességek megkülönböztetésére, használjunk polimorfizmust!
# Ne keverjük össze a leszármazottakat az objektumokkal!
# Az öröklési hierarchia gyökerében interfészek vagy absztrakt osztályok legyenek!
# Az opcionális elemeket tartalmazásként implementáljuk, ne öröklődéssel!
# A viselkedést modellezzük, ne a szerepeket!
== Párosítsa az alábbi OO tervezési heurisztikákat a nekik leginkább megfelelő refaktorálási mintákkal és code smell-ekkel! ==
Egy refaktorálási mintát vagy code smell-t legfeljebb egyszer használjon fel!
Kerüljük az isten-osztályokat!
{{Kvízkérdés|típus=egy|válasz=3}}
# Smell: Feature envy
# Smell: Refused bequest
# Smell: Large class
# Refactor: Introduce null object
# Refactor: Encapsulate field
Soha ne vizsgáljuk egy objektum típusát, használjunk helyette polimorfizmust!
{{Kvízkérdés|típus=egy|válasz=2}}
# Smell: Feature envy
# Smell: Downcasting
# Smell: Large class
# Refactor: Introduce null object
# Refactor: Encapsulate field
Ha az ős működését üres implementációval írjuk felül, akkor hibás az öröklési hierarchia!
{{Kvízkérdés|típus=egy|válasz=2}}
# Smell: Feature envy
# Smell: Refused bequest
# Smell: Large class
# Refactor: Introduce null object
# Refactor: Encapsulate field
Egy osztály ne függjön az őt használó osztályoktól!
{{Kvízkérdés|típus=egy|válasz=1}}
# Smell: Feature envy
# Smell: Refused bequest
# Smell: Large class
# Refactor: Introduce null object
# Refactor: Encapsulate field
Az opcionális elemeket tartalmazásként implementáljuk, ne öröklődéssel!
{{Kvízkérdés|típus=egy|válasz=4}}
# Smell: Feature envy
# Smell: Refused bequest
# Smell: Large class
# Refactor: Introduce null object
# Refactor: Encapsulate field
== Igaz vagy hamis az alábbi állítás? ==
Ha büdös kódot (code smell) találunk a szoftverben, akkor a szoftverben hiba (bug) van.
{{Kvízkérdés|típus=egy|válasz=2}}
# Igaz
# Hamis
== Igaz vagy hamis az alábbi állítás? ==
A refaktorálás nem változtatja meg a szoftver struktúráját, csak a szoftver viselkedését.
{{Kvízkérdés|típus=egy|válasz=2}}
# Igaz
# Hamis
== A Long Method code smell melyik refaktorálási minta segítségével javítható? ==
{{Kvízkérdés|típus=egy|válasz=4}}
# Inline method
# Encapsulate field
# Rename method
# Decompose conditional
# Introduce assertion
== A Inappropriate Intimacy code smell mely refaktorálási minták segítségével javítható? ==
{{Kvízkérdés|típus=több|válasz=1,2,5}}
# Inline method
# Move method
# Hide method
# Remove control flag
# Replace delegation with inheritance
== Az alábbiak közül melyek jó osztálynevek a clean code elvek szerint? ==
{{Kvízkérdés|típus=több|válasz=1,6}}
# Student
# MPoint
# MP
# SqlStatementFromHardCodedValuesAndSafeDataTypes
# Move
# Info
# SyntaxVisitor
== Igaz vagy hamis az alábbi felszólítás a clean-code szerint? ==
Ne használjunk unchecked kivételeket!
{{Kvízkérdés|típus=egy|válasz=2}}
# Igaz
# Hamis
== Igaz vagy hamis az alábbi állítás? ==
Az alábbi kódrészlet megfelel a clean code elveknek:
    public int Max(List<int> values)
    {
        if (values == null) return -1;
        if (values.Count == 0) return -2;
        int result = values[0];
        for (int i = 1; i < values.Count; i++)
        {
            if (values[i] > result) result = values[i];
        }
        return result;
    }
{{Kvízkérdés|típus=egy|válasz=2}}
# Igaz
# Hamis
== Elosztott kommunikáció során mely minta jellemző az alábbi állításokra? ==
Szerver objektum példányosítása
{{Kvízkérdés|típus=egy|válasz=1}}
# Adapter
# Proxy
Függvényhívás hálózati kéréssé alakítása
{{Kvízkérdés|típus=egy|válasz=2}}
# Adapter
# Proxy
Beérkező hálózati kérés függvényhívássá alakítása
{{Kvízkérdés|típus=egy|válasz=1}}
# Adapter
# Proxy
Úgy viselkedik, mintha lokális szerver objektum lenne
{{Kvízkérdés|típus=egy|válasz=2}}
# Adapter
# Proxy
A szerver megkeresése
{{Kvízkérdés|típus=egy|válasz=2}}
# Adapter
# Proxy
Paraméterek üzenetté sorosítása
{{Kvízkérdés|típus=egy|válasz=2}}
# Adapter
# Proxy
Csatlakozás a szerverhez
{{Kvízkérdés|típus=egy|válasz=2}}
# Adapter
# Proxy
== Elosztott kommunikáció során mely minta jellemző az alábbi állításra? ==
Visszatérési érték üzenetté sorosítása
{{Kvízkérdés|típus=egy|válasz=1}}
# Adapter
# Proxy
== Elosztott kommunikáció során mely minta jellemző az alábbi állításra? ==
Kliens kapcsolatok fogadása
{{Kvízkérdés|típus=egy|válasz=1}}
# Adapter
# Proxy
== Elosztott kommunikáció során mely minta jellemző az alábbi állításra? ==
Implementálja a szerver interfészét
{{Kvízkérdés|típus=egy|válasz=2}}
# Adapter
# Proxy
== Igaz vagy hamis az alábbi állítás? ==
Immutable objektumok használata során nincs szükség klónozásra és másoló konstruktorra.
{{Kvízkérdés|típus=egy|válasz=1}}
# Igaz
# Hamis
== Igaz vagy hamis az alábbi állítás? ==
Egy ImmutableList<T> foreach ciklussal történő bejárása kevésbé hatékony, mint egy List<T> bejárása.
{{Kvízkérdés|típus=egy|válasz=1}}
# Igaz
# Hamis
== Az alábbiak közül melyek szerepelnek az API tervezési és a clean code témakörben is? ==
{{Kvízkérdés|típus=több|válasz=1,2,5,7,8}}
# Kerüljük a hosszú paraméterlistákat
# Használjunk beszédes neveket
# Egy függvény egyszerre csak egy absztrakciós szinten dolgozzon
# Egy függvény legfeljebb 20 soros legyen
# Kerüljük a mellékhatásokat
# Válasszunk megfelelő alapértelmezett értékeket
# Kerüljük a rövidítéseket
# Ha egy függvény előfeltételei sérülnek, azonnal dobjunk kivételt a függvényből
A lap eredeti címe: „https://vik.wiki/OOP_vizsga_kikérdező