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

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

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

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

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

Konstruktory a destruktory

Mělká a hluboká kopie

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

Více o konstruktorech a destruktorech

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

Programování II. Polymorfismus

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

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.

Spojová implementace lineárních datových struktur

Programování II. Modularita 2017/18

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

Dědění, polymorfismus

Základy objektové orientace I. Únor 2010

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

1. Programování proti rozhraní

Virtuální metody - polymorfizmus

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

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

Objektové programování

Programování v jazyce C a C++

1. Téma 03 - Rozhodování

Seminář Java II p.1/43

16. února 2015, Brno Připravil: David Procházka. Konstruktory a destruktory

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

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

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

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

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

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

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

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

PREPROCESOR POKRAČOVÁNÍ

Programování v C++ VI

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

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

Implementace seznamů do prostředí DELPHI pomocí lineárního seznamu

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

Programování v jazyce C a C++

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

Správné vytvoření a otevření textového souboru pro čtení a zápis představuje

Jazyk C++ I. Šablony 2

7. OBJEKTOVĚ ORIENTOVANÉ PROGRAMOVÁNÍ

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

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech

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

konstruktory a destruktory (o)

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

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

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.

Jazyk C# (seminář 6)

1. Změna sazby DPH od

Paradigmata programování 2

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

PROGRAMOVÁNÍ V C++ CVIČENÍ

Pokročilé programování v jazyce C pro chemiky (C3220) Statické proměnné a metody, šablony v C++

Objektově orientované programování. Úvod

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

Algoritmizace prostorových úloh

Generické programování

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

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

INTERNETOVÉ BANKOVNICTVÍ ARTESA IDEAL

Pole stručný úvod do začátku, podrobně později - zatím statická pole (ne dynamicky) - číslují se od 0

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

Viditelnost (práva přístupu) Tomáš Pitner, upravil Marek Šabo

Principy objektově orientovaného programování

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

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

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

typová konverze typová inference

1. D Y N A M I C K É DAT O V É STRUKTUR Y

Teoretické minimum z PJV

"Václav Klaus". public class Clovek { protected String jmeno; protected int roknarozeni; public Clovek(String j, int rn) {

Kolekce ArrayList. Deklarace proměnných. Import. Vytvoření prázdné kolekce. napsal Pajclín

Algoritmizace a programování

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

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

Druhá skupina zadání projektů do předmětu Algoritmy II, letní semestr 2014/2015

7.5 Diagram tříd pokročilé techniky

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

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

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

Programování II. Návrh programu II

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

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

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

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

1. Dědičnost a polymorfismus

Jazyk C++ II. Šablony a implementace

Jazyk C++ II. STL knihovna kontejnery část 2

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

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

Infrastruktura UML. Modelování struktury v UML. Superstruktura UML. Notace objektů. Diagramy objektů

Funkční objekty v C++.

Úvod do programování - Java. Cvičení č.4

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Transkript:

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

Osnova přednášky Co víme? Objektový návrh programu. Příklad.

Co víme?

Třída Třída je popisem objektů se společnými vlastnostmi. class <jméno> private: <soukromé členské položky> public: <veřejné členské položky> Členskými položkami mohou být proměnné (data) a metody (funkce).

Objekt Objekt je instancí - paměťovou reprezentací třídy. Objekt je reprezentací nějaké entity, která má stav reprezentovaný daty a chování reprezentované metodami.

Konstruktor Konstruktor inicializuje objekty. Nemá návratovou hodnotu. Pokud není deklarován, automaticky se vytvoří (implicitní) konstruktor. Volá se automaticky při statické deklaraci nebo použitím new. Konstruktorů může být více, musí se lišit počtem nebo typem parametrů.

Destruktor Slouží pro dealokaci paměti vytvořené dynamicky. Nemá návratovou hodnotu. Pokud není deklarován, automaticky se vytvoří (implicitní) destruktor. Volá se automaticky použitím delete.

Objektový návrh

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. Lze zjistit, ale nelze měnit: číslo účtu a jeho úrokovou sazbu kód a jméno klienta, vlastníka a partnera účtu.

Třídy 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.

Chová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.

Stav 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.

Třída Client Kód a jméno. Lze se na ně zeptat. Nelze je měnit.

Třída Account Číslo a částka, vlastník a partner, úroková sazba. Lze se na ně zeptat. Číslo, úrokovou sazbu, vlastníka a partnera nelze měnit. Vložit, vybrat, zjistit stav, připsat úrok. Nemusí jít vybrat.

Třída Bank Omezený seznam klientů a účtů. Lze přidat nového klienta a účet. Lze hromadně připsat úrok dle úrokové sazby. Lze vyhledat klienta podle kódu a účet podle čísla.

Příklad

Deklarace

Tři typy metod Konstruktory a destruktor. Konstruktory inicializují stav objektu po jeho vzniku, destruktor uvolňuje dynamicky přidělenou paměť před zánikem objektu. Pokud nejsou uvedeny, vytvoří se tyto metody automaticky (bez algoritmu). Metody poskytující informaci o stavu objektu. Metody buď podávají informaci přímo o hodnotě datové položky objektu nebo poskytují informaci na základě algoritmu. Metody měnící stav objektu. Metody buď přímo změní hodnotu datové položky objektu nebo provedou změnu na základě algoritmu. Metody poskytující informaci o stavu objektu by neměly jeho stav měnit!!!

Objektové kompozice Objekt se může stát součástí jiného objektu a stává se tak jeho datovou položkou. Vznikají tak komponované objekty s přesně definovanými kompetencemi. Ty ovšem mohou realizovat prostřednictvím interakce objektů, ze kterých jsou komponovány. Například účet má klienty v rolích vlastníka a partnera resp. banka má klienty a účty. Jeden a tentýž objekt může být součástí více kompozic. Například jeden klient může být součástí jak účtu, tak banky.

Úkoly na cvičení Implementujte příklad z přednášky a navrhněte kód, který bude používat všechny třídy. Vytvořte desítky klientů a účtů v bance a nasimulujte některé běžné úkony prováděné v bance. Navrhněte a implementujte podobnou úlohu, jako například lékařskou ordinaci, malou školu apod.

Kontrolní otázky Vysvětlete, jak vznikají objekty třídy, pojem konstruktor a principy práce s ním v C++. Vysvětlete, jak zanikají objekty třídy, pojem destruktor a principy práce s ním v C++. Vysvětlete rozdíl mezi statickou a dynamickou deklarací objektů v C++. Jak se dá postupovat, pokud chceme v zadání programu nalézt třídy, jejich metody a datové členy? Kdy a proč potřebujeme použit více konstruktorů jedné třídy? Kdy potřebujeme deklarovat a definovat destruktor? Co jsou výchozí konstruktory a destruktory a k čemu je potřebujeme? Jaké typy metod obvykle musíme deklarovat a definovat? Co jsou objektové kompozice a k čemu jsou dobré?