„OOP vizsga kikérdező” változatai közötti eltérés
Új oldal, tartalma: „{{Kvízoldal |cím=Tesztkérdések |pontozás=- }} == A Monitor Object minta a Guarded Suspension minta Finish review Mark 1.00 out of segítségével valósítható meg. == alma alma {{Kvízkérdés|típus=egy|válasz=2}} # Igaz # Hamis == Egy alkalmazáskarbantarthatósága általában javul , ha sikerül csökkenteni a függőségek számát az alkalmazás egyes részei között == {{Kvízkérdés|típus=egy|válasz=1}} # Igaz # Hamis” |
Nincs szerkesztési összefoglaló |
||
| (9 közbenső módosítás ugyanattól a felhasználótól nincs mutatva) | |||
| 3. sor: | 3. sor: | ||
|pontozás=- | |pontozás=- | ||
}} | }} | ||
== A Monitor Object minta a Guarded Suspension minta | == A Monitor Object minta a Guarded Suspension minta segítségével valósítható meg. == | ||
{{Kvízkérdés|típus=egy|válasz=2}} | {{Kvízkérdés|típus=egy|válasz=2}} | ||
# Igaz | # Igaz | ||
# Hamis | # Hamis | ||
== Egy | == Igaz-e az alábbi állítás? == | ||
Egy alkalmazás karbantarthatósága általában javul, ha sikerül csökkenteni a függőségek számát az alkalmazás egyes részei között. | |||
{{Kvízkérdés|típus=egy|válasz=1}} | {{Kvízkérdés|típus=egy|válasz=1}} | ||
# Igaz | # Igaz | ||
# Hamis | # Hamis | ||
== Mely OO tervezési heurisztikák teljesülnek az alábbiak közül? == | |||
[[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,2,3,6}} | |||
# Ne készítsünk típus- illetve képességmegkülönböztető függvényeket! | |||
# Kerüljük a csak adattárolásra használt osztályokat! | |||
# Egy osztály ne függjön a leszármazottaitól! | |||
# Ne keverjük össze az objektumokat a leszármazottakkal! | |||
# Az attribútumok legyenek privátok! | |||
# A viselkedést modellezzük, ne a szerepeket! | |||
# Egy osztály ne függjön az őt használó osztályoktól! | |||
# Az öröklési hierarchia gyökerében absztrakt osztályok legyenek! | |||
== Párosítsa az alábbi feladatokat a nekik leginkább megfelelő mintával == | |||
Define a family of algorithms, put each of them into a separate class, and make them dynamically interchangeable. | |||
{{Kvízkérdés|típus=egy|válasz=5}} | |||
# Adapter | |||
# Decorator | |||
# Flyweight | |||
# Object Pool | |||
# Strategy | |||
Allow objects with incompatible interfaces to collaborate. | |||
{{Kvízkérdés|típus=egy|válasz=1}} | |||
# Adapter | |||
# Decorator | |||
# Flyweight | |||
# Object Pool | |||
# Strategy | |||
Attach additional responsibilities to an object dynamically. | |||
{{Kvízkérdés|típus=egy|válasz=2}} | |||
# Adapter | |||
# Decorator | |||
# Flyweight | |||
# Object Pool | |||
# Strategy | |||
Share common state to support large numbers of objects efficiently. | |||
{{Kvízkérdés|típus=egy|válasz=3}} | |||
# Adapter | |||
# Decorator | |||
# Flyweight | |||
# Object Pool | |||
# Strategy | |||
Keep a set of initialized objects ready to use rather than allocating and destroying them on demand. | |||
{{Kvízkérdés|típus=egy|válasz=4}} | |||
# Adapter | |||
# Decorator | |||
# Flyweight | |||
# Object Pool | |||
# Strategy | |||
== Igaz-e 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-e 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 | |||
== Mely kommentek ajánlottak a clean code szerint? == | |||
{{Kvízkérdés|típus=több|válasz=2,3,6}} | |||
# Commented-out code | |||
# TODO comment | |||
# Amplification | |||
# Journal comments | |||
# Banner comments | |||
# Public API documentation | |||
== Igaz-e az alábbi állítás? == | |||
Kritikus szakaszon belülről hívott virtuális függvények nem okoznak problémát a többszálú alkalmazásokban. | |||
{{Kvízkérdés|típus=egy|válasz=2}} | |||
# Igaz | |||
# Hamis | |||
== Tegye sorrendbe az alábbi API-tervezési lépéseket! == | |||
API definiálása 1 oldalban | |||
{{Kvízkérdés|típus=egy|válasz=3}} | |||
# 1 | |||
# 2 | |||
# 3 | |||
# 4 | |||
# 5 | |||
Követelmények összegyűjtése | |||
{{Kvízkérdés|típus=egy|válasz=1}} | |||
# 1 | |||
# 2 | |||
# 3 | |||
# 4 | |||
# 5 | |||
API implementálása | |||
{{Kvízkérdés|típus=egy|válasz=5}} | |||
# 1 | |||
# 2 | |||
# 3 | |||
# 4 | |||
# 5 | |||
Példák írása az API-hoz | |||
{{Kvízkérdés|típus=egy|válasz=4}} | |||
# 1 | |||
# 2 | |||
# 3 | |||
# 4 | |||
# 5 | |||
Use-case-ek írása | |||
{{Kvízkérdés|típus=egy|válasz=2}} | |||
# 1 | |||
# 2 | |||
# 3 | |||
# 4 | |||
# 5 | |||
== Teljesül-e az alábbi feltételek mellett a Liskov-elv? == | |||
[[Fájl:Oop vizsga liskov 1.png|Keret]] | |||
A.foo post: 0 <= result<= 100 | |||
B.foo post: 10<= result<= 50 | |||
C.foo post: 0<= result<= 100 | |||
D.foo post: 20 <= result <= 40 | |||
{{Kvízkérdés|típus=egy|válasz=2}} | |||
# Teljesül | |||
# Sérül | |||
== Helyes-e az alábbi C# kódrészlet kölcsönös kizárás szempontjából? == | |||
private const string locker = "LOCK" ; | |||
public void DoSomestuff ( ) | |||
{ | |||
lock ( locker ) | |||
{ | |||
this.Work ( ) ; | |||
} | |||
} | |||
{{Kvízkérdés|típus=egy|válasz=2}} | |||
# Helyes | |||
# Helytelen | |||
== Teljesül-e az alábbi feltételek mellett a Liskov-elv? == | |||
[[Fájl:Oop vizsga liskov 1.png|Keret]] | |||
A.foo pre: 20<= x <=50 | |||
B.foo pre: 10< x<= 90 | |||
C.foo pre: 0 <= x <= 100 | |||
D.foo pre: 10< x <= 100 | |||
{{Kvízkérdés|típus=egy|válasz=1}} | |||
# Teljesül | |||
# Sérül | |||
== Igaz-e az alábbi állítás? == | |||
A YAGNI elv azt mondja, hogy ne használjunk tervezési mintákat. | |||
{{Kvízkérdés|típus=egy|válasz=2}} | |||
# Igaz | |||
# Hamis | |||
== Igaz-e az alábbi állítás? == | |||
Ha az ADP elv sérül, akkor a DIP elv segíthet a probléma megoldásában. | |||
{{Kvízkérdés|típus=egy|válasz=1}} | |||
# Igaz | |||
# Hamis | |||
== Igaz-e az alábbi állítás? == | |||
Az OCP elv azt mondja, hogy legyünk nyitottak a módosításra, és zártak a bővítésre. | |||
{{Kvízkérdés|típus=egy|válasz=2}} | |||
# Igaz | |||
# Hamis | |||
== A Feature Envy code smell mely refaktorálási minták segítségével javítható? == | |||
{{Kvízkérdés|típus=több|válasz=2,5}} | |||
# Introduce explaining variable | |||
# Move method | |||
# Replace magic numbers with symbolic constant | |||
# Rename method | |||
# Inline class | |||
== Egy háttérben futó számítás megszakítása == | |||
Az alábbi feladatot mely osztályok oldják meg Java esetén? | |||
{{Kvízkérdés|típus=egy|válasz=3}} | |||
# Adapter | |||
# Decorator | |||
# Future | |||
# Object | |||
# Observer | |||
# Singleton | |||
# Strategy | |||
== Kölcsönös kizárás biztosítása és szálak értesítése == | |||
Az alábbi feladatot mely osztályok oldják meg Java esetén? | |||
{{Kvízkérdés|típus=egy|válasz=4}} | |||
# Adapter | |||
# Decorator | |||
# Future | |||
# Object | |||
# Observer | |||
# Singleton | |||
# Strategy | |||
== Információ biztosítása háttérben futó számítás állapotáról == | |||
Az alábbi feladatot mely osztályok oldják meg Java esetén? | |||
{{Kvízkérdés|típus=egy|válasz=3}} | |||
# Adapter | |||
# Decorator | |||
# Future | |||
# Object | |||
# Observer | |||
# Singleton | |||
# Strategy | |||
== Igaz-e az alábbi állítás? == | |||
Az LoD szerint az általunk létrehozott objektumok nem számítanak idegennek. | |||
{{Kvízkérdés|típus=egy|válasz=1}} | |||
# Igaz | |||
# Hamis | |||
== Az opcionális elemeket tartalmazásként implementáljuk, ne öröklődésként! == | |||
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=3}} | |||
# Data Class | |||
# Extract Superclass | |||
# Introduce Null Object | |||
# Feature Envy | |||
# Replace Type Code with Class | |||
== 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}} | |||
# Data Class | |||
# Extract Superclass | |||
# Introduce Null Object | |||
# Feature Envy | |||
# Replace Type Code with Class | |||
== 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}} | |||
# Data Class | |||
# Extract Superclass | |||
# Introduce Null Object | |||
# Feature Envy | |||
# Replace Type Code with Class | |||
== 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}} | |||
# Data Class | |||
# Extract Superclass | |||
# Introduce Null Object | |||
# Feature Envy | |||
# 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 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}} | |||
# Data Class | |||
# Extract Superclass | |||
# Introduce Null Object | |||
# Feature Envy | |||
# Replace Type Code with Class | |||
== Melyik elv segítségével lehet feloldani a csomagok közötti körkörös függőséget? == | |||
{{Kvízkérdés|típus=egy|válasz=4}} | |||
# SRP | |||
# REP | |||
# LSP | |||
# DIP | |||
== Igaz vagy hamis az alábbi állítás? == | |||
A Visitor tervezési minta sérti az OCP elvet. | |||
{{Kvízkérdés|típus=egy|válasz=1}} | |||
# Igaz | |||
# Hamis | |||
== Igaz vagy hamis az alábbi állítás? == | |||
A Visitor tervezési minta sérti a DIP elvet. | |||
{{Kvízkérdés|típus=egy|válasz=2}} | |||
# Igaz | |||
# Hamis | |||
== Igaz vagy hamis az alábbi állítás? == | |||
Az öröklődés célja az ősosztályban definiált mezők újrahasznosítása. | |||
{{Kvízkérdés|típus=egy|válasz=2}} | |||
# Igaz | |||
# Hamis | |||
== Igaz vagy hamis az alábbi állítás? == | |||
A laza csatolás előnyös a karbantarthatóság szempontjából. | |||
{{Kvízkérdés|típus=egy|válasz=1}} | |||
# Igaz | |||
# Hamis | |||
== Igaz vagy hamis az alábbi állítás? == | |||
Egy szoftver akkor van jól tervezve, ha a stabil csomagok függnek az instabil csomagoktól. | |||
{{Kvízkérdés|típus=egy|válasz=2}} | |||
# Igaz | |||
# Hamis | |||
== Igaz vagy hamis az alábbi állítás? == | |||
A többnyelvűséget támogató erőforrásfájlok sértik az SCP elvet. | |||
{{Kvízkérdés|típus=egy|válasz=2}} | |||
# Igaz | |||
# Hamis | |||
== Ki számít ismerősnek a Demeter-törvény szerint? == | |||
{{Kvízkérdés|típus=több|válasz=1,2}} | |||
# Akire van asszociációnk | |||
# Akit bejövő paraméterként kaptunk | |||
# Aki létrehozott minket | |||
# Aki velünk egy csomagban van | |||
== Tekintsük az alábbi csomagokat! == | |||
Mely csomagok stabilak? | |||
[[Fájl:Oop vizsga csomagok1.png|Keret]] | |||
{{Kvízkérdés|típus=több|válasz=1,2}} | |||
# B | |||
# C | |||
# A | |||
# D | |||
== Tekintsük az alábbi osztálydiagramot! == | |||
Teljesül-e a bar függvényre a Liskov-elv? | |||
[[Fájl:Oop vizsga liskov 2.png|Keret]] | |||
{{Kvízkérdés|típus=egy|válasz=2}} | |||
# Teljesül | |||
# Sérül | |||
== Tekintsük az alábbi osztálydiagramot! == | |||
Teljesül-e a foo függvényre a Liskov-elv? | |||
[[Fájl:Oop vizsga liskov 1.png|Keret]] | |||
{{Kvízkérdés|típus=egy|válasz=2}} | |||
# Teljesül | |||
# Sérül | |||
== Igaz vagy hamis az alábbi állítás? == | |||
A refaktorálás célja a kódban lévő hibák (bugok) javítása. | |||
{{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 során érdemes egyszerre több refaktorálási műveletet is elvégezni. | |||
{{Kvízkérdés|típus=egy|válasz=2}} | |||
# Igaz | |||
# Hamis | |||
== A Feature Envy code smell melyik refaktorálási minták segítségével javítható? == | |||
{{Kvízkérdés|típus=egy|válasz=1}} | |||
# Move method | |||
# Change value to reference | |||
# Rename method | |||
# Introduce explaining variable | |||
# Remove control flag | |||
== A Duplicated Code code smell melyik refaktorálási minták segítségével javítható? == | |||
{{Kvízkérdés|típus=több|válasz=2,3}} | |||
# Substitute algorithm | |||
# Extract class | |||
# Extract method | |||
# Inline method | |||
# Duplicate observed data | |||
== Az alábbiak közül melyek jó függvénynevek a clean code elvek szerint? == | |||
{{Kvízkérdés|típus=több|válasz=1,3,5}} | |||
# PickColor | |||
# Manager | |||
# Pick | |||
# CP | |||
# Copy | |||
# F | |||
# ColorPicker | |||
== Igaz vagy hamis az alábbi állítás? == | |||
A kivételek típusait a hívó objektum szemszögéből kell definiálni. | |||
{{Kvízkérdés|típus=egy|válasz=1}} | |||
# Igaz | |||
# Hamis | |||
== Igaz vagy hamis az alábbi állítás? == | |||
Az alábbi kódrészlet megfelel a clean code elveknek. | |||
public void Save(string message) | |||
{ | |||
try | |||
{ | |||
file.WriteLine(message); | |||
} | |||
catch (Exception ex) | |||
{ | |||
// Oh, come on! | |||
} | |||
} | |||
{{Kvízkérdés|típus=egy|válasz=2}} | |||
# Igaz | |||
# Hamis | |||
== A HTTP cookie-k milyen állapottárolást tesznek lehetővé? == | |||
{{Kvízkérdés|típus=egy|válasz=3}} | |||
# Állapot a szerver adatbázisában | |||
# Állapot a szerver memóriájában | |||
# Állapot a kliens oldalon | |||
== Mire szolgál a trading service? == | |||
{{Kvízkérdés|típus=egy|válasz=1}} | |||
# Szolgáltatások interfész alapján történő keresésére | |||
# Tőzsdei szolgáltatások szabványos interfészleírója | |||
# Szolgáltatások logikai név alapján történő keresésére | |||
# Szolgáltatások használati díjának adminisztrálására | |||
== Igaz vagy hamis az alábbi állítás? == | |||
Immutable objektumok használatával elkerülhető a védelmi másolatok készítése. | |||
{{Kvízkérdés|típus=egy|válasz=1}} | |||
# Igaz | |||
# Hamis | |||
== Igaz vagy hamis az alábbi állítás? == | |||
Az ImmutableArray<T> hatékonyabb, mint az ImmutableList<T>, ha ritkán módosítjuk, de sokszor iterálunk rajta. | |||
{{Kvízkérdés|típus=egy|válasz=1}} | |||
# Igaz | |||
# Hamis | |||
== 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! | |||
A tartalmazó objektum használja a tartalmazott objektumokat! | |||
{{Kvízkérdés|típus=egy|válasz=2}} | |||
# Abstract Factory | |||
# Decorator | |||
# Interpreter | |||
# Mediator | |||
# Singleton | |||
A tartalmazott objektumok ne beszélgessenek egymással közvetlenül! | |||
{{Kvízkérdés|típus=egy|válasz=4}} | |||
# Abstract Factory | |||
# Decorator | |||
# Interpreter | |||
# Mediator | |||
# Singleton | |||
A statikus szemantikát és kényszereket a modell struktúrájába építsük be! | |||
{{Kvízkérdés|típus=egy|válasz=3}} | |||
# Abstract Factory | |||
# Decorator | |||
# Interpreter | |||
# Mediator | |||
# Singleton | |||
== 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! | |||
A közös viselkedés és közös adat minél magasabban legyen az öröklési hierarchiában | |||
{{Kvízkérdés|típus=egy|válasz=2}} | |||
# Refactor: Hide method | |||
# Refactor: Pull up method | |||
# Refactor: Replace type code with class | |||
# Smell: Feature envy | |||
# Smell: Inappropriate intimacy | |||
Ne használjuk másik osztály nempublikus tagjait! | |||
{{Kvízkérdés|típus=egy|válasz=5}} | |||
# Refactor: Hide method | |||
# Refactor: Pull up method | |||
# Refactor: Replace type code with class | |||
# Smell: Feature envy | |||
# Smell: Inappropriate intimacy | |||
Minimalizáljuk az együttműködő osztályok között használt metódusok számát! | |||
{{Kvízkérdés|típus=egy|válasz=4}} | |||
# Refactor: Hide method | |||
# Refactor: Pull up method | |||
# Refactor: Replace type code with class | |||
# Smell: Feature envy | |||
# Smell: Inappropriate intimacy | |||
Minimalizáljuk a publikus metódusok számát! | |||
{{Kvízkérdés|típus=egy|válasz=1}} | |||
# Refactor: Hide method | |||
# Refactor: Pull up method | |||
# Refactor: Replace type code with class | |||
# Smell: Feature envy | |||
# Smell: Inappropriate intimacy | |||
Soha ne kódoljuk a típust enum vagy int értékekbe, használjunk helyette polimorfizmust! | |||
{{Kvízkérdés|típus=egy|válasz=3}} | |||
# Refactor: Hide method | |||
# Refactor: Pull up method | |||
# Refactor: Replace type code with class | |||
# Smell: Feature envy | |||
# 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 jelenlegi, 2026. január 12., 07:50-kori változata
A Monitor Object minta a Guarded Suspension minta segítségével valósítható meg.
- Igaz
- Hamis
Igaz-e az alábbi állítás?
Egy alkalmazás karbantarthatósága általában javul, ha sikerül csökkenteni a függőségek számát az alkalmazás egyes részei között.
- Igaz
- Hamis
Mely OO tervezési heurisztikák teljesülnek az alábbiak közül?
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 .)
- Ne készítsünk típus- illetve képességmegkülönböztető függvényeket!
- Kerüljük a csak adattárolásra használt osztályokat!
- Egy osztály ne függjön a leszármazottaitól!
- Ne keverjük össze az objektumokat a leszármazottakkal!
- Az attribútumok legyenek privátok!
- A viselkedést modellezzük, ne a szerepeket!
- Egy osztály ne függjön az őt használó osztályoktól!
- Az öröklési hierarchia gyökerében absztrakt osztályok legyenek!
Párosítsa az alábbi feladatokat a nekik leginkább megfelelő mintával
Define a family of algorithms, put each of them into a separate class, and make them dynamically interchangeable.
- Adapter
- Decorator
- Flyweight
- Object Pool
- Strategy
Allow objects with incompatible interfaces to collaborate.
- Adapter
- Decorator
- Flyweight
- Object Pool
- Strategy
Attach additional responsibilities to an object dynamically.
- Adapter
- Decorator
- Flyweight
- Object Pool
- Strategy
Share common state to support large numbers of objects efficiently.
- Adapter
- Decorator
- Flyweight
- Object Pool
- Strategy
Keep a set of initialized objects ready to use rather than allocating and destroying them on demand.
- Adapter
- Decorator
- Flyweight
- Object Pool
- Strategy
Igaz-e az alábbi állítás?
Ha büdös kódot (code smell) találunk a szoftverben, akkor a szoftverben hiba (bug) van.
- Igaz
- Hamis
Igaz-e 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.
- Igaz
- Hamis
Mely kommentek ajánlottak a clean code szerint?
- Commented-out code
- TODO comment
- Amplification
- Journal comments
- Banner comments
- Public API documentation
Igaz-e az alábbi állítás?
Kritikus szakaszon belülről hívott virtuális függvények nem okoznak problémát a többszálú alkalmazásokban.
- Igaz
- Hamis
Tegye sorrendbe az alábbi API-tervezési lépéseket!
API definiálása 1 oldalban
- 1
- 2
- 3
- 4
- 5
Követelmények összegyűjtése
- 1
- 2
- 3
- 4
- 5
API implementálása
- 1
- 2
- 3
- 4
- 5
Példák írása az API-hoz
- 1
- 2
- 3
- 4
- 5
Use-case-ek írása
- 1
- 2
- 3
- 4
- 5
Teljesül-e az alábbi feltételek mellett a Liskov-elv?
A.foo post: 0 <= result<= 100
B.foo post: 10<= result<= 50
C.foo post: 0<= result<= 100
D.foo post: 20 <= result <= 40
- Teljesül
- Sérül
Helyes-e az alábbi C# kódrészlet kölcsönös kizárás szempontjából?
private const string locker = "LOCK" ;
public void DoSomestuff ( )
{
lock ( locker )
{
this.Work ( ) ;
}
}
- Helyes
- Helytelen
Teljesül-e az alábbi feltételek mellett a Liskov-elv?
A.foo pre: 20<= x <=50
B.foo pre: 10< x<= 90
C.foo pre: 0 <= x <= 100
D.foo pre: 10< x <= 100
- Teljesül
- Sérül
Igaz-e az alábbi állítás?
A YAGNI elv azt mondja, hogy ne használjunk tervezési mintákat.
- Igaz
- Hamis
Igaz-e az alábbi állítás?
Ha az ADP elv sérül, akkor a DIP elv segíthet a probléma megoldásában.
- Igaz
- Hamis
Igaz-e az alábbi állítás?
Az OCP elv azt mondja, hogy legyünk nyitottak a módosításra, és zártak a bővítésre.
- Igaz
- Hamis
A Feature Envy code smell mely refaktorálási minták segítségével javítható?
- Introduce explaining variable
- Move method
- Replace magic numbers with symbolic constant
- Rename method
- Inline class
Egy háttérben futó számítás megszakítása
Az alábbi feladatot mely osztályok oldják meg Java esetén?
- Adapter
- Decorator
- Future
- Object
- Observer
- Singleton
- Strategy
Kölcsönös kizárás biztosítása és szálak értesítése
Az alábbi feladatot mely osztályok oldják meg Java esetén?
- Adapter
- Decorator
- Future
- Object
- Observer
- Singleton
- Strategy
Információ biztosítása háttérben futó számítás állapotáról
Az alábbi feladatot mely osztályok oldják meg Java esetén?
- Adapter
- Decorator
- Future
- Object
- Observer
- Singleton
- Strategy
Igaz-e az alábbi állítás?
Az LoD szerint az általunk létrehozott objektumok nem számítanak idegennek.
- Igaz
- Hamis
Az opcionális elemeket tartalmazásként implementáljuk, ne öröklődésként!
A fenti OO tervezési heurisztikának melyik a leginkább megfelelő code smell vagy refaktorálási transzformáció?
- Data Class
- Extract Superclass
- Introduce Null Object
- Feature Envy
- Replace Type Code with Class
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ó?
- Data Class
- Extract Superclass
- Introduce Null Object
- Feature Envy
- Replace Type Code with Class
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ó?
- Data Class
- Extract Superclass
- Introduce Null Object
- Feature Envy
- Replace Type Code with Class
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ó?
- Data Class
- Extract Superclass
- Introduce Null Object
- Feature Envy
- 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 fenti OO tervezési heurisztikának melyik a leginkább megfelelő code smell vagy refaktorálási transzformáció?
- Data Class
- Extract Superclass
- Introduce Null Object
- Feature Envy
- Replace Type Code with Class
Melyik elv segítségével lehet feloldani a csomagok közötti körkörös függőséget?
- SRP
- REP
- LSP
- DIP
Igaz vagy hamis az alábbi állítás?
A Visitor tervezési minta sérti az OCP elvet.
- Igaz
- Hamis
Igaz vagy hamis az alábbi állítás?
A Visitor tervezési minta sérti a DIP elvet.
- Igaz
- Hamis
Igaz vagy hamis az alábbi állítás?
Az öröklődés célja az ősosztályban definiált mezők újrahasznosítása.
- Igaz
- Hamis
Igaz vagy hamis az alábbi állítás?
A laza csatolás előnyös a karbantarthatóság szempontjából.
- Igaz
- Hamis
Igaz vagy hamis az alábbi állítás?
Egy szoftver akkor van jól tervezve, ha a stabil csomagok függnek az instabil csomagoktól.
- Igaz
- Hamis
Igaz vagy hamis az alábbi állítás?
A többnyelvűséget támogató erőforrásfájlok sértik az SCP elvet.
- Igaz
- Hamis
Ki számít ismerősnek a Demeter-törvény szerint?
- Akire van asszociációnk
- Akit bejövő paraméterként kaptunk
- Aki létrehozott minket
- Aki velünk egy csomagban van
Tekintsük az alábbi csomagokat!
- B
- C
- A
- D
Tekintsük az alábbi osztálydiagramot!
Teljesül-e a bar függvényre a Liskov-elv?
- Teljesül
- Sérül
Tekintsük az alábbi osztálydiagramot!
Teljesül-e a foo függvényre a Liskov-elv?
- Teljesül
- Sérül
Igaz vagy hamis az alábbi állítás?
A refaktorálás célja a kódban lévő hibák (bugok) javítása.
- Igaz
- Hamis
Igaz vagy hamis az alábbi állítás?
A refaktorálás során érdemes egyszerre több refaktorálási műveletet is elvégezni.
- Igaz
- Hamis
A Feature Envy code smell melyik refaktorálási minták segítségével javítható?
- Move method
- Change value to reference
- Rename method
- Introduce explaining variable
- Remove control flag
A Duplicated Code code smell melyik refaktorálási minták segítségével javítható?
- Substitute algorithm
- Extract class
- Extract method
- Inline method
- Duplicate observed data
Az alábbiak közül melyek jó függvénynevek a clean code elvek szerint?
- PickColor
- Manager
- Pick
- CP
- Copy
- F
- ColorPicker
Igaz vagy hamis az alábbi állítás?
A kivételek típusait a hívó objektum szemszögéből kell definiálni.
- Igaz
- Hamis
Igaz vagy hamis az alábbi állítás?
Az alábbi kódrészlet megfelel a clean code elveknek.
public void Save(string message)
{
try
{
file.WriteLine(message);
}
catch (Exception ex)
{
// Oh, come on!
}
}
- Igaz
- Hamis
A HTTP cookie-k milyen állapottárolást tesznek lehetővé?
- Állapot a szerver adatbázisában
- Állapot a szerver memóriájában
- Állapot a kliens oldalon
Mire szolgál a trading service?
- Szolgáltatások interfész alapján történő keresésére
- Tőzsdei szolgáltatások szabványos interfészleírója
- Szolgáltatások logikai név alapján történő keresésére
- Szolgáltatások használati díjának adminisztrálására
Igaz vagy hamis az alábbi állítás?
Immutable objektumok használatával elkerülhető a védelmi másolatok készítése.
- Igaz
- Hamis
Igaz vagy hamis az alábbi állítás?
Az ImmutableArray<T> hatékonyabb, mint az ImmutableList<T>, ha ritkán módosítjuk, de sokszor iterálunk rajta.
- Igaz
- Hamis
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!
A tartalmazó objektum használja a tartalmazott objektumokat!
- Abstract Factory
- Decorator
- Interpreter
- Mediator
- Singleton
A tartalmazott objektumok ne beszélgessenek egymással közvetlenül!
- Abstract Factory
- Decorator
- Interpreter
- Mediator
- Singleton
A statikus szemantikát és kényszereket a modell struktúrájába építsük be!
- Abstract Factory
- Decorator
- Interpreter
- Mediator
- Singleton
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!
A közös viselkedés és közös adat minél magasabban legyen az öröklési hierarchiában
- Refactor: Hide method
- Refactor: Pull up method
- Refactor: Replace type code with class
- Smell: Feature envy
- Smell: Inappropriate intimacy
Ne használjuk másik osztály nempublikus tagjait!
- Refactor: Hide method
- Refactor: Pull up method
- Refactor: Replace type code with class
- Smell: Feature envy
- Smell: Inappropriate intimacy
Minimalizáljuk az együttműködő osztályok között használt metódusok számát!
- Refactor: Hide method
- Refactor: Pull up method
- Refactor: Replace type code with class
- Smell: Feature envy
- Smell: Inappropriate intimacy
Minimalizáljuk a publikus metódusok számát!
- Refactor: Hide method
- Refactor: Pull up method
- Refactor: Replace type code with class
- Smell: Feature envy
- Smell: Inappropriate intimacy
Soha ne kódoljuk a típust enum vagy int értékekbe, használjunk helyette polimorfizmust!
- Refactor: Hide method
- Refactor: Pull up method
- Refactor: Replace type code with class
- Smell: Feature envy
- Smell: Inappropriate intimacy
Igaz vagy hamis az alábbi állítás?
A Decorator tervezési minta sérti az OCP elvet.
- Igaz
- Hamis
Igaz vagy hamis az alábbi állítás?
Az Abstract Factory tervezési minta sérti az OCP elvet.
- 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.
- 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.
- Igaz
- Hamis
Igaz vagy hamis az alábbi állítás?
A DbC elv szerint a prekondíciókat nem szabad erősíteni.
- 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.
- Igaz
- Hamis
Ki számít ismerősnek a Demeter-törvény szerint?
- 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!
- A
- C
- D
- B
Tekintsük az alábbi osztálydiagramot!
Teljesül-e a bar függvényre a Liskov-elv?
- 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!
- Adapter
- Prototype
- Strategy
- Template Method
- Singleton
Az öröklődés célja mindig a viselkedés újrahasznosítása!
- Adapter
- Prototype
- Strategy
- Template Method
- Singleton
A gyakran változó dinamikus szemantikát és kényszereket külső viselkedésként implementáljuk!
- 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?
- 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?
- 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!
- 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!
- 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!
- 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!
- 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!
- 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.
- 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.
- Igaz
- Hamis
A Long Method code smell melyik refaktorálási minta segítségével javítható?
- 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ó?
- 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?
- 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!
- 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;
}
- Igaz
- Hamis
Elosztott kommunikáció során mely minta jellemző az alábbi állításokra?
Szerver objektum példányosítása
- Adapter
- Proxy
Függvényhívás hálózati kéréssé alakítása
- Adapter
- Proxy
Beérkező hálózati kérés függvényhívássá alakítása
- Adapter
- Proxy
Úgy viselkedik, mintha lokális szerver objektum lenne
- Adapter
- Proxy
A szerver megkeresése
- Adapter
- Proxy
Paraméterek üzenetté sorosítása
- Adapter
- Proxy
Csatlakozás a szerverhez
- 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
- Adapter
- Proxy
Elosztott kommunikáció során mely minta jellemző az alábbi állításra?
Kliens kapcsolatok fogadása
- Adapter
- Proxy
Elosztott kommunikáció során mely minta jellemző az alábbi állításra?
Implementálja a szerver interfészét
- 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.
- 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.
- Igaz
- Hamis
Az alábbiak közül melyek szerepelnek az API tervezési és a clean code témakörben is?
- 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

