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

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

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

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

Programování II. Modularita 2017/18

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

Programování II. Polymorfismus

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

Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody

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

Virtuální metody - polymorfizmus

Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++

Více o konstruktorech a destruktorech

Paradigmata programování 2

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

Konstruktory a destruktory

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

Programování v C++ VI

Programování II. Návrh programu II

Dědění, polymorfismus

Pokročilé programování v jazyce C pro chemiky (C3220) Dědičnost tříd v C++

Polymorfismus. Časová náročnost lekce: 3 hodiny Datum ukončení a splnění lekce: 30.března

Základy objektové orientace I. Únor 2010

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

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd

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

PREPROCESOR POKRAČOVÁNÍ

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

Objektové programování

INTERNETOVÉ BANKOVNICTVÍ ARTESA IDEAL

Chování konstruktorů a destruktorů při dědění

ŠVP pro obchodní akademii

Generické programování

Finanční řízení podniku cvičení 1. I) Vývoj vztahů mezi celkovým majetkem a kapitálem má svá ustálená pravidla.

Delphi - objektově orientované

1. Programování proti rozhraní

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

přetížení operátorů (o)

Objekty v PHP 5.x. This is an object-oriented system. If we change anything, the users object.

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.

Jazyk C++ 1. Blok 3 Objektové typy jazyka C++ Třída. Studijní cíl. Doba nutná k nastudování. Průvodce studiem

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

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

Cvičení č. 3. Sdílené prostředky a synchronizace Program Banka. 4 body

Sada 1 Matematika. 06. Finanční matematika - úvod

Úvod Třídy Rozhraní Pole Konec. Programování v C# Hodnotové datové typy, řídící struktury. Petr Vaněček 1 / 39

IRAE 07/08 Přednáška č. 1

Mělká a hluboká kopie

24. listopadu 2013, Brno Připravil: David Procházka

1. Téma 03 - Rozhodování

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

NPRG030 Programování I, 2015/16 1 / :25:32

Ceník pro úsek Osobní bankovnictví Fyzické osoby občané

7. OBJEKTOVĚ ORIENTOVANÉ PROGRAMOVÁNÍ

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.

UČEBNÍ OSNOVA OBČANSKÁ VÝCHOVA

Programování v jazyce C a C++

Složené úročení. Škoda, že to neudělal

1 Webový server, instalace PHP a MySQL 13

IRAE 07/08 Přednáška č. 2. atr1 atr2. atr1 atr2 -33

FINANČNÍ GRAMOTNOST. Příloha 5 ŠVP ZV Základní školy Kanice: Otevřená škola (součást 2. aktualizovaného vydání k )

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

Inovace výuky prostřednictvím šablon pro SŠ Gymnázium Jana Pivečky a Střední odborná škola Slavičín Ing. Jarmila Űberallová

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

Jazyk C# (seminář 6)

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

Tvorba informačních systémů

Registrační číslo projektu: CZ.1.07/1.5.00/ Název projektu: Moderní škola 21. století. Zařazení materiálu: Ověření materiálu ve výuce:

15. Projekt Kalkulačka

Vector datový kontejner v C++.

Ceník pro úsek Privátní bankovnictví - depozitní produkty a služby Právnické osoby

1. Dědičnost a polymorfismus

Seminář Java II p.1/43

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

ÚROKOVÉ SAZBY PRO TERMÍNOVANÉ VKLADY (v % p.a.) Podnikatelé a malé firmy. Kontakt. SAZBY PRO BĚŽNÉ ÚČTY (v % p.a.) Expobank CZ a.s.

Finanční matematika I.

SPOŘÍCÍ ÚČET. Finanční matematika 7

WinFAS. Agenda ÚČTO Založení nové knihy, číselné řady a šablony

Úkol: ve výši Kč. zachovat? 1. zjistěte, jestli by paní Sirotková byla schopna splácet hypotéku

Pokročilé typové úlohy a scénáře 2006 UOMO 71

Pracovní list 1 Peněžní trh:

DUM 06 téma: Tvorba makra pomocí VBA

C++ přetěžování funkcí a operátorů. Jan Hnilica Počítačové modelování 19

CVIČENÍ ZE ZÁKLADŮ FINANCÍ

Výčtový typ strana 67

CZ.1.07/1.5.00/ Inovace a individualizace výuky VY_62_INOVACE_ZEL16. BEZPEČNOSTNĚ PRÁVNÍ AKADEMIE BRNO, s.r.o.

FINANČNÍ MATEMATIKA. Ing. Oldřich Šoba, Ph.D. Rozvrh. Soukromá vysoká škola ekonomická Znojmo ZS 2009/2010

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

Smlouva o běžném účtu

K n = lim K 0.(1 + i/m) m.n. K n = K 0.e i.n. Stav kapitálu při spojitém úročení:

Zásady standardu finanční gramotnosti

Ceník pro úsek Privátní bankovnictví - depozitní produkty a služby Právnické osoby

UČEBNÍ OSNOVA. Učební osnova předmětu. Ekonomika. Obor středního vzdělávání H/01 Opravář zemědělských strojů

Quo vadis programování? Automatizace vyhodnocování studentských úloh

Ceník pro úsek Osobní bankovnictví Fyzické osoby občané

1 Cash Flow. Zdroj: Vlastní. Obr. č. 1 Tok peněžních prostředků

VÍŠ, CO JE TO BANKA?

Změna zákona o rozpočtových pravidlech. Nové služby ČSOB pro municipality v r

INSTRUKCE. x = se rovná:

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

Transkript:

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

Osnova přednášky Co je lepší? Funkce nebo objekty? Může být třída zároveň objektem? Příklad.

Funkce nebo objekty?

Funkce x objekty Je lepší založit strukturu programu na funkcích nebo datech? Na návrh systému můžeme nahlížet dvěma způsoby: Jako na sadu funkci (odpovídá na otázku, co systém bude dělat). Jako na sadu objektů, které spolupracují (odpovídá na otázku, kdo bude funkčnost zajišťovat).

Problémy Rozšiřitelnost Opakovaná použitelnost Kombinovatelnost

Příklad zadání Mějme malou banku s omezeným počtem klientů a účtů. V bance mohou klienti a účty přibývat. Každý účet má jednoho vlastníka a může mít jednoho partnera, oba jsou klienti banky a mají jméno a kód. Na účty lze vkládat a vybírat z nich, lze zjistit stav na účtu. Pokud není na účtu dostatek peněz, nelze vybrat. Vklady na účtech jsou úročeny, a to buď základní nebo speciální úrokovou sazbou. Jednou za čas banka všem účtům připíše úrok odpovídající úrokové sazbě. Účet resp. klienta je možno v bance vyhledat podle čísla resp. kódu.

Funkce nebo objekty?

Shora dolů nebo naopak?

Proč objekty?

Třídy jako objekty? Proč?

Třída jako objekt Objektově orientovaný přístup obecně vychází z předpokladu, že všechno je objekt. Může být i třída objektem? A za jakých podmínek? Objekty mají svůj stav a chování.

Stav a chování třídy Stav je reprezentován daty. Chování je reprezentováno metodami. Musí být splněno zapouzdření a skrývání informace. Třídě se musí dát zaslat zpráva (zavolat její metodu).

Příklad

Deklarace a definice

Použití

Jak to je Data a metody deklarovaná jako static patří třídě. Přístup k nim mají i objekty (instance) třídy. Je potřeba rozlišovat mezi třídními a instančními proměnnými a metodami.

Vhodné konvence V kontextu třídy se při přístupu k datům nebo metodám nemusí uvádět adresát zprávy. Pro zabránění nedorozumění je dobré: pro přístup k instančním datům/metodám používat formu OBJECT_NAME->METHOD_NAME Pro přístup k třídním datům/metodám používat formu CLASS_NAME::METHOD_NAME

Adresát zprávy Adresátem zprávy je tedy buď objekt (instance) této třídy v případě instanční proměnné nebo metody sama třída v případě třídní, a tedy static, proměnné nebo metody

Kde je rozdíl?

Třída bez objektů

Konstruktor? Destruktor? Třída existuje po celou dobu běhu programu. Pokud má třída třídní (static) proměnné, pak je musíme inicializovat zvlášť Konstruktor ani destruktor pro třídu jako objekt neexistuje.

Kdo o kom ví? Prostřednictvím konstruktoru třídy objekty (instance) vytvoříme, ale třída o nich nic neví. Z třídní metody nelze přistupovat k členským položkám objektu. Objekty (instance) třídy mají přístup k členským (static) položkám třídy (při použití nemusí být rozpoznatelné, s jakou položkou pracujeme).

Co je správné volání?

Kdy použít třídu jako objekt? Vytvoření knihovny funkcí (např. matematika). Potřebujeme, aby objekty (instance) sdílely společná data. Např. evidence počtu objektů (instancí) třídy.

Upravte třídu pro počítání objektů

Deklarace a definice

Úkoly na cvičení Implementujte příklady z přednášky a doplňte do třídy Account počítání existujících objektů. Navrhněte a implementujte další příklady členských položek tříd. Například stejnou úrokovou sazbu pro všechny účty, kterým nebyla sazba zadána v konstruktoru a kterou lze prostřednictvím metody třídy změnit.

Otázky Jaký je rozdíl mezi funkční a objektovou dekompozicí programu? Proč preferujeme objektovou dekompozici a jaké jsou hlavní problémy funkční dekompozice? Za jakých podmínek můžeme považovat třídu za objekt a jak to implementovat v C++? Vysvětlete rozdíl mezi členskými položkami třídy a instance a popište jejich dostupnost. Jak můžeme v C++ důsledně odlišovat práci s členskými položkami tříd a instancí? Potřebuje třída v roli objektu konstruktor resp. destruktor a proč?

Ke studiu Bertrand Meyer. Object-Oriented Software Construction. Prentice Hall 1997. [101-120]