Malý test OOP a Design Patterns


1. Objekt v OOP je

a) obraz reality
b) uzavřená struktura v programu, se kterou lze spolupracovat pouze posláním zprávy
c) struktura s funkcemi a proměnnými

2. Vnitřní paměť objektu je reprezentována tzv.

a) atributy
b) metodami
c) atributy a metodami

3. Pseudonym pro interface objektu je

a) skupina funkcí objektu
b) skupina set / get objektu
c) protokol zpráv objektu

4. Porušení zapouzdření má za následek

a) ztrátu konzistence vnitřních stavů objektu
b) větší objem kódu
c) lepší možnost práce s daty

5. Hlavní důvod zavedení tříd v OOP je

a) menší obsazení paměti programu
b) opětovná použitelnost sdílením definice objektů stejných vlastností
c) zvýšení výkonu programu

6. Jedna z následujících vět plně vystihuje polymorfní chování:

a) dva objekty z téže třídy rozumí téže zprávě,
každý z nich má v protokolu přiřazenu jinou vnitřní metodu, proto reagují na danou zprávu každý jinak
b) dva různé objekty rozumí téže zprávě, každý z nich má v protokolu přiřazenu jinou vnitřní metodu,
proto reagují na danou zprávu každý jinak

c) dva různé objekty mají na tutéž zprávu přiřazenu stejnou vnitřní metodu a reagují proto na tuto zprávu stejně

7. Dva různé objekty, které se chovají podle polymorfního vzorce :

a) mohou být ze stejné třídy
b) musí být ze stejné třídy
c) nemohou být ze stejné třídy

8. Vztah Asociace v UML je v OOP realizován pomocí:

a) inheritance
b) interakce přes interface mezi objekty
c) bloku programu se specifickým algoritmem

9. Vztah Generalizace v UML je v OOP reprezentován pomocí:

a) inheritance
b) interakce přes interface mezi objekty
c) bloku programu se specifickým algoritmem

10. Synonymum pro abstraktní třídu se všemi metodami abstraktními
bez jediného atributu (v dynamické části) je

a) čistá třída
b) interface
c) root class

11. Proč není v jazyce C++ zavedeno (na rozdíl od Java resp. C#) rezervované slovo „interface“?

a) protože C# a Java jsou modernější jazyky
b) protože C++ podporuje vícenásobnou dědičnost v plném rozsahu
c) protože C# a Java jsou určeny mimo jiné i pro objektově distribuované prostředí a tam je interface třeba

12. Může mít abstraktní třída metodu, která není abstraktní?

a) ano
b) ne
c) jen pokud není root třídou ve stromu dědičnosti

13. Musí být třída, která má nějakou metodu abstraktní, abstraktní?

a) ano
b) ne
c) jen pokud je root třídou ve stromu dědičnosti

14. Pokud chceme změnit akci v daném bodě programu bez zásahu do programu, použijeme vzor:

a) STATE
b) COMMAND
c) OBSERVER

15. Vzor COMMAND má alias

a) CONTROLLER
b) ACTION
c) ORDER

16. Pro zavedení událostí přímo v programu pomocí OOP použijeme vzor

a) COMMAND
b) STATE
c) OBSERVER

17. Příklad na vzor FACTORY

Jste hlavní programátor a kolega napsal program v C++ se stromem dědičnosti a zavedl pro něj převodník kód třídy konkrétního potomka versus volání konstruktoru podle vzoru Factory s metodou Create (kód třídy), ale namísto do pozice Singletonu tuto metodu umístil do statické metody předka. Kód sice funguje, ale není to správné.
V čem je tento postup chybný?
`

a) metoda Create není přístupná ze všech bodů daného programu
b) metoda Create bude vracet objekty pouze ze třídy předka
c) vznikla závislost kódu ve směru od předka k potomkovi


18. Při správném korektním návrhu vrstev aplikace budeme potřebovat nasadit vzor

a) COMMAND
b) OBSERVER
b) STATE

19. Vzor OBSERVER se v prostředí Java nazývá

a) CONTROLLER
b) FEELER
c) LISTENER

21. Konkurenčním vzorem pro vzor FACTORY je

a) PROTOTYPE
b) COMPOSITE
c) ABSTRACT FACTORY

22. Vzor VISITOR:

a) je flexibilní pro přidání dědice pro novou pseudooperaci a neflexibilní pro přidání nového dědice Elementu
b) je flexibilní pro přidání dědice pro novou pseudooperaci a flexibilní pro přidání nového dědice Elementu
c) je neflexibilní pro přidání dědice pro novou pseudooperaci a flexibilní pro přidání nového dědice Elementu

23. Zpracování došlých zpráv

Při zpracování došlých zpráv se tyto zpracovávají jednotným scénářem, ale různé typy zpráv se v daných částech scénáře zpracovávají jinak.
Pro tento případ je vhodné nasadit vzor:

a) STRATEGY
b) TEMPLATE METHOD
c) FACTORY


24. Nalezněte nasazení vzoru u kódu v CASE nástroji EA

Prostudujte ukázkový kód průchodu prvky v CASE nástroji EA stromem elementů s výpisem vlastností elementů přímo na konzolu, viz zde Tento kód je také ukázkový pro nasazení dvou vzorů, které tam nejsou nasazeny a které byste měli identifikovat.
Které vzory by se zde hodilo nasadit (průchod stromem elementů a výpis na konzolu) a nejsou tam?

a) STRATEGY a OBSERVER
b) COMPOSITE a BUILDER
c) COMPOSITE a PROXY


25. Nalezněte nasazení vzoru při zpracování souboru

Utilita bude umět zpracovat soubor, uživatel může zvolit tyto kombinace postupů:
zašifrovat soubor a odeslat,
zazipovat a odeslat,
zazipovat, zakryptovat a odeslat,
zakryptovat, zazipovat a odeslat
a je vcelku možné, že přibude další operace zpracování v těchto kombinacích.
Který vzor by se zde hodilo nasadit?

a) ABSTRACT FACTORY
b) BUILDER
c) DECORATOR


26. Pro efektivní a flexibilní spolupráci vrstvy logické a implementační v aplikaci slouží vzor

a) BRIDGE
b) STRATEGY
c) BUILDER

26. Určete vzor podle scénáře

Přečtěte si pozorně následující scénář a určete, který vzor by bylo vhodné při jeho realizaci nasadit:
Obsluze se zobrazí seznam typů osob. Obsluha vybere typ osoby. Dále se pokračuje UC "Založení nové osoby" podle vybraného typu osoby.

a) COMMAND
b) STRATEGY
c) BUILDER

27. Určete vzor podle scénáře

Přečtěte si pozorně následující scénář a určete, který vzor by bylo vhodné při jeho realizaci nasadit:
Obsluze se zobrazí seznam akcí povolených podle přihlášené role. Obsluha vybere akci a ta se spustí, viz UC "Spuštění akce"

a) COMMAND
b) STRATEGY
c) BUILDER





Správné volby se zobrazí červeně a podtrženě, zkontrolujte nejprve, zda máte vyplněny všechny