Osnova přednášky. Programové prostředky řízení Úvod do C# II. Přístup ke členům. Členy (Members)

Save this PDF as:
 WORD  PNG  TXT  JPG

Rozměr: px
Začít zobrazení ze stránky:

Download "Osnova přednášky. Programové prostředky řízení Úvod do C# II. Přístup ke členům. Členy (Members)"

Transkript

1 Osnova přednášky Programové prostředky řízení Úvod do C# II. Členy (Members) Jmenné prostory (Namespaces) Třídy (Classes) Struktury (Structs) Pavel Balda Západočeská univerzita v Plzni, FAV, KKY 2 Členy (Members) Jmenné prostory a typy mají členy. Členy dané entity (objektu, jmenného prostoru) jsou dostupné pomocí kvalifikovaného jména: entita.jméno-člena Jmenný prostor (namespace): členy jsou jmenné prostory a typy deklarované uvnitř něj Struktura (struct): členy deklarované ve struktuře (např. jednoduché typy) a členy zděděné od třídy object Vyjmenovaný typ (enum): deklarované konstanty a členy zděděné z třídy System.Enum Třída (class): deklarované členy v této třídě a členy zděděné od bázové třídy kromě konstruktorů a destruktorů. Rozhraní (interface): deklarované členy v interfacu, členy všech bázových interfaců a členy zděděné od třídy object Pole (array) : členy zděděné z třídy System.Array Delegát (delegate): členy zděděné z třídy System.Delegate 3 Přístup ke členům Přístup ke členům je určen v deklaraci pomocí modifikátorů: public přístup není omezen protected přístup z typu v němž je deklarace a z odvozených typů internal přístup omezený na daný program protected internal přístup omezený na daný program nebo odvozené typy private přístup omezen na typ, v němž je deklarace uvedena Přístup ke členům (default je podtržen) Namespace vždy public, modifikátory se nesmějí uvádět Typy deklarované ve jmenných prostorech public nebo internal Členy tříd všech 5 druhů, default je private Struktury public, internal nebo private Rozhraní vždy public, modifikátory se nesmějí uvádět Vyjmenované typy vždy public, modifikátory se nesmějí uvádět 4 1

2 Jmenné prostory (namespaces) Kód programů v C# je organizován do jmenných prostorů namespace kvalifik.-identifikátor tělo-jmen.prostoru ; Středník na konci je nepovinný kvalifik.-identifikátor je složen z identifikátorů oddělených tečkami tělo-jmen.prostoru: direktivy-using deklarace-členů-jmen.prostoru Direktivy using i deklarace členů jmenného prostoru jsou nepovinné Deklarace jmenného prostoru se může nacházet v nejvyšší úrovni ve zdrojovém souboru (takový jmenný prostor se stává členem globálního jmenného prostoru) nebo se nachází uvnitř (vnitřní jmenný prostor) jiného jmenného prostoru (vnější jmenný prostor) V obou případech musí být jméno jmenného prostoru jedinečné uvnitř jej obsahujícího jmenného prostoru Všechny direktivy using musí být před deklarací členů jmenného prostoru Direktivy using Direktivy using usnadňují užívání jmenných prostorů a typů v nich definovaných. Existují ve dvou syntaxích: Direktiva pro import typů ze jmenného prostoru using jméno-jmenného-prostoru ; Příklad: using System.Windows.Forms; Direktiva pro náhradní jméno jmenného prostoru nebo typu using identifikátor = jméno-jmenného-prostoru-nebo-typu ; Používá se pro zkrácení odkazu pomocí zvoleného identifikátoru na nějaký jmenný prostor nebo typ: using Mutex = System.Threading.Mutex; 5 6 Jmenné prostory - příklady Členy jmenných prostorů 1. Ekvivalentní deklarace vnořených jmenných prostorů 2. Dvě třídy patřící do stejného plně kvalifikovaného jmenného prostoru 3. Direktiva using neimportuje vnořené jmenné prostory 4. Víceznačné jméno při importu několika jmenných prostorů Příklad 1 namespace N1.N2 class A class B nebo ekvivalentně namespace N1 namespace N2 class A class B Příklad 2 namespace N1.N2 class A namespace N1.N2 class B Příklad 3 namespace N1.N2 class A namespace N3 using N1.N2; class B: A Chyba, při deklaraci N3: namespace N3 using N1; class B: N2.A // N2 neznámý! Příklad 4 namespace N1 class A namespace N2 class A namespace N3 using N1; using N2; class B: A // A víceznačné! Členy jmenných prostorů mohou být vnořené jmenné prostory nebo deklarace typů: Třídy class Struktury struct Rozhraní interface Vyjmenovaného typu enum Delegátu delegate K deklarovaným typům ve jmenných prostorech je přístup public nebo internal, default je internal. Vnořené typy lze deklarovat ve třídách a ve strukturách 7 8 2

3 Třídy (Classes) Třída je datová struktura, která může obsahovat: Datové členy (konstanty a položky) Členské funkce (metody, vlastnosti, události, operátory, konstruktory a destruktory) Vnořené typy Třídy mohou využívat dědičnost (inheritance) Odvozená třída (derived class) může rozšiřovat a specializovat třídu základní (base class) Deklarace tříd atributy modifikátory-třídy class identifikátor bázetřídy deklarace-členů-třídy ; Atributy (příští přednáška), modifikátory třídy, báze třídy a středník jsou nepovinné Modifikátory tříd Deklarace třídy může obsahovat modifikátory public, protected, internal, private určují dostupnost třídy (viz Přístup ke členům) new přípustný u vnořených tříd. Nová třída skrývá stejnojmennou třídu předka abstract označuje neúplnou třídu, která je určena pouze jako bázová třída Nelze ji přímo instancovat, pokud se o to pokusíme, hlásí se chyba překladu Může obsahovat abstraktní členy Nemůže být uzavřená (sealed) sealed označuje třídu, od které nelze odvozovat nové třídy Používá se pro zabránění neúmyslnému odvozování Nemůže být abstraktní třídou Umožňuje optimalizovat kód (převádět virtuální metody na nevirtuální) 9 10 Specifikace báze třídy Deklarace třídy může obsahovat specifikaci přímé báze třídy, definující bázovou třídu a rozhraní implementovaná třídou báze-třídy : typ-třídy : seznam-typů-rozhraní : typ-třídy, seznam-typů-rozhraní Příklady class A class A: B class B: A class B: C class C: A // Chyba! // Cyklická závislost Členy tříd Členy tříd mohou být konstanty, položky (fields), metody, vlastnosti, události, indexery, operátory, konstruktory, destruktory, statické konstruktory, typy Třída dědí (obsahuje) členy své přímé bázové třídy kromě konstruktorů, destuktorů Dědičnost je transitivní: je-li C odvozena od B a B je odvozena od A, pak C dědí všechny členy B a též všechny členy A. Vnořené typy (nested types) jsou typy deklarované uvnitř tříd a struktur class A class B // třída B je vnořený typ v A static void F() Console.WriteLine("A.B.F");

4 Třídy - Konstanty Konstanta je člen reprezentující konstantní hodnotu, která může být vypočtena ve fázi překladu Deklarace konstanty atributy modifikátory-konstant const typ deklararátory-konstant; Atributy a modifikátory konstant jsou nepovinné Modifikátory mohou být new, public, protected, internal, private Deklarátory konstant se oddělují čárkami, každý je ve tvaru: identifikátor = konstantní-výraz Příklad: Ekvivalentní zápis class A class A public const double public const double X = 1.0; X = 1.0, Y = 2.0, Z = 3.0; public const double Y = 2.0; public const double Z = 3.0; Třídy Položky (fields) (1/2) Položka (field) je člen reprezentující proměnnou třídy (objektu) Deklarace položky atributy modifikátory-položek typ deklararátory-proměnných; Atributy a modifikátory položek jsou nepovinné Modifikátory mohou být new, public, protected, internal, private, static, readonly, volatile Deklarátory položek se oddělují čárkami, každý je ve tvaru: identifikátor identifikátor = výraz identifikátor = inicializátor-pole Příklad: Ekvivalentní zápis class A class A public static int public static int X = 1; X = 1, Y, Z = 100; public static Y; public static Z = 100; Třídy Položky (fields) (2/2) Statické položky v deklaraci je uveden modifikátor static Nejsou součástí konkrétní instance, existuje jen jedno umístění v paměti bez ohledu na vytvořený počet instancí objektu Položky instancí v deklaraci není uveden modifikátor static Každá instance má vlastní množinu položek instancí své třídy Položky pouze pro čtení deklarovány s modifikátorem readonly Do položek lze přiřazovat hodnoty v deklaraci, v konstruktoru instance pro položky instancí nebo ve statickém konstruktoru pro statické položky. Pokus o přiřazení v jiném kontextu vede k chybě překladu Nestálé (volatile) položky deklarace obsahuje volatile Zakazuje překladači optimalizační techniky vedoucí k změně pořadí instrukcí, které by mohly vést k nepředvídatelným výsledkům u více threadových programů bez synchronizace (např. příkazem lock) Položky volatile musí mít jeden z typů: Referenční typ byte, sbyte, short, ushort, int, uint, char, float nebo bool Vyjmenovaný typ založený na typech byte, sbyte, short, ushort, int, uint 15 Třídy Inicializace položek Deklarace položek mohou obsahovat inicializaci, která odpovídá přiřazovacím příkazům Pro statické položky se provádí při inicializaci dané třídy Pro položky instancí se vykonává při vytváření instance třídy Položky (statické i instancí) jsou inicializovány vždy. Pokud není inicializace uvedena, inicializují se na default hodnoty (vyplněním nulami). Na rozdíl od C++ nemohou být položky nikdy neinicializovány Příklad: using System; class Test static bool b; int i; static void Main() Test t = new Test(); Console.WriteLine("b = 0, i = 1", b, t.i); Vytváří výstup: b = False, i =

5 Třídy Metody (methods) Metoda je člen implementující výpočet nebo akci s danou třídou (objektem) Deklarace metody hlavička-metody tělo-metody Tělo metody je blok nebo prázdný příkaz Hlavička metody atributy modifikátory-metody návratový-typ jméno-člena ( seznam-formálních-parametrů ) ; Atributy, modifikátory a seznam formálních parametrů jsou nepovinné Modifikátory mohou být new, public, protected, internal, private, static, virtual, sealed, override, abstract, extern Návratový typ je buď název typu nebo void (metoda nic nevrací) Jméno člena identifikátor typ-rozhraní.identifikátor Třídy Parametry metod (1/3) Parametry metod jsou deklarovány v seznamu formálních parametrů pevné-parametry pevné-parametry, pole-parametrů pole-parametrů Pevné parametry tvoří seznam parametrů pevný-parametr oddělených čárkami. Pevný-parametr je definován: atributy modifikátor-parametru typ identifikátor Atributy a modifikátor jsou nepovinné, modifikátor může nabývat jedné ze dvou hodnot: ref nebo out Pole parametrů atributy params typ-pole identifikátor Třídy Parametry metod (2/3) Hodnotové parametry deklarovány bez modifikátorů Skutečný parametr při volání metody musí být implicitně konvertovatelný na hodnotový parametr Referenční parametr deklarován s modifikátorem ref Referenční parametr odpovídá stejnému místu v paměti jako proměnná, která je argumentem v okamžiku volání Výstupní parametr deklarován s modifikátorem out Podobný referenčnímu parametru, proměnná předávaná jako out parametr nemusí být inicializována před voláním, v metodě se považuje za nezinicializovanou (jako lokální proměnná) a před návratem z metody musí být přiřazena Příklad using System; class Test static void Swap(ref int x, ref int y) int temp = x; x = y; y = temp; static void Main() int i = 1, j = 2; Swap(ref i, ref j); //Pozor píše se ref (out)! Console.WriteLine("i = 0, j = 1", i, j); 19 Třídy Parametry metod (3/3) Pole parametrů parametr deklarovaný s modifikátorem params Pokud seznam parametrů obsahuje pole parametrů, musí být posledním parametrem a musí být jednodimenzionálním polem. Při volání mohou být argumenty zapsány dvojím způsobem Jedním výrazem, implicitně konvertovatelným na typ v poli parametrů Nulou nebo několika argumenty, kde každý argument je výraz typu implicitně konvertovatelného na typ prvku v poli parametrů Příklad using System; class Test static void F(params int[] args) Console.Write("Array contains 0 elements:", args.length); foreach (int i in args) Console.Write(" 0", i); Console.WriteLine(); static void Main() int[] arr = 1, 2, 3; F(arr); F(10, 20, 30, 40); F(); Tiskne výstupy: Array contains 3 elements: Array contains 4 elements: Array contains 0 elements: 20 5

6 Třídy Statické a instanční metody Statické metody deklarovány s modifikátorem static Nepracují s určitou instancí Nesmějí používat this, jinak je hlášena chyba překladu Pokud jsou použity ve tvaru E.M, označuje E jméno třídy a M jméno metody Metody instancí deklarovány bez modifikátoru static Pracují s instancí třídy Mohou používat this Pokud jsou použity ve tvaru E.M, označuje E jméno instance a M jméno metody Třídy Virtuální metody Nevirtuální metody neobsahují ve své deklaraci modifikátor virtual Implementace je shodná ve třídě ve které jsou zavedeny i ve třídách odvozených Virtuální metoda je taková metoda, jejíž deklarace obsahuje modifikátor virtual Implementace virtuální metody může být nahrazena odvozenými třídami Při běhu se podle typu instance rozhoduje, která metoda se zavolá Třídy Virtuální metody: Příklad Třídy Override metody Příklad: rozdíl mezi virtuální a nevirtuální metodou using System; class A public void F() Console.WriteLine("A.F"); public virtual void G() Console.WriteLine("A.G"); class B: A new public void F() Console.WriteLine("B.F"); public override void G() Console.WriteLine("B.G"); class Test static void Main() B b = new B(); A a = b; a.f(); b.f(); a.g(); // volá b.g, ne a.g! b.g(); Tiskne výstupy: A.F B.F B.G B.G 23 Override metoda je taková metoda, jejíž deklarace obsahuje modifikátor override Override metoda mění ( přebíjí ) implementaci existující zděděné virtuální metody (viz příklad na předchozí stránce) Naproti tomu virtuální metoda s modifikátorem virtual zavádí novou metodu Příklad pozor na vynechání override! class A public virtual void F() class B: A public virtual void F() // Warning, schování zděděné F() // - dá se odstranit přidáním modifikátoru new 24 6

7 Třídy Sealed a Abstract metody Použití modifikátoru sealed chrání sealed metody před možným přepsáním v odvozených třídách Je-li použit modifikátor sealed, musí být spolu s ním použit i override Abstraktní metoda používá modifikátor abstract Zavádí novou virtuální metodu, avšak bez implementace, proto tělo metody obsahuje jen středník. Implementaci musí dodat odvozené třídy Příklad nelze volat implementaci abstraktní metody z předka abstract class A public abstract void F(); class B: A public override void F() base.f(); // Chyba! base.f je abstraktní Třídy Externí metody Externí metody používají modifikátor extern Typicky jsou externí metody implementovány v jiném jazyku než C# Tělo metody je prázdné, obsahuje jen středník Modifikátor extern se typicky používá ve spolupráci s atributem DllImport Tím je umožněno, aby byly externí metody implementovány v DLL knihovnách [DllImport( kernel32, SetLastError=true)] static extern bool CreateDirectory(string name, SecurityAttribute sa); Třídy Vlastnosti (properties) Vlastnost je člen umožňující přístup k charakteristikám dané třídy (objektu), např. délka řetězce, velikost fontu, apod. Deklarace vlastnosti atributy modifikátory-vlastnosti typ jméno-člena deklarace-akcesorů Atributy a modifikátory jsou nepovinné Modifikátory mohou být new, public, protected, internal, private, static, virtual, sealed, override, abstract, extern Jméno člena identifikátor typ-rozhraní.identifikátor Modifikátory vlastností jsou velmi podobné s modifikátory metod (výše) Týká se modifikátorů static, virtual, sealed, override a abstract 27 Třídy Accessory vlastností Accessor vlastnosti specifikuje příkazy pro čtení a zápis vlastnosti Deklarace accessorů deklarace-accessoru-get deklarace-accessoru-set deklarace-accessoru-set deklarace-accessoru-get Deklarace druhého accessoru je nepovinná Deklaraceaccessoru get Atributy get tělo-accessoru Deklarace accessoru set Atributy set tělo-accessoru V obou deklaracích jsou atributy nepovinné. Tělo accessoru je buď blok nebo ; (středník) Příklad public class Button: Control private string caption; public string Caption get return caption; set if (caption!= value) caption = value; Paint( ); public override void Paint(Graphics g, Rectangle r) // Zde je kód pro vykreslení 28 7

8 Třídy Události (events) Třídy Události: Příklad Událost je člen umožňující třídě (objektu) poskytovat notifikace (oznámení). Klient může připojit svůj kód k události pomocí tzv. handlerů událostí (event handlers) Deklarace události atributy modifikátory-události event typ deklarátory-proměnných ; atributy modifikátory-události event typ jméno-člena deklarace-accessorů-události Atributy a modifikátory jsou nepovinné Modifikátory mohou být new, public, protected, internal, private, static, virtual, sealed, override, abstract, extern Události deklarované pomocí accessorů události (druhý případ) jsou mimo rámec přednášky Typ události musí být typ delegáta odvozený od třídy System.Delegate (příště) Pro přidání a odstranění handleru události se používají operátory += a -= 29 Příklad ukazuje, jak přidat handlery událostí k třídě Button public delegate void EventHandler(object sender, EventArgs e); public class Button: Control public event EventHandler Click; public class LoginDialog: Form Button OkButton; Button CancelButton; public LoginDialog() OkButton = new Button(...); OkButton.Click += new EventHandler(OkButtonClick); CancelButton = new Button(...); CancelButton.Click += new EventHandler (CancelButtonClick); void OkButtonClick(object sender, EventArgs e) // Handle OkButton.Click event void CancelButtonClick(object sender, EventArgs e) // Handle CancelButton.Click event Použití události vypadá jako by událost byla položka třídy Button 30 Třídy Indexery Třídy Indexery: Příklad Indexer je člen umožňující, aby byl objekt indexován stejným způsobem jako pole (array). Deklarace indexeru atributy modifikátory-indexeru deklarátor-indexeru deklarace-accessorů Atributy a modifikátory jsou nepovinné Modifikátory mohou být new, public, protected, internal, private, virtual, sealed, override, abstract, extern Pro modifikátory platí stejná pravidla jako u metod Deklarace accessorů je shodná s deklarací u vlastností (properties) Deklarátor indexeru typ this [ seznam-formálních-parametrů ] typ-rozhraní. this [ seznam-formálních-parametrů ] Typ v deklarátoru specifikuje typ položky pole Seznam formálních parametrů má stejný tvar jako u metod s výjimkou, že indexer musí mít alespoň jeden parametr a nelze užívat modifikátory ref a out 31 using System; class BitArray int[] bits; int length; public BitArray(int length) if (length < 0) throw new ArgumentException(); bits = new int[((length - 1) >> 5) + 1]; this.length = length; public int Length get return length; public bool this[int index] get if (index < 0 index >= length) throw new IndexOutOfRangeException(); return (bits[index >> 5] & 1 << index)!= 0; set if (index < 0 index >= length) throw new IndexOutOfRangeException(); if (value) bits[index >> 5] = 1 << index; else bits[index >> 5] &= ~(1 << index); 32 8

9 Třídy Operátory (1/2) Třídy Operátory (2/2) Operátor je člen definující význam operátoru ve výrazu, kde se vyskytuje daná třída Deklarace operátoru atributy modifikátory-operátoru deklarátor-operátoru tělo-operátoru Atributy jsou nepovinné Modifikátory mohou být public, static, extern Tělo operátoru je blok nebo ; (středník) Deklarátor operátoru typ operator přetížitelný-unární-operátor ( typ identifikátor ) typ operator přetížitelný-binární-operátor ( typ identifikátor, typ identifikátor ) implicit operator typ ( typ identifikátor ) explicit operator typ ( typ identifikátor ) Poslední dva případy jsou tzv. konverzní operátory Přetížitelný unární operátor je jedním z operátorů: + -! ~ true false Přetížitelný binární operátor je jedním z operátorů: + - * / % & ^ << >> ==!= > < >= <= Pro deklarace operátorů platí následující pravidla Deklarace operátorů musí obsahovat současně modifikátory public a static Parametry operátorů musí být hodnotového typu. Při použití ref a/nebo out parametrů je hlášena chyba překladu Nelze deklarovat dva operátory se stejnou signaturou Binární operátory Musí mít dva parametry, alespoň jeden musí mít typ třídy (struktury), ve které je deklarován Následující binární operátory vyžadují deklaraci po dvojicích operator == a operator!= operator > a operator < operator >= a operator <= Třídy Operátory: Příklad public class IntVector public IntVector(int length)... public int Length... // read-only property // read-write indexer public int this[int index]... public static IntVector operator ++(IntVector iv) IntVector temp = new IntVector(iv.Length); for (int i = 0; i < iv.length; i++) temp[i] = iv[i] + 1; return temp; class Test static void Main() IntVector iv1 = new IntVector(4); // vector of 4 x 0 IntVector iv2; iv2 = iv1++; // iv2 contains 4 x 0, iv1 contains 4 x 1 iv2 = ++iv1; // iv2 contains 4 x 2, iv1 contains 4 x 2 Třídy Operátoryis a as Operátor is se používá pro kontrolu, zda typ objektu při běhu (run-time type) po vyhodnocení výrazu e je kompatibilní s daným typem T e is T Je-li e rovno null, vrací false Je-li e typu T (a není null), vrací true Je-li e typu R pak se vrací true pokud existuje implicitní konverze z R na T (R je odvozený od T) int i = 0; char[] s = 'a','h','o','j'; Console.WriteLine("i is object: 0; s is string: 1", i is object, s is string); Vypíše výstup: i is object: True; s is string: False Operátor as se používá pro explicitní konverzi výrazu e na daný referenční typ T e as T Podobný explicitní konverzi výrazu e na typ T, avšak nikdy nezpůsobí výjimku, pokud konverze není možná, vrací null Pokud nelze konverzi nikdy provést, hlásí se chyba překladu V obou operátorech se používají implicitní konverze a zabalování (boxing) Operátory nepodporují uživatelem definované konverze!

10 Třídy Konstruktory instancí Třídy Statické konstruktory Konstruktor instance je člen, implementující akce nezbytné pro inicializaci instance třídy Deklarace konstruktoru atributy modifikátory-konstruktoru deklarátor-konstruktoru tělo-konstruktoru Atributy a modifikátory jsou nepovinné Modifikátory mohou být public, protected, internal, private, extern Tělo konstruktoru je blok nebo ; (středník) Deklarátor konstruktoru identifikátor ( seznam-formálních-parametrů ) inicializátor-konstruktoru Identifikátor musí být jménem třídy, ve které je konstruktor deklarován Pro seznam formálních parametrů platí stejná pravidla jako u metod Inicializátor konstruktoru je nepovinný. Není-li uveden je to jako : base() Inicializátor konstruktoru : base ( seznam-argumentů ) : this ( seznam-argumentů ) Seznam argumentů je nepovinný Specifikují jiné konstruktory, které budou vykonány předtím, než se vstoupí do těla konstruktoru Konstruktory instancí se nedědí! 37 Statický konstruktor je člen, implementující akce nezbytné pro inicializaci třídy Deklarace statického konstruktoru atributy modifikátory-statického-konstruktoru identifikátor ( ) tělo-statického-konstruktoru Atributy a modifikátory jsou nepovinné Modifikátory mohou být extern static nebo static extern. Modifikátor extern je nepovinný Tělo konstruktoru je blok nebo ; (pro modifikátor extern) Statické konstruktory se nedědí a nelze je volat přímo Statický konstruktor třídy se volá nejvýše jednou v dané aplikaci a je volán při první z následujících činností: Při vytváření instance dané třídy Při volání nějaké statické metody dané třídy 38 Třídy Destruktory Destruktor je člen, implementující akce nezbytné pro zrušení (destrukci) instance dané třídy Deklarace destruktoru atributy extern ~ identifikátor ( ) tělo-destruktoru Atributy a modifikátor extern jsou nepovinné Identifikátor musí být jménem třídy, ve které je destruktor deklarován Tělo konstruktoru je blok nebo ; (pro modifikátor extern) Destruktory se nedědí a nelze je volat explicitně Instance se stává způsobilou pro destrukci, pokud ji nemůže používat žádný kód. Instanci uklízí garbage collector Destruktory nemohou být přetížené (nemají parametry), proto třída může mít nejvýše jeden destruktor Destruktory jsou volány v pořadí od nejvýše odvozené třídy k níže odvozeným třídám 39 10

TŘÍDY POKRAČOVÁNÍ. Události pokračování. Příklad. public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e);

TŘÍDY POKRAČOVÁNÍ. Události pokračování. Příklad. public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e); TŘÍDY POKRAČOVÁNÍ Události pokračování public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e); class Bod private int x; private int y; public event ZmenaSouradnicEventHandler ZmenaSouradnic;

Více

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

Úvod Třídy Rozhraní Pole Konec. Programování v C# Hodnotové datové typy, řídící struktury. Petr Vaněček 1 / 39 Programování v C# Hodnotové datové typy, řídící struktury Petr Vaněček 1 / 39 Obsah přednášky Referenční datové typy datové položky metody přístupové metody accessory, indexery Rozhraní Pole 2 / 39 Třídy

Více

PREPROCESOR POKRAČOVÁNÍ

PREPROCESOR POKRAČOVÁNÍ PREPROCESOR POKRAČOVÁNÍ Chybová hlášení V C# podobně jako v C++ existuje direktiva #error, která způsobí vypsání chybového hlášení překladačem a zastavení překladu. jazyk C# navíc nabízí direktivu #warning,

Více

Zápis programu v jazyce C#

Zápis programu v jazyce C# Zápis programu v jazyce C# Základní syntaktická pravidla C# = case sensitive jazyk rozlišuje velikost písmen Tzv. bílé znaky (Enter, mezera, tab ) ve ZK překladač ignoruje každý příkaz končí ; oddělovač

Více

PŘETĚŽOVÁNÍ OPERÁTORŮ

PŘETĚŽOVÁNÍ OPERÁTORŮ PŘETĚŽOVÁNÍ OPERÁTORŮ Jazyk C# podobně jako jazyk C++ umožňuje přetěžovat operátory, tj. rozšířit definice některých standardních operátorů na uživatelem definované typy (třídy a struktury). Stejně jako

Více

Generické programování

Generické programování Generické programování Od C# verze 2.0 = vytváření kódu s obecným datovým typem Příklad generická metoda, zamění dva parametry: static void Swap(ref T p1, ref T p2) T temp; temp = p1; p1 = p2; p2 =

Více

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní Základy jazyka C# doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Obsah přednášky Architektura.NET Historie Vlastnosti

Více

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

14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod. Základy programování (IZAPR) Přednáška 7 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 229, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky 7 Parametry metod, předávání

Více

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

24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1 24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE AUTOR DOKUMENTU: MGR. MARTINA SUKOVÁ DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 UČIVO: STUDIJNÍ OBOR: PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) INFORMAČNÍ TECHNOLOGIE

Více

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/04.0006

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/04.0006 Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/04.0006 Lekce 1 Jazyk Java Tento projekt je spolufinancován Evropským sociálním fondem

Více

Jazyk C++ I. Šablony 2

Jazyk C++ I. Šablony 2 Jazyk C++ I Šablony 2 AR 2013/2014 Jazyk C++ I Třídy template class TVektor { T *a; int n; static int PocInstanci; public: TVektor(int _n = 0) : n(_n) { a = new T[n]; PocInstanci++; } ~TVektor()

Více

Teoretické minimum z PJV

Teoretické minimum z PJV Teoretické minimum z PJV Pozn.: následující text popisuje vlastnosti jazyka Java zjednodušeně pouze pro potřeby výuky. Třída Zavádí se v programu deklarací třídy což je část programu od klíčových slov

Více

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

Jazyk C++ 1. Blok 3 Objektové typy jazyka C++ Třída. Studijní cíl. Doba nutná k nastudování. Průvodce studiem Jazyk C++ 1 Blok 3 Objektové typy jazyka C++ Studijní cíl Ve třetím bloku bude představen a rozebrán nejdůležitější objektový typ jazyka C++ a to sice třída. Po absolvování bloku bude student schopen navrhovat

Více

Virtuální metody - polymorfizmus

Virtuální metody - polymorfizmus - polymorfizmus - potomka lze použít v místě, kde je možné použít předka - v dosud probraných situacích byly vždy volány funkce, které jsou známy již v době překladu. V situaci, kdy v době překladu není

Více

Seminář Java II p.1/43

Seminář Java II p.1/43 Seminář Java II Seminář Java II p.1/43 Rekapitulace Java je case sensitive Zdrojový kód (soubor.java) obsahuje jednu veřejnou třídu Třídy jsou organizovány do balíků Hierarchie balíků odpovídá hierarchii

Více

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.

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. 23. Třídy, generické třídy, instance, skládání, statické metody a proměnné. Zapouzdření, konstruktory, konzistence objektu, zpřístupnění vnitřní implementace, modifikátory public a private. Polymorfismus,

Více

typová konverze typová inference

typová konverze typová inference Seminář Java Programování v Javě II Radek Kočí Fakulta informačních technologií VUT Únor 2008 Radek Kočí Seminář Java Programování v Javě (2) 1/ 36 Téma přednášky Rozhraní: použití, dědičnost Hierarchie

Více

Výčtový typ strana 67

Výčtový typ strana 67 Výčtový typ strana 67 8. Výčtový typ V této kapitole si ukážeme, jak implementovat v Javě statické seznamy konstant (hodnot). Příkladem mohou být dny v týdnu, měsíce v roce, planety obíhající kolem slunce

Více

Ukazka knihy z internetoveho knihkupectvi www.kosmas.cz

Ukazka knihy z internetoveho knihkupectvi www.kosmas.cz Ukazka knihy z internetoveho knihkupectvi www.kosmas.cz Upozornění pro čtenáře a uživatele této knihy Všechna práva vyhrazena. Žádná část této tištěné či elektronické knihy nesmí být reprodukována a šířena

Více

Více o konstruktorech a destruktorech

Více o konstruktorech a destruktorech Více o konstruktorech a destruktorech Více o konstruktorech a o přiřazení... inicializovat objekt lze i pomocí jiného objektu lze provést přiřazení mezi objekty v původním C nebylo možné provést přiřazení

Více

Objektově orientované programování

Objektově orientované programování 10. října 2011 Pragmatické informace Volitelný předmět, zápočet: zápočtový program(s dokumentací), aktivní účast na cvičení(body v CodExu), praktický test, zkouška: zkoušková písemka na objektový návrh

Více

1. Programování proti rozhraní

1. Programování proti rozhraní 1. Programování proti rozhraní Cíl látky Cílem tohoto bloku je seznámení se s jednou z nejdůležitější programátorskou technikou v objektově orientovaném programování. Tou technikou je využívaní rozhraní

Více

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

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace Předmět: Vývoj aplikací Téma: Datové typy Vyučující: Ing. Milan Káža Třída: EK3 Hodina: 5 Číslo: V/5 Programování v jazyce

Více

SOUBORY, VSTUPY A VÝSTUPY POKRAČOVÁNÍ

SOUBORY, VSTUPY A VÝSTUPY POKRAČOVÁNÍ SOUBORY, VSTUPY A VÝSTUPY POKRAČOVÁNÍ Vstupy a výstupy pokračování Kódování textů Texty (řetězce nebo znaky) v jazyce C# jsou v paměti uloženy v kódování označovaném běžně Unicode (kódová stránka 1200).

Více

Programování v Javě I. Únor 2009

Programování v Javě I. Únor 2009 Seminář Java Programování v Javě I Radek Kočí Fakulta informačních technologií VUT Únor 2009 Radek Kočí Seminář Java Programování v Javě (1) 1/ 44 Téma přednášky Datové typy Deklarace třídy Modifikátory

Více

Úvod Přetěžování Generika Kolekce Konec. Programování v C# Další jazykové konstrukce. Petr Vaněček 1 / 31

Úvod Přetěžování Generika Kolekce Konec. Programování v C# Další jazykové konstrukce. Petr Vaněček 1 / 31 Programování v C# Další jazykové konstrukce Petr Vaněček 1 / 31 Obsah přednášky Přetěžování metody operátory Generika Kolekce třídy rozhraní 2 / 31 Překrytí vs. přetížení Rozdíl ve způsobu deklarace metody/operátoru

Více

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

přetížení operátorů (o) přetížení operátorů (o) - pro vlastní typy je možné přetížit i operátory (tj. definovat vlastní) - pro definici slouží klíčové slovo operator následované typem/znakem operátoru - deklarace pomocí funkčního

Více

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

Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody Dynamická alokace paměti Jazyky C a C++ poskytují programu možnost vyžádat si část volné operační paměti pro

Více

Programování v Javě I. Leden 2008

Programování v Javě I. Leden 2008 Seminář Java Programování v Javě I Radek Kočí Fakulta informačních technologií VUT Leden 2008 Radek Kočí Seminář Java Programování v Javě (1) 1/ 45 Téma přednášky Datové typy Deklarace třídy Modifikátory

Více

Abstraktní datové typy: zásobník

Abstraktní datové typy: zásobník Abstraktní datové typy: zásobník doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Abstraktní datové typy omezené rozhraní

Více

Dědění, polymorfismus

Dědění, polymorfismus Programování v jazyce C/C++ Ladislav Vagner úprava Pavel Strnad Dědění. Polymorfismus. Dnešní přednáška Statická a dynamická vazba. Vnitřní reprezentace. VMT tabulka virtuálních metod. Časté chyby. Minulá

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Řídicí struktury jazyka Java Struktura programu Příkazy jazyka Blok příkazů Logické příkazy Ternární logický operátor Verze pro akademický rok 2012/2013 1 Struktura programu

Více

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

11.5.2012. 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 Obsah přednášky 9 Základy programování (IZAPR, IZKPR) Přednáška 9 Základy dědičnosti, přístupová práva Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 03 022, Náměstí Čs. legií

Více

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false Logické operace Datový typ bool může nabýt hodnot: o true o false Relační operátory pravda, 1, nepravda, 0, hodnoty všech primitivních datových typů (int, double ) jsou uspořádané lze je porovnávat binární

Více

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

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu: Čtvrtek 8 prosince Pascal - opakování základů Struktura programu: 1 hlavička obsahuje název programu, použité programové jednotky (knihovny), definice konstant, deklarace proměnných, všechny použité procedury

Více

1. Dědičnost a polymorfismus

1. Dědičnost a polymorfismus 1. Dědičnost a polymorfismus Cíl látky Cílem této kapitoly je představit klíčové pojmy dědičnosti a polymorfismu. Předtím však je nutné se seznámit se základními pojmy zobecnění neboli generalizace. Komentář

Více

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

Bridge. Známý jako. Účel. Použitelnost. Handle/Body Bridge Bridge Známý jako Handle/Body Účel odděluje abstrakci (rozhraní a jeho sémantiku) od její konkrétní implementace předchází zbytečnému nárůstu počtu tříd při přidávání implementací používá se v době

Více

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

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech 7 Formátovaný výstup, třídy, objekty, pole, chyby v programech Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost formátovanému výstupu,

Více

20. Projekt Domácí mediotéka

20. Projekt Domácí mediotéka Projekt Domácí mediotéka strana 211 20. Projekt Domácí mediotéka 20.1. Základní popis, zadání úkolu V projektu Domácí mediotéka (Dome) se jednoduchým způsobem evidují CD a videa. Projekt je velmi jednoduchý

Více

3. Třídy. Základní pojmy objektového programování. Třídy

3. Třídy. Základní pojmy objektového programování. Třídy 3. Třídy Základní pojmy objektového programování Jak už víme, je Java objektovým programovacím jazykem. V úvodu této kapitoly si objasníme základní pojmy objektové teorie. Objekt představuje souhrn dat

Více

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

Pokročilé programování v jazyce C pro chemiky (C3220) Statické proměnné a metody, šablony v C++ Pokročilé programování v jazyce C pro chemiky (C3220) Statické proměnné a metody, šablony v C++ Globální konstantní proměnné Konstantní proměnné specifikujeme s klíčovým slovem const, tyto konstantní proměné

Více

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií 1 Fakulta elektrotechniky a informatiky Katedra softwarových technologií 12. října 2009 Organizace výuky Přednášky Teoretické základy dle normy jazyka C Cvičení Praktické úlohy odpřednášené látky Prostřední

Více

IAJCE Přednáška č. 8. double tprumer = (t1 + t2 + t3 + t4 + t5 + t6 + t7) / 7; Console.Write("\nPrumerna teplota je {0}", tprumer);

IAJCE Přednáška č. 8. double tprumer = (t1 + t2 + t3 + t4 + t5 + t6 + t7) / 7; Console.Write(\nPrumerna teplota je {0}, tprumer); Pole (array) Motivace Častá úloha práce s větším množstvím dat stejného typu o Př.: průměrná teplota za týden a odchylka od průměru v jednotlivých dnech Console.Write("Zadej T pro.den: "); double t = Double.Parse(Console.ReadLine());

Více

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

PB161 Programování v jazyce C++ Přednáška 9 PB161 Programování v jazyce C++ Přednáška 9 Právo friend Přetěžování operátorů Nikola Beneš 16. listopadu 2015 PB161 přednáška 9: friend, přetěžování operátorů 16. listopadu 2015 1 / 30 Reklama PB173 Tematicky

Více

Funkční objekty v C++.

Funkční objekty v C++. Funkční objekty v C++. Funkční objekt je instance třídy, která má jako svou veřejnou metodu operátor (), tedy operátor pro volání funkce. V dnešním článku si ukážeme jak zobecnit funkci, jak používat funkční

Více

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

Maturitní otázky z předmětu PROGRAMOVÁNÍ Wichterlovo gymnázium, Ostrava-Poruba, příspěvková organizace Maturitní otázky z předmětu PROGRAMOVÁNÍ 1. Algoritmus a jeho vlastnosti algoritmus a jeho vlastnosti, formy zápisu algoritmu ověřování správnosti

Více

Jazyk C++ II. Šablony a implementace

Jazyk C++ II. Šablony a implementace Jazyk C++ II Šablony a implementace AR 2013/2014 Jazyk C++ II Úvod Dědičnost a kompozice nejsou vždy tou správnou odpovědí na požadavky znovupoužitelnosti kódu. Proto máme možnost definování určité třídy

Více

Fakulta elektrotechniky a informatiky Univerzita Pardubice 2014/2015. poslední přednáška a materiál k samostudiu

Fakulta elektrotechniky a informatiky Univerzita Pardubice 2014/2015. poslední přednáška a materiál k samostudiu Fakulta elektrotechniky a informatiky Univerzita Pardubice 2014/2015 poslední přednáška a materiál k samostudiu @h0nza Raději už na začátku položte o otázku víc Vás to nic nestojí a ušetříte si spoustu

Více

4.4.2012. Obsah přednášky. Příkaz for neúplný. Příkaz for příklady. Cyklus for each (enhanced for loop) Příkaz for příklady

4.4.2012. Obsah přednášky. Příkaz for neúplný. Příkaz for příklady. Cyklus for each (enhanced for loop) Příkaz for příklady Základy programování (IZAPR, IZKPR) Přednáška 5 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 03 022, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky Příkazy cyklu -

Více

Prezentace a vysvětlení programového prostředí NXC

Prezentace a vysvětlení programového prostředí NXC Úvod Další jazyk, který je možno použít pro programování NXT kostky je NXC Not exatly C Na rozdíl od jazyku NXT-G, kde jsme vytvářeli program pomocí grafických prvků přesněji řečeno pomocí programovacích

Více

7. Datové typy v Javě

7. Datové typy v Javě 7. Datové typy v Javě Primitivní vs. objektové typy Kategorie primitivních typů: integrální, boolean, čísla s pohyblivou řádovou čárkou Pole: deklarace, vytvoření, naplnění, přístup k prvkům, rozsah indexů

Více

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

Správné vytvoření a otevření textového souboru pro čtení a zápis představuje f1(&pole[4]); funkci f1 předáváme hodnotu 4. prvku adresu 4. prvku adresu 5. prvku hodnotu 5. prvku symbolická konstanta pro konec souboru je eof EOF FEOF feof Správné vytvoření a otevření textového souboru

Více

Kolekce, cyklus foreach

Kolekce, cyklus foreach Kolekce, cyklus foreach Jen informativně Kolekce = seskupení prvků (objektů) Jednu již známe pole (Array) Kolekce v C# = třída, která implementuje IEnumerable (ICollection) Cyklus foreach ArrayList pro

Více

Jakub Čermák http://www.jcermak.cz. Microsoft Student Partner

Jakub Čermák <jakub@jcermak.cz> http://www.jcermak.cz. Microsoft Student Partner Jakub Čermák http://www.jcermak.cz Microsoft Student Partner Úvod, příklady použití, trocha teorie Struktura aplikace Typy obecně, primitivní typy, speciální typy Podmínky, cykly, namespaces

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Typy Základní (primitivní) datové typy Deklarace Verze pro akademický rok 2012/2013 1 Typy v jazyce Java Základní datové typy (primitivní datové typy) Celočíselné byte, short,

Více

Odvozené a strukturované typy dat

Odvozené a strukturované typy dat Odvozené a strukturované typy dat Petr Šaloun katedra informatiky FEI VŠB-TU Ostrava 14. listopadu 2011 Petr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Odvozené a strukturované typy dat 14. listopadu

Více

Jazyk C++ I. Polymorfismus

Jazyk C++ I. Polymorfismus Jazyk C++ I Polymorfismus AR 2013/2014 Jazyk C++ I Operátory Co to vůbec jsou operátory? Na co je používáme? AR 2013/2014 Jazyk C++ I 2 Operátory Můžeme si upravit operátory pro vlastní objektové typy?

Více

Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy

Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy Úvod do programování Michal Krátký 1,Jiří Dvorský 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programování, 2004/2005 Procesor Procesorem je objekt, který vykonává algoritmem popisovanou

Více

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

Tabulka symbolů. Vazba (binding) Vazba - příklad. Deklarace a definice. Miroslav Beneš Dušan Kolář Vazba (binding) Tabulka symbolů Miroslav Beneš Dušan Kolář vazba = spojení mezi entitou a vlastností okamžik vazby (binding time) při návrhu jazyka při implementaci jazyka během překladu/spojování/zavádění

Více

Jazyk C# (seminář 5)

Jazyk C# (seminář 5) Jazyk C# (seminář 5) Pavel Procházka KMI 23. října 2014 Přetěžování metod motivace Představme si, že máme metodu, která uvnitř dělá prakticky to samé, ale liší se pouze parametry V C# můžeme více metod

Více

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

přetížení operátorů (o) přetížení operátorů (o) - pro vlastní typy je možné přetížit i operátory (tj. definovat vlastní) - pro definici slouží klíčové slovo operator následované typem/znakem operátoru - operátor je speciální

Více

Dynamická identifikace typů v C++.

Dynamická identifikace typů v C++. Dynamická identifikace typů v C++. Pod pojmem "Dynamická identifikace typů" rozumíme zjišťování typů proměnných, nebo objektů v době běhu programu. Identifikaci typů zajišťuje operátor typeid. Než se ale

Více

Jakub Čermák http://www.jcermak.cz. Microsoft Student Partner

Jakub Čermák <jakub@jcermak.cz> http://www.jcermak.cz. Microsoft Student Partner Jakub Čermák http://www.jcermak.cz Microsoft Student Partner Úvod, příklady použití, trocha teorie Struktura aplikace Typy obecně, primitivní typy, speciální typy Podmínky, cykly, namespaces

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Výrazy Operátory Výrazy Verze pro akademický rok 2012/2013 1 Operace, operátory Unární jeden operand, operátor se zapisuje ve většině případů před operand, v některých případech

Více

Paměť počítače. alg2 1

Paměť počítače. alg2 1 Paměť počítače Výpočetní proces je posloupnost akcí nad daty uloženými v paměti počítače Data jsou v paměti reprezentována posloupnostmi bitů (bit = 0 nebo 1) Připomeňme: paměť je tvořena řadou 8-mi bitových

Více

Ukazatel (Pointer) jako datový typ - proměnné jsou umístěny v paměti na určitém místě (adrese) a zabírají určitý prostor (počet bytů), který je daný

Ukazatel (Pointer) jako datový typ - proměnné jsou umístěny v paměti na určitém místě (adrese) a zabírají určitý prostor (počet bytů), který je daný Ukazatel (Pointer) jako datový typ - proměnné jsou umístěny v paměti na určitém místě (adrese) a zabírají určitý prostor (počet bytů), který je daný typem proměnné - ukazatel je tedy adresa společně s

Více

Zpracoval: houzvjir@fel.cvut.cz

Zpracoval: houzvjir@fel.cvut.cz Zpracoval: houzvjir@fel.cvut.cz 10. Objektově orientované programování v C++. Přetěţování operátorů, generické funkce a třídy, výjimky, knihovny. (A7B36PJC) Obsah OOP v C++... 2 Pro připomenutí - Základní

Více

Singleton obsah. Motivace Základní myšlenka Implementace Problémy. Dědičnost Obecná implementace Shrnutí. destrukce vícevláknovost

Singleton obsah. Motivace Základní myšlenka Implementace Problémy. Dědičnost Obecná implementace Shrnutí. destrukce vícevláknovost Singleton Singleton obsah Motivace Základní myšlenka Implementace Problémy destrukce vícevláknovost Dědičnost Obecná implementace Shrnutí Singleton motivace Co mají následující příklady společného? DatabaseConnectionPool

Více

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

Václav Klaus. public class Clovek { protected String jmeno; protected int roknarozeni; public Clovek(String j, int rn) { 4. Třída versus objekt Co je třída a objekt? Třída (také poněkud nepřesně zvaná objektový typ) představuje skupinu objektů, které nesou stejné vlastnosti "stejné" je myšleno kvalitativně, nikoli kvantitativně,

Více

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

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 Ú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 KAPITOLA 1 Na úvod o Javě 15 Počítačový program 15 Vysokoúrovňový programovací

Více

Data, výrazy, příkazy

Data, výrazy, příkazy Data, výrazy, příkazy Karel Richta a kol. katedra počítačů FEL ČVUT v Praze Přednášky byly připraveny s pomocí materiálů, které vyrobili Ladislav Vágner, Pavel Strnad, Martin Hořeňovský, Aleš Hrabalík

Více

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

Pokročilé programování v jazyce C pro chemiky (C3220) Dědičnost tříd v C++ Pokročilé programování v jazyce C pro chemiky (C3220) Dědičnost tříd v C++ Dědičnost tříd Dědičnost umožňuje vytvářet nové třídy z tříd existujících tak, že odvozené třídy (tzv. potomci) dědí vlastnosti

Více

Jazyk C++ I. Polymorfismus

Jazyk C++ I. Polymorfismus Jazyk C++ I Polymorfismus AR 2013/2014 Jazyk C++ I Úvod Metody s časnou vazbou jsou překládány jako obyčejné céčkovské funkce. Této metodě je předán jako první implicitní parametr this. Rozdíl mezi obyčejnou

Více

Java a XML. 10/26/09 1/7 Java a XML

Java a XML. 10/26/09 1/7 Java a XML Java a XML Java i XML jsou přenositelné V javě existuje podpora pro práci s XML, nejčastější akce prováděné při zpracování XML: načítání XML elementů generování nových elementů nebo úprava starého zápis

Více

V dalších letech se pak začaly objevovat první normy pro jazyk C++ (ISO/IEC 14882:1998; ISO/IEC 9899:1999; ISO/IEC 14882:2003; ISO/IEC 14882:2011).

V dalších letech se pak začaly objevovat první normy pro jazyk C++ (ISO/IEC 14882:1998; ISO/IEC 9899:1999; ISO/IEC 14882:2003; ISO/IEC 14882:2011). Jazyk C++ 1 Blok 1 Úvod do programovacího jazyka C++ Studijní cíl První blok kurzu je věnován úvodu do problematiky programovacího jazyka C++. V bloku budou rozebrány historické souvislosti programovacích

Více

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

10 Balíčky, grafické znázornění tříd, základy zapozdření 10 Balíčky, grafické znázornění tříd, základy zapozdření Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost příkazům balíčkům, grafickému

Více

Platforma.NET 4. hodina dnes to bude ideologické

Platforma.NET 4. hodina dnes to bude ideologické Platforma.NET 4. hodina dnes to bude ideologické Aleš Keprt Ales.Keprt@upol.cz říjen 2006 Doporučená literatura 1. Duffy J. Professional.NET Framework 2.0. Wrox Press, 2006. 2. Wikipedia.NET Framework

Více

Datové typy strana 29

Datové typy strana 29 Datové typy strana 29 3. Datové typy Jak již bylo uvedeno, Java je přísně typový jazyk, proto je vždy nutno uvést datový typ datového atributu, formálního parametru metody, návratové hodnoty metody nebo

Více

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

3. Je defenzivní programování technikou skrývání implementace? Vyberte jednu z nabízených možností: Pravda Nepravda 1. Lze vždy z tzv. instanční třídy vytvořit objekt? 2. Co je nejčastější příčinou vzniku chyb? A. Specifikace B. Testování C. Návrh D. Analýza E. Kódování 3. Je defenzivní programování technikou skrývání

Více

Datové abstrakce v programovacích jazycích

Datové abstrakce v programovacích jazycích Datové abstrakce v programovacích jazycích Motivace Strukturovat rozsáhlé programy Dovolit separátní překlad Možné formy strukturování: Podprogramy původní forma abstrakce -abstrakce výpočtů Moduly kontejnery

Více

První kapitola úvod do problematiky

První kapitola úvod do problematiky První kapitola úvod do problematiky Co je to Flex Adobe Flex je ActionSript (AS) framework pro tvorbu Rich Internet Aplications (RIA), tedy knihovna AS tříd pro Flash. Flex používáme k vytvoření SWF souboru

Více

Zpracoval: houzvjir@fel.cvut.cz

Zpracoval: houzvjir@fel.cvut.cz Zpracoval: houzvjir@fel.cvut.cz 9. Datový typ ukazatel, přetěžování funkcí, typ reference, vstup a výstup, třídy, staticky vázané metody, dědění, dynamicky vázané metody, abstraktní třídy, polymorfní datové

Více

SOUBORY, VSTUPY A VÝSTUPY POKRAČOVÁNÍ

SOUBORY, VSTUPY A VÝSTUPY POKRAČOVÁNÍ SOUBORY, VSTUPY A VÝSTUPY POKRAČOVÁNÍ Serializace objektů pokračování Serializace v binárním nebo SOAP formátu pokračování Přizpůsobení serializace pokračování Příklad Program provádí serializaci a deserializaci

Více

Objektově orientované programování v PHP 5. Martin Klíma

Objektově orientované programování v PHP 5. Martin Klíma Objektově orientované programování v PHP 5 Martin Klíma OOP & PHP 5 V PHP 5 konečně značné rozšíření OOP Blíží se to moderním programovacím jazykům jako Java nebo C# Výhody OOP Zapouzdření (nové modifikátory

Více

Syntaxe vyjímek. #include #include using namespace std; // Trida vyjimek class Vyjimka { private:

Syntaxe vyjímek. #include <iostream> #include <string> using namespace std; // Trida vyjimek class Vyjimka { private: Vyjímky. Pod pojmem výjimka se rozumí nějaká výjimečná situace, která nastane v dané funkci. V jazyce C i C++ se často používá návratových hodnot funkcí, které vracejí úspěšnost provádění nějaké operace

Více

Z. Kotala, P. Toman: Java ( Obsah )

Z. Kotala, P. Toman: Java ( Obsah ) Z. Kotala, P. Toman: Java ( Obsah ) 13. Výjimky Výjimka (exception) je definována jako událost, která nastane během provádění programu a která naruší normální běh instrukcí. Výjimka je vyvolána například

Více

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

11 Diagram tříd, asociace, dědičnost, abstraktní třídy 11 Diagram tříd, asociace, dědičnost, abstraktní třídy Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost diagramům tříd, asociaci,

Více

Principy objektově orientovaného programování

Principy objektově orientovaného programování Principy objektově orientovaného programování Třídy a objekty doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz C E T

Více

Jazyk C# přednáška 01. Fakulta elektrotechniky a informatiky Univerzita Pardubice 2014/2015

Jazyk C# přednáška 01. Fakulta elektrotechniky a informatiky Univerzita Pardubice 2014/2015 Jazyk C# přednáška 01 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2014/2015 Přednáší Ing. Jan Hřídel (@h0nza) jan.hridel@upce.cz 466 037 178 V pochvalných i kritických tweetech z přednášky

Více

DSL manuál. Ing. Jan Hranáč. 27. října 2010. V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v

DSL manuál. Ing. Jan Hranáč. 27. října 2010. V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v DSL manuál Ing. Jan Hranáč 27. října 2010 V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v současné době krátký) seznam vestavěných funkcí systému. 1 Vytvoření nového dobrodružství Nejprve

Více

PB161 Programování v C++ Proudy pro standardní zařízení Souborové proudy Paměťové proudy Manipulátory

PB161 Programování v C++ Proudy pro standardní zařízení Souborové proudy Paměťové proudy Manipulátory PB161 Programování v C++ Proudy pro standardní zařízení Souborové proudy Paměťové proudy Manipulátory Výhody objektového řešení Nástroje pro IO operace jsou v C++ součástí knihoven Hierarchie objektových

Více

2 Datové typy v jazyce C

2 Datové typy v jazyce C 1 Procedurální programování a strukturované programování Charakteristické pro procedurální programování je organizace programu, který řeší daný problém, do bloků (procedur, funkcí, subrutin). Původně jednolitý,

Více

Proměnné a datové typy

Proměnné a datové typy Proměnné a datové typy KAPITOLA 2 V této kapitole: Primitivní datové typy Proměnné Opakování Mezi základní dovednosti každého programátora bezesporu patří dobrá znalost datových typů. Ta vám umožní efektivní

Více

- dělají se také pomocí #define - podobné (použitím) funkcím - předpřipravená jsou např. v ctype.h. - jak na vlastní makro:

- dělají se také pomocí #define - podobné (použitím) funkcím - předpřipravená jsou např. v ctype.h. - jak na vlastní makro: 21.4.2009 Makra - dělají se také pomocí #define - podobné (použitím) funkcím - předpřipravená jsou např. v ctype.h - jak na vlastní makro: #define je_velke(c) ((c) >= 'A' && (c)

Více

UJO Framework. revoluční architektura beans. verze 0.80 http://ujoframework.org/

UJO Framework. revoluční architektura beans. verze 0.80 http://ujoframework.org/ UJO Framework revoluční architektura beans verze 0.80 http://ujoframework.org/ Pavel Pone(c), září 2008 Historie rok 2004 upravené objekty z frameworku Cayenne nevýhodou byla špatná typová kontrola rok

Více

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

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Číslo a název šablony Číslo didaktického materiálu Druh didaktického materiálu Autor Jazyk Téma sady didaktických materiálů Téma didaktického materiálu Vyučovací předmět Cílová skupina (ročník) Úroveň

Více

PROGRAMOVÁNÍ V C++ URČENO PRO VZDĚLÁVÁNÍ V AKREDITOVANÝCH STUDIJNÍCH PROGRAMECH ROSTISLAV FOJTÍK

PROGRAMOVÁNÍ V C++ URČENO PRO VZDĚLÁVÁNÍ V AKREDITOVANÝCH STUDIJNÍCH PROGRAMECH ROSTISLAV FOJTÍK PROGRAMOVÁNÍ V C++ URČENO PRO VZDĚLÁVÁNÍ V AKREDITOVANÝCH STUDIJNÍCH PROGRAMECH ROSTISLAV FOJTÍK ČÍSLO OPERAČNÍHO PROGRAMU: CZ.1.07 NÁZEV OPERAČNÍHO PROGRAMU: VZDĚLÁVÁNÍ PRO KONKURENCESCHOPNOST OPATŘENÍ:

Více

IUJCE 07/08 Přednáška č. 4. v paměti neexistuje. v paměti existuje

IUJCE 07/08 Přednáška č. 4. v paměti neexistuje. v paměti existuje Konstanty I možnosti: přednostně v paměti neexistuje žádný ; o preprocesor (deklarace) #define KONSTANTA 10 o konstantní proměnná (definice) const int KONSTANTA = 10; příklad #include v paměti

Více

Abstrakt. Klíčová slova. Title. Abstrakt. Klíčová slova

Abstrakt. Klíčová slova. Title. Abstrakt. Klíčová slova Abstrakt Tato práce se zabývá problematikou tvorby aplikací pro AutoCAD pomocí technologie.net pro knihovní prvky ObjectARX. Nastiňuje základy práce ve vývojovém prostředí Visual Studio 2005, programování

Více