Vyřešené teoretické otázky do OOP ( )

Podobné dokumenty
3. Je defenzivní programování technikou skrývání implementace? Vyberte jednu z nabízených možností: Pravda Nepravda

Dalším příkladem může být například výstup dat na různá zařízení, souborů, grafických rozhraní, sítě atd.

ČÁST 1. Zahřívací kolo. Co je a k čemu je návrhový vzor 33

Programování II. Třídy a objekty (objektová orientovanost) 2018/19

PB161 Programování v jazyce C++ Přednáška 7

PB161 Programování v jazyce C++ Přednáška 7

10 Balíčky, grafické znázornění tříd, základy zapozdření

Sada 1 - Základy programování

Programování II. Modularita 2017/18

Objekty, třídy, vazby 2006 UOMO 30

Klíčová slova: OOP, konstruktor, destruktor, třída, objekt, atribut, metoda

Programování II. Úvod do dědičnosti 2018/19

1. Programování proti rozhraní

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Základy objektové orientace I. Únor 2010

6 Objektově-orientovaný vývoj programového vybavení

Maturitní témata Školní rok: 2015/2016

Objektově orientovaný přístup

11 Diagram tříd, asociace, dědičnost, abstraktní třídy

TÉMATICKÝ OKRUH Softwarové inženýrství

2. Modelovací jazyk UML 2.1 Struktura UML Diagram tříd Asociace OCL. 3. Smalltalk 3.1 Jazyk Pojmenování

Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

Obsah přednášky 9. Skrývání informací. Skrývání informací. Zapouzdření. Skrývání informací. Základy programování (IZAPR, IZKPR) Přednáška 9

1. Dědičnost a polymorfismus

Třídy. Instance. Pokud tento program spustíme, vypíše následující. car1 má barvu Red. car2 má barvu Red. car1 má barvu Blue.

Programování II. Abstraktní třída Vícenásobná dědičnost 2018/19

Programování II. Objektová dekompozice Třída jako objekt 2018/19

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Návrhové vzory OMO, LS 2014/2015

Dědění, polymorfismus

NPRG031 Programování II 1 / :25:46

NMIN201 Objektově orientované programování 1 / :36:09

7.5 Diagram tříd pokročilé techniky

Programování II. Polymorfismus

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Objektové programování

Maturitní témata. IKT, školní rok 2017/18. 1 Struktura osobního počítače. 2 Operační systém. 3 Uživatelský software.

Generické programování

PB161 Základy OOP. Tomáš Brukner

Využití OOP v praxi -- Knihovna PHP -- Interval.cz

Programování II. Návrh programu II

8 Třídy, objekty, metody, předávání argumentů metod

Programovací jazyky Přehled a vývoj

IB111 Programování a algoritmizace. Programovací jazyky

Analýza a modelování dat. Přednáška 4

7.5 Diagram tříd pokročilé techniky

Návrhové vzory. Jakub Klemsa, Jan Legerský. 30. října Objektově orientované programování.

IB111 Úvod do programování skrze Python Přednáška 13

Úvod. Programovací paradigmata

VZOROVÝ STIPENDIJNÍ TEST Z INFORMAČNÍCH TECHNOLOGIÍ

Vlastnosti algoritmu. elementárnost. determinovanost. rezultativnost. konečnost. hromadnost. efektivnost

Matematika v programovacích

Principy UML. Clear View Training 2005 v2.2 1

7.3 Diagramy tříd - základy

Java/QE Akademie - Osnova

Profilová část maturitní zkoušky 2017/2018

Obsah přednášky. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace UML. Co je diagram tříd. Ing. Ondřej Guth

Principy OOP při tvorbě aplikací v JEE. Michal Čejchan

Delphi - objektově orientované

Programování II. Návrh programu I 2018/19

Programovací techniky

7.3 Diagramy tříd - základy

Obsah. Zpracoval:

Metodika. Architecture First. Rudolf Pecinovský

Objektově orientované programování v jazyce Python

Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám.

1 Základních pojmy z oblasti programování, vyšší programovací jazyky, programovací paradigmata

Diagramy tříd - základy

OBJEKTOVÉ PROGRAMOVÁNÍ V C++ V PŘÍKLADECH 8 Proudová knihovna 8.1 Hierarchie proudů Standardně zavedené proudy

TÉMATICKÝ OKRUH Softwarové inženýrství

IB111 Programování a algoritmizace. Objektově orientované programování (OOP)

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Objektově orientované programování v jazyce Python

Překladač a jeho struktura

PB161 programování v C++ Výjimky Bezpečné programování

6 Příkazy řízení toku

Analýza a Návrh. Analýza

State. Známý jako. Účel. Použitelnost. Stav, Object for States. umožňuje objektu měnit svoje chování v závislosti na stavu objekt mění svou třídu

specifikuje vytvářené objekty pomocí prototypické instance nový objekt vytváří kopírováním prototypu

Programování v C++ 2, 4. cvičení

Objektově orientované technologie. Daniela Szturcová

Výčtový typ strana 67

Programování II. Dědičnost změna chování 2018/19

Unifikovaný modelovací jazyk UML

Modelování informačních systémů s využitím jazyka UML. Jaroslav Šmarda

Program a životní cyklus programu

Tabulka symbolů. Vazba (binding) Vazba - příklad. Deklarace a definice. Miroslav Beneš Dušan Kolář

Programování v C++ 3, 3. cvičení

Úvod do softwarového inženýrství IUS 2009/2010 p.1/42

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

1 Strukturované programování

Unity a Objekty (NMIN102) RNDr. Michal Žemlička, Ph.D.

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

Jazyk C# (seminář 3)

Semin aˇr Java N avrhov e vzory Radek Ko ˇc ı Fakulta informaˇcn ıch technologi ı VUT Duben 2009 Radek Koˇc ı Semin aˇr Java N avrhov e vzory 1/ 25

Profilová část maturitní zkoušky 2013/2014

Dynamicky vázané metody. Pozdní vazba, virtuální metody

1. Obecně o programování

Transkript:

Vyřešené teoretické otázky do OOP (16. 1. 2013) 1) Vyjmenujte v historickém pořadí hlavní programovací paradigmata a stručně charakterizujte každé paradigma. a) Naivní chaotičnost, špatná syntaxe a sémantika b) Sekvenční sériové řazení příkazů, příkaz GO TO, nepřehledný a nečitelný zápis. (ASSEMBLER, Fortran, Basic). 1. Styl programování, c) Strukturované posloupnost příkazů, struktury tvoří bloky, kde jsou příkazy. Bloky lze přeskakovat, opakovat. Bloky->grafické stromy, ALGOL, Pascal, Jazyk C d) Objektové množina objektů, které si posílají zprávy. Pracují se třídami a instancemi objektů. Objekt (stav, chování, komunikace) 2) Proč dáváme přednost skládání před dědičnosti U dědičnosti je nebezpečí odkrytí implementace kódu. Dědí vlastnosti a mohou k nim přidávat vlastní rozšíření. 3) Co je to jedináček? (K čemu se využívá návrhového vzoru jedináček, angl. Singleton)? Zabezpečuje vytvoření nejvýše jedné instance (Používá se, když chceme v celém programu zajistit jednu instanci třídy) 4) Proč není dobré, při programování, hledat vždy nejoptimálnější řešení? a) Kvůli budoucím možným úpravám b) Změnám požadavků c) Může docházet k znepřehlednění kódu. 5) Jak předcházíme chybným reakcím v našem programovém kódu? Včasným (průběžným) testováním. 6) Proč programujeme proti rozhraní? Lze měnit/doplnit instanční třídy bez ohrožení tříd, kterou takovou třídu používají, 7) Vyjmenujte základní koncepty objektového přístupu. a) Abstrakce b) Třída c) Dědičnost d) Polymorfismus e) Zapouzdření f) Asociace g) Vazba h) Agregace i) Synergie a objektová struktura j) Zprávy k) Zachování stavu l) Skrývání implementací m) Genericita n) Identita objektů.

8) Popište zásadu o maximalizaci soudržnosti: O čem je, v čem je problém a jak ho řešíme. Každá část řeší jednu problematiku, pokud je činnost jednoduchá, zůstáváme u dané metody. a) Zásada: každá entita by měla řešit jeden konkrétní úkol b) O čem to je: žádná entita by neměla mít na starosti několik věcí najednou c) V čem je problém: předčasné zkoumání detailů d) Řešení: požádat o pomoc jiný objekt 9) K čemu je dobrá genericita? K omezování duplicit ve zdrojovém kódu 10) V čem si myslíte, že je dědičnost nebezpečná. Je to příliš silná zbraň, proto je i nebezpečná. 11) Popište, jak lze odstranit dědičnost. Implementací rozhraní. (v2 - Nahradit skládáním) 12) Co je to iterátor? Prostředek zajišťující sekvenční přístup k datům. 13) K čemu slouží iterátor? Umožňuje procházet kolekcí bez znalosti implementace. 14) Jakého principu využívá iterátor? Zřetězeného seznamu. 15) V čem je testovací program výhodnější než ověření vyvíjených tříd běžnou aplikací? Oddělení testu od kódu. (v2 Je přesnější) 16) Co je to jednoduchá tovární metoda? Účel je vytvořit novou instanci nějakého objektu. 17) V čem je výhodnější vypočítat výstupní hodnoty při změně atributů oproti výpočtu při převzetí výstupní hodnoty. 18) V čem je testovací program výhodnější než ověření vyvíjených tříd běžnou aplikací? Pouze jedna instance třídy 19) Kde v Java se výhodně využívá návrhový, vzor dekorátor? U genericity. (v2 - Knihovny proudu a knihovny GUI) 20) Jak objekty zachovávají stav? Stav je množina hodnot, kterou si objekt zachovává. Zachování stavu je jádrem práce s objekty. 21) Co je to defenzivní programování? je forma návrhu softwaru, která se snaží zaručit jeho nepřetržitou funkčnost i za podmínek použití, ke kterým nebyl původně navržen.

22) V čem se liší asociace a kompozice. Kompozice je relace mezi třídami. Asociace je základní vazba mezi třídami. Je to předpis, jak budoucí objekty mohou mezi sebou navazovat spojení. (v2 - Asociace je základní vazba mezi třídami, předpis, jak spolu budou objekty komunikovat. Kompozice je proti tomu nejsilnější vazbou, součásti kompozice nemohou existovat samostatně, jen jako celek.) 23) Jaké jsou výhody programování proti rozhraní? Proměnné by neměly být deklarovány jako instance vnořené třídy, ale jako instance. Musí se myslet na uživatele. Použitím interface se skrývá implementace našeho kódu. 24) K čemu s výhodou používáme genericitu? K odstranění duplicity v kódu. 25) Proč je dobré řídit vývoj softwaru testy? Znáte nějaké metody výběru testovacích příkladů????? 26) K čemu jsou výjimky? Vysvětlete princip. K zachytávání a ošetření chybových stavů. 27) Popište principy zásady zapouzdření a odpoutání kódu. a) Zapouzdřený kód nám umožní se snáze odpoutat od zbytku, takže libovolně měníme, aniž ovlivníme zbytek. b) Odpoutáním se myslí odstranění přímých vazeb. Například tím, že se nebudeme obracet přímo na instance dané třídy, ale na rozhraní, které daná třída implementuje. 28) V čem si myslíte, že je dědičnost nebezpečná? Může dědit chyby, odkrývat implementaci, je to příliš silná vazba, při více násobné dědičnosti může vznikat duplicita 29) Vyjmenujte koncepty objektové orientace (OO) a) Zapouzdření b) Skrývání implementace c) Zachování stavu d) Identita objektu e) Komunikace f) Struktura zprávy g) Argumenty zprávy h) Role objektu i) Typ zprávy j) Třídy dědičnost k) Polymorfismus l) Genericita 30) Vyjmenujte zásady správného návrhu OOP Skrývání implementace, zapouzdření, soudržnost, programování proti rozhraní, návrh řízený odpovědností, minimální provázanost, vyhýbání se duplicitě, skládání před dědičností, nepodřizovat návrh efektivitě, odpoutání

31) Popište zásadu programování proti rozhraní. Proměnné nedeklarovat jako instanci konkrétní třídy, ale jako instance nějakého datového typu, který není vázán na implementaci a) Lze měnit instanční třídy bez ohrožení tříd, kterou takovou třídu používají b) Lze doplnit instanční třídy bez ohrožení tříd, kterou takovou třídu používají 32) Jakými programovacími metodami vytvoříme bezpečnější software. a) Skrývání implementace b) Skládání c) Vyhýbání se dědičnosti d) Programovat proti rozhraní 33) V čem je dědičnost nebezpečná? Proč bychom se ji měli vyhýbat. Může dědit chyby, odkrývat implementaci, je to příliš silná vazba, při více násobné dědičnosti může vznikat duplicita 34) Jak vznikají duplicity v kódu a jak se odstraňují. a) Vznik: kopírování (copy-paste) z jiných programů b) Odstranění: pomocí metod s parametry pomocí parametru třídy 35) Primitivní konstruktor. Neobsahuje žádné parametry. 36) Co je to identita? Jaká jsou pravidla? Identita představuje jedinečnou existenci objektu v čase a prostoru, která jej odlišuje od jiných objektů 37) Jaký princip si představujete pod pojmem Anonymita klienta? Nevíme, kdo použije program a jaký s ním bude mít záměr. 38) V čem se liší asociace a agregace v implementaci v programovacím jazyce java? Asociace je obecnější vazba než agregace. Agregace je určitá forma asociace, která specifikuje vztah mezi celkem a jeho částí. 39) Popište co je to skrývání implementace. Spolupracující programy nesmí v žádném případě zjistit co náš objekt dělá, že umí to, co umí a jakkoliv negativně ovlivnit náš objekt. A proto je nutné zveřejnit jenom potřebné metody, ostatní metody (pomocné) by měly být soukromé. 40) Jaké známe vnořené třídy a jaký je mezi nimi rozdíl. a) Staticky vnořené třídy - Jedná se o třídy, které byly pouze vnořeny do vnější třídy z důvodu, že spolu souvisí významově. Lze vytvořit její instanci nezávisle na instanci vnější třídy. b) Vnitřní třída - Vnitřní třída je daleko víc provázána se svojí vnější třídou, protože se stává členem vnější třídy. Její instance je možná pouze v instanci vnější třídy. 41) Co je to anonymita klienta?

Anonymitou klienta se rozumí to, že se neví při návrhu nějaké třídy kdo ji a jak bude užívat.