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

Podobné dokumenty
Programování 2 (NMIN102) Soubory. RNDr. Michal Žemlička, Ph.D.

Objektové programování

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

7. OBJEKTOVĚ ORIENTOVANÉ PROGRAMOVÁNÍ

Anotace. Jednotky (tvorba a využití), struktury (typ record),

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.

Inovace a zkvalitnění výuky prostřednictvím ICT Programování se strukturovanými údaji Programové jednotky

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

ALGORITMIZACE A PROGRAMOVÁNÍ

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

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Anotace. Objekt self, Zapouzdření, polymorfismus,

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

Delphi - objektově orientované

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

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

Virtuální metody - polymorfizmus

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

Více o konstruktorech a destruktorech

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

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

Programování v jazyce C a C++

type Obdelnik = array [1..3, 1..4] of integer; var M: Obdelnik;

Sdílení dat mezi podprogramy

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

Programování v jazyce C a C++

Syntaktická analýza. Implementace LL(1) překladů. Šárka Vavrečková. Ústav informatiky, FPF SU Opava

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

Programovací jazyk Pascal

Funkční objekty v C++.

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

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

PODPROGRAMY PROCEDURY A FUNKCE

5a. Makra Visual Basic pro Microsoft Escel. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina

Dědění, polymorfismus

Základy objektové orientace I. Únor 2010

TEDrv OVLADAČE KLÁVESNICE, MYŠI A DISPLEJE EMULÁTORU TERMINÁLU PRO MS WINDOWS. Příručka uživatele a programátora

dovolují dělení velkých úloh na menší = dekompozice

CZ.1.07/1.5.00/

20. Projekt Domácí mediotéka

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

PREPROCESOR POKRAČOVÁNÍ

Zpracování deklarací a přidělování paměti

Programovací jazyk. - norma PASCAL (1974) - implementace Turbo Pascal, Borland Pascal FreePascal Object Pascal (Delphi)

Úvod do programování

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

Object Pascal je přísně typový procedurální jazyk, který umožňuje jak strukturované, tak objektově orientované programování.

4a. Makra Visual Basic pro Microsoft Excel Cyklické odkazy a iterace Makra funkce a metody

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

Dynamické datové typy a struktury

Úvod. Programovací paradigmata

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

Programujeme v softwaru Statistica

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

Datové typy a struktury

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

Programování II. Polymorfismus

Objektově orientované technologie Diagram komponent Implementační náhled (Diagram rozmístění) Pavel Děrgel, Daniela Szturcová

Databázové systémy. Ing. Radek Holý

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016

Základy programování. Úloha: Eratosthenovo síto. Autor: Josef Hrabal Číslo: HRA0031 Datum: Předmět: ZAP

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

Program a životní cyklus programu

Teoretické minimum z PJV

Aplikace. vliv na to, jakou mají strukturu i na to, jak pracné je je vyvinout. Bylo vypozorováno, že aplikace je možné rozdělit do skupin

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

Základy programování (IZP)

IoC/DI. Tomáš Herceg Microsoft MVP (ASP.NET)

Funkcionální programování. Kristýna Kaslová

Objektově orientovaný přístup

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh Třídění dat. Ing. Hodál Jaroslav, Ph.D. VY_32_INOVACE_26 04

Konstruktory a destruktory

Pokročilé schopnosti OOP

Implementace LL(1) překladů

Sada 1 - Základy programování

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

12. Globální metody MI-PAA

Struktura programu v době běhu

uaterm JEDNOTKA PRO PRÁCI S ABSTRAKTNÍM TERMINÁLEM Příručka uživatele a programátora

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

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

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

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

Programování v C++ VI

Programové konvence, dokumentace a ladění. Programování II 2. přednáška Alena Buchalcevová

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

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

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

V praxi je běžné, že se ovlivňuje více prvků navzájem. Tady už si s jednou globální proměnnou nevystačíme.

Obsah. Zpracoval:

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

Modely datové. Další úrovní je logická úroveň Databázové modely Relační, Síťový, Hierarchický. Na fyzické úrovni se jedná o množinu souborů.

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

Komunikace modulu s procesorem SPI protokol

Kapitola 2: Analýza lineárních obvodů metodou admitanční matice

Programování II. Modularita 2017/18

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

konstruktory a destruktory (o)

Transkript:

Unity a Objekty Programování 2 (NMIN102) RNDr. Michal Žemlička, Ph.D.

Větší programy Časté problémy: Ve více programech by se nám hodilo využít stejné řešení nějakého podproblému dalo by se vyřešit překopírováním příslušné části zdrojového kódu, ale: jak by se opravovaly chyby (pro každou kopii zvlášt )? to bychom si nechali narůst zdroják nad to, co jsme schopni vnímat?

co když to, co potřebujeme z jednoho místa, používá stejné identifikátory, jako to, co potřebujeme odjinud? kopírováním bychom si spíše ubĺıžili Hodilo by se nám hotové a odladěné části nějak zabalit

Moduly (unity) Je možné uchovávat logické celky odděleně po modulech Moduly dovolují přistupovat k dané problematice jako k černé skříňce stačí znát jen rozhraní (+ případná omezení) Tyto části je možné samostatně překládat Mají oddělené rozhraní a implementaci

Moduly Syntaxe (PASCAL) UNIT název; jméno modulu a jméno souboru by si měly odpovídat (UNIT vektory; vektory.pas) INTERFACE uvozuje část popisující rozhraní modulu (to, co by měli vidět ti, co s tím budou chtít pracovat) IMPLEMENTATION uvozuje část popisující implementaci modulu (aneb jak to funguje to zas nebývá třeba číst) Inicializace modulu kód mezi BEGIN a END se provádí pro každé USES daného modulu v jiném modulu nebo v hlavním programu

Moduly (unity) Modul může být používán dlouho a z mnoha programů Rozsáhlejší program může být (měl by a bývá) dekomponován do více modulů Členění na moduly by mělo pokrývat skupiny problémů nebo uzavřené implmentační celky Vystavené podprogramy by měly testovat validitu parametrů a měly by mít ošetřené chyby

Moduly příklady Do samostatných modulů můžeme dát například: implementaci nějaké složitější datové struktury (či skupiny struktur); logicky uzavřenou část aplikace (rozhraní, výpočet,...) forward: implementaci tříd či skupin tříd, co k sobě patří podporu specifických funkcí (něco jako ovladače) pro určitou skupinu zařízení

Moduly doporučení Názvy (alespoň identifikátory rozhraní) by měly svým názvem jasně říkat, co reprezentují Co nezvládneme názvem, doplníme komentářem (je to součást dokumentace) Modul je logicky uzavřená část je dobré jej zdokumentovat (třeba jej bude třeba někdy opravovat či upravovat) Je bezpečnější globální proměnné modulu nevystavovat uživateli (má-li mít možnost je měnit, tak raději

nějakými podprogramy, aybchom zajistili, že je nastaví rozumně )

Objekty

Objekty Do samostatných modulů můžeme dát například: propojení dat a podprogramů s nimi manipulujících do těsnějších celků umožňují obecný náhled na skupinu příbuzných řešení umožňují doplňování či modifikování stávajícího kódu o/pro nové chování jeden z výrazných směrů vývoje softwaru

Objekty syntaxe (zjednodušeně) jmeno typu = OBJECT promenna : typ; CONSTRUCTOR jmeno; DESTRUCTOR jmeno; PROCEDURE jmeno(parametry); FUNCTION jmeno(parametry):typ; END;

Objekty části atributy lokální proměnné objektu (něco jako RECORD část) metody specifické podprogramy pracující s daným objektem

Objekty povinné části konstruktor metoda, co se provádí při vytváření objektu destruktor metoda, co se provádí při zániku objektu Pomocné struktury je třeba inicializovat a ukĺızet

Objekty nepovinné části atributy lokální proměnné objektu uchováváme si v nich stav objektu a potřebné údaje metody podprogramy pro manipulaci s objektem není dobré nechávat uživatele (tedy ani nás samotné), aby se hrabal v atributech; mohl by napáchat dost škody.

Objekty implementace každou metodu (až na později řečené vyjímky) je třeba implementovat (hlavička, kde jménem podporgramu je jmeno tridy.jmeno metody) + samozřejmě vhodné tělo

Objekty reprezentace množiny množiny můžeme v počítači reprezentovat mnoha různými způsoby; reprezentace se liší mj. tím: jaké operace dokáží efektivně podporovat jak velké domény mohou podporovat jak náročné jsou jednotlivé operace rádi bychom, abychom mohli používat množiny a nemuseli řešit, jak konkrétně jsou realizovány (např. když se zjistí, že by jiná implementace byla vhodnější, taky abychom mohli změnu provést co nejsnáze)

Objekty reprezentace množiny (2) Začneme s jednoduchou obecnou reprezantací množiny (aby se to vešlo na slajd, tak si ukážeme jen podporu pár operací). Následně si ukážeme dvě různé implementace množiny, které z této základní reprezentace vycházejí.

Objekty reprezentace množiny (3) TYPE prvek = Integer; mnozina = OBJECT CONSTRUCTOR PrazdnaMnozina; DESTRUCTOR Konec; FUNCTION jeprazdna:boolean; virtual; PROCEDURE pridejprvek(x:prvek); virtual; FUNCTION jeprvkem(x:prvek):boolean; virtual; FUNCTION jestejnajako(m:mnozina):boolean; FUNCTION jepodmnozinou(m:mnozina):boolean; END;

Objekty reprezentace množiny (4) Popsali jsme si, jak má vypadat typ, který bude reprezenovat objekty typu množna (třidu množina) Ke každé metodě (včetně konstruktorů a destruktoru) je třeba ukázat, jak má být implementována.

Objekty reprezentace množiny (5) CONSTRUCTOR mnozina.prazdnamnozina; BEGIN END; DESTRUCTOR mnozina.konec; BEGIN END; FUNCTION mnozina.jeprazdna:boolean; BEGIN jeprazdna:=false; END;

Objekty reprezentace množiny (6) Množinu můžeme reprezentovat například seznamem či binárním stromem

Objekty reprezentace množiny (7) Zavedeme si pomocné typy... seznam = ^uzelseznamu; uzelseznamu = RECORD next : seznam; data : prvek; END;

Objekty reprezentace množiny (8)... i si odvodíme množinu reprezentovanou seznamem z množiny mnozinaseznamem = OBJECT(mnozina) zacatek : seznam; CONSTRUCTOR PrazdnaMnozina; DESTRUCTOR Konec; FUNCTION jeprazdna:boolean; virtual; PROCEDURE pridejprvek(x:prvek); virtual; FUNCTION jeprvkem(x:prvek):boolean; virtual; FUNCTION jestejnajako(m:mnozina):boolean; virtual; FUNCTION jepodmnozinou(m:mnozina):boolean; virtual; END;

Objekty poznámky konstruktory a destruktory je třeba implementovat vždy, i když se jmenují stejně, jako u třídy, od níž dědíme ostatní metody, jejichž implmentace se od implementace přímého předka neliší, nemusíme řešit znovu je možné se v implementaci metody odkázat na implementaci jiné své metody či metody předka