OOP OOP (Object Oriented Programming)

Slides:



Advertisements
Podobné prezentace
A1PRG - Programování – Seminář Ing. Michal Typová konverze, oblast platnosti, paměťové třídy 9 Verze
Advertisements

(instance konkrétní třídy)
CHARAKTERISTIKY SPALOVACÍCH MOTORU Charakteristika spalovacího motoru je grafické znázornění vzájemné závislosti vybraných provozních.
Seminář C++ 5. cvičení Dědičnost Ing. Jan Mikulka.
Programování funkcí v Excelu
Vstupy a výstupy v JavaScriptu Vstup: použitím metody prompt objektu window čtením hodnot z položek formuláře Výstup : použitím metody alert objektu window.
25/08/20141 Typ struktura (1) Datový typ struktura ( struct ) je agrego- vaný heterogenní datový typ Jedná se o skupinu několika proměnných, které mohou.
Pole, ukazatele a odkazy
ÚVOD DO CPP 7 Dědičnost - pokračování
BLIŽŠÍ POHLED NA TŘÍDY, DĚDIČNOST - úvod
Algoritmizace a programování Datové typy v Delphi - 05
PJV151 Vnořené a vnitřní členy mohou být členy tříd a interfejsů. Je-li X obalem Y a Y je obalem Z, pak Z získá jméno X$Y$Z - kompilací vzniknou classy.
C# pro začátečníky Mgr. Jaromír Osčádal
Programování v C++ Cvičení.
Principy překladačů Běhová podpora Jakub Yaghob. Běhová podpora Statická podpora jazyka Překladač Interface na knihovny Hlavičkové soubory Dynamická podpora.
Druhé cvičení Vytváření identifikátorů Datové typy
Čtvrté cvičení Objektové programování Objektový model v Javě
J a v a Začínáme programovat Lucie Žoltá metody, objekty, konstruktor.
J a v a Začínáme programovat Lucie Žoltá. Odkazy - oficiální stránky (překladače, help, metody, vývojové prostředí NetBeans,...)
C# - datové typy Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
Seminář C++ 9. cvičení Šablony Ing. Jan Mikulka. Šablony ► template – vzory, podle kterých může překladač tvořit skupiny podobných tříd nebo funkcí, které.
Vyučovací hodina 1 vyučovací hodina: Opakování z minulé hodiny 5 min Nová látka 20 min Procvičení nové látky 15 min Shrnutí 5 min 2 vyučovací hodiny: Opakování.
Deklarace Radim Štefan. 2 Použité zkratky BP – Borland Pascal De – Delphi.
PB161 Jmenné prostory, I/O proudy PB161 | Jmenné prostory, IO proudy PB161 – Programování v jazyce C++ Objektově Orientované Programování.
Třída jako zdroj funkcionality
Seminář C cvičení STL, Trolltech Ing. Jan Mikulka.
C# - Exceptions (výjimky)
Objektové programování
C# - funkce a procedury Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
08/04/20151 Delegáty (1) Delegát (delegate) je datový typ, který definuje signaturu metody Delegáty bývají rovněž označovány jako typo- vě bezpečné ukazatele.
Alg91 Textové soubory Na rozdíl od jiných typů souborů jsou textové soubory určené pro gramotné lidské oko. Textový soubor je posloupnost znaků členěná.
Počítače a programování 1
Cvičení.
VISUAL BASIC PRALG.
KIV/PPA1 cvičení 8 Cvičící: Pavel Bžoch. Osnova cvičení Objekty v Javě Třída Konstruktor Metody Metody a proměnné třídy x instance Program sestávající.
OSNOVA: a) Úvod do OOPb) Třídy bez metod c) Třídy s metodamid) Konstruktory a destruktory e) Metody constf) Knihovní třídy g) Třídy ve tříděh) Přetížení.
Algoritmizace a programování Objektově orientované programování - 16 Mgr. Josef Nožička IKT Algoritmizace a programování
C# - předávání parametrů Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
IB111 Programování a algoritmizace
Návrh a tvorba WWW Přednáška 5 Úvod do jazyka PHP.
Dědičnost - inheritance dědičnost je jednou z forem znovupoužitelnosti dědičnost je jednou z forem znovupoužitelnosti B A Třída A je předkem třídy B Třída.
7. Typ soubor Souborem dat běžně rozumíme uspořádanou množinu dat, uloženou mimo operační paměť počítače (na disku). Pascalský soubor je abstrakcí skutečného.
13/04/20151 Indexery (1) Členy třídy (struktury) umožňující třídě (struk- tuře) používat hranaté závorky a pracovat s ní podobně jako s polem (používat.
13/04/20151 Datový typ třída – class (1) Datový typ definovaný uživatelem Poskytuje mechanismus pro modelování entit, s nimiž manipulují aplikace Charakterizuje.
Principy OOP Objektově orientované programování vychá-zí ze třech základních principů (rysů): zapouzdření (encapsulation) dědičnost (inheritance) polymorfismus.
Počítače a programování 1 7.přednáška. Základy Pole ve třídách a metodách Pole Arrays.
Pokročilé programování v C++ (část B)
Vícerozměrná pole (1) Jazyk C povoluje, aby pole mělo více rozměrů (dimenzí) než jeden Z vícerozměrných polí bývá nejčastěji použí-váno pole dvourozměrné.
Programovací jazyk C# 2. část. Datové typy C# rozeznává dva druhy datových typů, hodnotové a referenční. Hodnotové datové typy Proměnné hodnotového datového.
Praha & EU: Investujeme do vaší budoucnosti Evropský sociální fond Gymnázium, Praha 10, Voděradská 2 Projekt OBZORY Datové typy a operátory Základní programové.
NÁZEV ŠKOLY: Střední odborná škola Net Office, spol. s r.o., Orlová-Lutyně AUTOR: Ing. Adéla Tomalová NÁZEV: Podpora výuky v technických oborech TEMA:
NÁZEV ŠKOLY: S0Š Net Office, spol. s r.o., Orlová-Lutyně AUTOR: Ing. Adéla Tomalová NÁZEV: Podpora výuky v technických oborech TEMA: Objektově orientované.
Programování ÚVOD, PROMĚNNÉ, OPERÁTORY A PODMÍNĚNÝ PŘÍKAZ ERIK KRÁL.
Programování OPERÁTOR SIZEOF, FUNKCE, POLE JAKO PARAMETRY FUNKCÍ ERIK KRÁL.
Programování v jazyce C++ Speciality jazyka C++, úvod do OOP.
Typ struktura (1) Datový typ struktura (struct) je agrego-vaný heterogenní datový typ Jedná se o skupinu několika proměnných, které mohou mít různé datové.
Úvod do C# - OOP Jaroslav BURDYS 4IT.
NÁZEV ŠKOLY: S0Š Net Office, spol. s r.o., Orlová-Lutyně
PV178 – Úvod do vývoje v C#/.NET
OOP OOP (Object Oriented Programming)
Vícerozměrná pole (1) Jazyk C povoluje, aby pole mělo více rozměrů (dimenzí) než jeden Z vícerozměrných polí bývá nejčastěji použí-váno pole dvourozměrné.
Výukový materiál zpracován v rámci projektu
Programovací jazyk C Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Jitka Vlčková. Dostupné z Metodického portálu ISSN.
Rysy MS Windows Možnost multitaskingu a multithreadingu
Návrhový vzor Flyweight
Funkce výstupu (2) Funkce printf: deklarována v: stdio.h
Oblast platnosti identifikátoru (1)
Programování v prostředí Borland Delphi
C# přehled vlastností.
NÁZEV ŠKOLY: S0Š Net Office, spol. s r.o., Orlová-Lutyně
Transkript prezentace:

OOP OOP (Object Oriented Programming) je založeno na myšlence, že program provádí jisté akce nad jistými objekty, které reprezentují data dovoluje vytváření dále rozšiřitelných (otevře-ných) systémů Pro umožnění objektově orientovaného návr-hu poskytují dnešní programovací jazyky (vý-vojová prostředí) speciální datové typy: objektový typ (object): Turbo Pascal 5.0 a vyšší třída (class): ObjectPascal (Delphi), C++, C#, Java 05/04/2017

Programovací jazyk C# Vyvinutý v rámci platformy MS .NET Jedná se o objektově orientovaný jazyk Založen na jazycích C++ a Java Syntaxe C# je podobná syntaxi jazyka C Lze jej využít k tvorbě např.: desktopových aplikací webových aplikací, webových služeb a stránek programů pro mobilní zařízení (PDA, mobilní telefony) databázových programů 05/04/2017

Program v jazyce C# (1) Tvořen třídami a jejich členy (members) Třídy a další datové typy jsou organizovány ve jmenných prostorech (namespace) a mo-hou být vnořovány do jiných tříd Vstupním bodem každého programu v C# je metoda (funkce obsažená v typu třída) Main: může být v programu pouze jedna jedná se o statickou metodu návratovým typem může být void nebo int může přijímat parametry z příkazové řádky OS 05/04/2017

Program v jazyce C# (2) Metoda Main může mít jednu z následujících signatur: static void Main() static void Main(string[] args) static int Main() static int Main(string[] args) Poznámka: jazyk C# podobně jako jazyk C/C++ rozlišuje velká a malá písmena (jazyk case sensitive) 05/04/2017

Datový typ třída – class (1) Datový typ definovaný uživatelem Poskytuje mechanismus pro modelování entit, s nimiž manipulují aplikace Charakterizuje vlastnosti a chování objektů Je možné ji definovat pomocí klíčového slova class Může obsahovat následující členy: konstanty (constants) datové položky (fields) 05/04/2017

Datový typ třída – class (2) metody (methods) vlastnosti (properties) události (events) operátory (operators) indexery (indexers) konstruktory instance (instance constructors) destruktory (destructors) statické konstruktory (static constructors) vnořené deklarace typů (nested type declarations) 05/04/2017

Datový typ třída – class (3) Každý člen uvnitř třídy má svoji tzv. přístup-nost (accessibility) určující, jakým způsobem je nebo není přístupný (viditelný) zvenčí Nejčastěji se používá přístupnost: public (veřejná): přístup k danému členu není nijak omezován člen je přístupný uvnitř i vně dané třídy private (privátní, soukromá): daný člen je přístupný pouze uvnitř třídy, v níž je defi-nován jedná se o implicitní přístupnost k členu 05/04/2017

Datový typ třída – class (4) Datové položky (fields): reprezentují proměnné spojené s objektem nebo s třídou slouží k uchování informací Metody (methods): funkce definované uvnitř třídy implementují výpočet (akci), který může být pro-veden objektem nebo třídou obsahují: seznam formálních parametrů (může být i prázdný) návratovou hodnotu (je-li návratovým typem metody typ void, pak metoda nevrací žádnou hodnotu) 05/04/2017

Datový typ třída – class (5) Konstruktory instancí (instance constructors): speciální typy metod slouží k vytvoření instance třídy (objektu) mají stejný název jako třída mohou obsahovat formální parametry nemohou vracet žádnou hodnotu (ani void)  v jejich hlavičce není uvedený žádný návratový typ jedna třída může obsahovat více konstruktorů (pře-těžování) není-li definován žádný konstruktor, pak překladač automaticky vygeneruje konstruktor implicitní 05/04/2017

Datový typ třída – class (6) Příklad třídy: class Ctverec { private int strana; public Ctverec(int pocatecniStrana) { strana = pocatecniStrana; } public int UrciObsah() { return strana*strana; } } 05/04/2017

Datový typ třída – class (7) Na základě datového typu třída lze vytvořit její instanci Instanci typu třída označujeme jako objekt Objekt je vytvářen pomocí klíčového slova new (způsobí vyvolání konstruktoru) Příklad: Ctverec c; c = new Ctverec(5); nebo Ctverec c = new Ctverec(5); 05/04/2017

Datový typ třída – class (8) Proměnná c bude obsahovat odkaz, kde je v paměti uložený objekt (třída je referenční datový typ) Poznámka: každá instance třídy je objektem, který zabírá svůj vlastní prostor v paměti a běží nezávisle na všech ostatních instancích Pro zpřístupnění členů třídy se používá tečko-vá notace: identifikátor proměnné typu třída symbol tečka identifikátor označující člen třídy 05/04/2017

Datový typ třída – class (9) Příklad: int s; Ctverec c = new Ctverec(5); s = c.UrciObsah(); Metody i datové položky mohou být deklaro-vány jako statické (static): zpřístupňovány prostřednictvím třídy před jejich zpřístupněním není nutné vytvářet in-stanci třídy (objekt) nezávislé na konkrétní instanci třídy 05/04/2017

Datový typ třída – class (10) Poznámka: metoda Main musí být statická, protože před je-jím voláním se nevytváří instance třídy, v níž je definována Statické třídy: deklarovány s použitím klíčového slova static může obsahovat pouze statické členy nemůže obsahovat žádná data ani metody instancí příklad: třída Math, třída Convert 05/04/2017

Jmenný prostor (1) Jmenný prostor (namespace) představuje po-jmenovaný kontejner pro další identifikátory (např. třídy) Používán k seskupení a k rozlišení identifiká-torů Různé jmenné prostory mohou obsahovat stejné identifikátory Dva identifikátory se stejným názvem nelze zaměnit, pokud se nacházejí v různých jmen-ných prostorech 05/04/2017

Jmenný prostor (2) V rámci jednoho souboru může být defino-váno více jmenných prostorů Více souborů může zahrnovat jeden jmenný prostor Jmenné prostory mohou být do sebe vzájemně vnořovány Jmenný soubor je možné definovat pomocí klíčového slova namespace Každý jmenný prostor má přístup typu public (nelze změnit) 05/04/2017

Jmenný prostor (3) Příklad: Soubor1.cs Soubor2.cs public class ClassA { } namespace NamespaceY { public class ClassB } public class ClassC { } namespace NamespaceY { public class ClassA } namespace NamespaceZ public class ClassB 05/04/2017

Jmenný prostor (4) Je-li identifikátor deklarovaný (definovaný) bez specifikovaného jmenného prostoru, pak jej automaticky překladač zařadí do globál-ního jmenného prostoru (global namespace) Identifikátor lze zpřístupnit pomocí označení jmenného prostoru (jmenných prostorů), např.: System.Console.WriteLine(…); kde: System – jmenný prostor Console – třída WriteLine – metoda 05/04/2017

Jmenný prostor (5) Pomocí klíčového slova using je možné da-ný jmenný prostor zařadit do aktuálního obo-ru platnosti Pro zpřístupnění identifikátoru pak není nutné uvádět označení jmenného prostoru Příklad: using System; Console.WriteLine(…); 05/04/2017

Přetěžování metod (1) Přetěžování metod – overloading: dovoluje deklarovat více než jedenu metodu se stejným oborem platnosti a se stejným jménem jedna metoda se tak může vyskytovat ve více variantách přetěžované metody musí mít rozdílný seznam formálních parametrů, tj. musí se lišit počtem formálních parametrů nebo jejich typy na základě použitých skutečných parametrů (v době volání) je rozhodnuto, která varianta bude použita 05/04/2017

Přetěžování metod (2) Užitečné zejména v situaci, kdy je nutné pro-vádět stejnou operaci na různých datových typech Příklad: metoda WriteLine třídy Console může být použita 19 různými způsoby (je definována v 19 různých variantách) každá z nich má odlišnou sadu parametrů např.: nemá žádný parametr  vypíše pouze prázdný řádek jako parametr má řetězec, který vypíše na standardní výstup jako parametr přebírá desetinné (celé) číslo a vypíše jej na stan-dardní výstup 05/04/2017

Předdefinované datové typy (1) Jazyk C# poskytuje sadu předdefinovaných datových typů, které se nachází ve jmenném prostoru System Jednotlivé datové typy (vyjma typu string a object) jsou synonymy struktur, které obsahují metody  tyto metody lze pomocí tečkové notace volat Všechny tyto struktury poskytují např. meto-du ToString, která umožňuje převést číselnou hodnotu na její textové vyjádření 05/04/2017

Předdefinované datové typy (2) Popis Velikost Typový ekvivalent sbyte celočíselný typ se znaménkem 8 b System.SByte short celočíselný typ 16 b System.Int16 int celočíselný typ 32 b System.Int32 long celočíselný typ 64 b System.Int64 byte celočíselný typ bez znaménka 8 b System.Byte ushort celočíselný typ 16 b System.UInt16 uint celočíselný typ 32 b System.UInt32 ulong celočíselný typ 64 b System.UInt64 float reálný typ (s jednoduchou přesností) 32 b System.Single double reálný typ (s dvojitou přesností) 64 b System.Double 05/04/2017

Předdefinované datové typy (3) Popis Velikost Typový ekvivalent bool logický (booleovský) typ 8 b System.Boolean char znakový typ (Unicode) 16 b System.Char decimal peněžní hodnoty (28 platných číslic) 128 b System.Decimal object kořen objektové hierarchie System.Object string posloupnost znaků (řetězec) 16 b / znak System.String Poznámka: datové typy string a object jsou popsány jako třídy (nikoliv jako struktury) 05/04/2017

Hodnotové a referenční typy (1) Každý typ v jazyce C# je přímo nebo nepří-mo odvozen od třídy object Hodnotové typy (value types): jejich proměnné přímo nesou (obsahují) svá data každá proměnná má svou vlastní kopii dat změna hodnoty jedné proměnné neovlivňuje hodnotu proměnné jiné jsou ukládány na zásobníku patří mezi ně většina předdefinovaných typů (vyj-ma object a string) a výčtové typy pro vytvoření vlastních hodnotových typů slouží struktury 05/04/2017

Hodnotové a referenční typy (2) Referenční (odkazové) typy (reference types): jejich proměnné ukládají odkaz (referenci) na data (objekty) pokud dojde k přiřazení proměnné, tak dojde ke zkopírování odkazu je možné, aby dvě proměnné obsahovaly odkaz na stejný objekt operace nad jednou proměnnou může ovlivnit objekt, na nějž se odkazuje proměnná jiná v paměti jsou ukládány na spravované haldě (managed heap) 05/04/2017

Předávání parametrů metodám (1) Parametry předávané hodnotou: deklarovány bez použití modifikátoru ref nebo out u hodnotových typů: dochází k předání kopie dat ze skutečného parametru do parametru formálního změny provedené uvnitř metody nad formálním para-metrem nijak neovlivňují hodnotu parametru skuteč-ného u referenčních typů: dochází pouze k předání odkazu jestliže metoda hodnotu přijatého objektu změní, pak se změna projeví i v původním objektu skutečný parametr musí být v době volání inicia-lizovaný, tj. musí mít přiřazenou hodnotu 05/04/2017

Předávání parametrů metodám (2) Parametry předávané odkazem: před formálním i skutečným parametrem musí být uveden modifikátor ref nedochází k vytvoření nového paměťového místa pro formální parametr formální parametr reprezentuje stejné paměťové místo, které náleží parametru skutečnému všechny změny provedené nad formálním para-metrem se promítají do parametru skutečného skutečný parametr musí být v době volání inicia-lizovaný, tj. musí mít přiřazenou hodnotu 05/04/2017

Předávání parametrů metodám (3) Parametry výstupní: před formálním i skutečným parametrem musí být uveden modifikátor out podobné chování jako u parametrů předávaných odkazem všechny změny provedené nad formálním para-metrem se promítají do parametru skutečného skutečný parametr nemusí být v době volání ini-cializovaný, tj. nemusí mít přiřazenou hodnotu v průběhu metody mu musí být přiřazena hodnota 05/04/2017