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.

Slides:



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

Standardní knihovní funkce pro práci s textovými řetězci
(instance konkrétní třídy)
VISUAL BASIC Práce s řetězci Použitá literatura: Kvoch: Visual Basic 4.
Seminář C++ 5. cvičení Dědičnost Ing. Jan Mikulka.
Opakování Co je výsledkem následujícího prográmku? my $a="kol"; my $b="o"; $a.= $b; $b.= $a; print "a = $a, b = $b\n"; Vkládání speciálních znaků? Uvozovací.
Třída Array Je součásti balíčku java.util Účelem je usnadnit práci s poli Metody – nejpoužívanější equel(),fill(),sort() a binarySearch() equels() Slouží.
Pole, ukazatele a odkazy
BLIŽŠÍ POHLED NA TŘÍDY, DĚDIČNOST - úvod
1NPRG054 Vývoj vysoce výkonného software /2013 David Bednárek Domácí úkol.
C++ Přednáška 3 Konstantní a statické členy tříd, ukazatel this, konstantní instance třídy Ing. Jiří Kulhánek , kat. 352, VŠB TU Ostrava 2004.
C# pro začátečníky Mgr. Jaromír Osčádal
Programování v C++ Cvičení.
Programování v Pascalu Přednáška 7
Materiály k přednášce Úvod do programování Ondřej Čepek.
J a v a Začínáme programovat Lucie Žoltá pole řetězec debugr.
J a v a Začínáme programovat Lucie Žoltá metody, objekty, konstruktor.
C# - struktury, výčtové typy, pole
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í.
C# - znakové typy a řetězce
Třída jako zdroj funkcionality
Objektové programování
Datové typy a práce s nimi
Současný svět Projekt č. CZ /3. 1
Návrh a tvorba WWW Přednáška 11
Počítače a programování 1 8.přednáška. Obsah přednášky Řetězce - deklarace a vytvoření Základní metody pro práci s řetezci Znaky - třída Character Základní.
Počítače a programování 1
JavaScript Podmínky, cykly a pole.
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í.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
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.
OSNOVA: a) Přetížení členských funkcí b) Dědičnost tříd Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače a programování 2 pro obor EST BPC2E.
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.
12/04/20151 Kolekce (1) Kolekce (collection) představují standardní datové struktury (seskupení) prvků (objektů) Jsou definovány ve jmenném prostoru System.Collections.
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.
KIV/PPA1 cvičení 9 Cvičící: Pavel Bžoch. Osnova cvičení Třída String a její metody –Řetězce a operace s nimi.
Principy OOP Objektově orientované programování vychá-zí ze třech základních principů (rysů): zapouzdření (encapsulation) dědičnost (inheritance) polymorfismus.
XQuery Dotazovací jazyk XML Daniel Privalenkov. O čem bude prezentace Nutnost dotazovacího jazyku v XML Rychlý přehled XQuery Několik příkladů.
STRING A UKAZATELE. Co to je řetězec? Řetězec v Javě je samostatný objekt. Je konstantní, co znamená, že jednou vytvořený řetězec nelze změnit. Chceme-li.
VISUAL BASIC PRALG.
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)
Jazyk C A0B36PRI - PROGRAMOVÁNÍ Část II.
4. Typ pole 4.1 Jednorozměrná pole
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é.
23/04/20151 LINQ (1) LINQ (Language Integrated Query) je součást MS.NET Frameworku umožňující jednotný přístup k datům a jejich zpracování deklarativ-
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.
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í 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é.
Y36PJC Programování v jazyce C/C++
Přetěžování metod (1) Přetěžování metod – overloading:
Programování ENUM, SWITCH,pole jednorozměrná a vícerozměrná, deklarace, inicializace, kopírování, porovnání Erik Král.
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é.
Metody s proměnným počtem parametrů
Y36PJC Programování v jazyce C/C++
Úvod do programování 6. hodina
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.
Algoritmizace a programování
Typový příklad 3 – zadání 1
Návrhový vzor Flyweight
Funkce výstupu (2) Funkce printf: deklarována v: stdio.h
Řetězce (24) Funkce strchr: deklarována v: string.h
Dynamické proměnné (1) Proměnné, jejichž počet a (nebo) velikost pa-měti využívané těmito proměnnými se v prů-běhu programu mění Dynamické proměnné lze.
Oblast platnosti identifikátoru (1)
C# přehled vlastností.
Typ ukazatel (1) Proměnné typu ukazatel (pointer) uchovávají paměťovou adresu Hodnota ukazatele říká, kde (na jaké adrese) se v paměti nachází nějaký objekt.
NÁZEV ŠKOLY: S0Š Net Office, spol. s r.o., Orlová-Lutyně
Transkript prezentace:

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 indexy) Definují se „podobně“ jako vlastnosti Název indexeru je vždy this, po němž násle- dují jeho parametry (v hranatých závorkách) Používá přístupové metody: –get : pro načtení hodnoty na daném indexu (indexech) –set : pro zápis hodnoty na daném indexu (indexech) zapisovaná data jsou předávána parametrem value

13/04/20152 Indexery (2) Příklad: public int this[int index] { get { … } set { … } } Poznámka: –pomocí indexerů je možné s třídami a strukturami pracovat i jako s vícerozměrnými poli (přidáním dalšího argumentu do hranatých závorek): public double this [int i, int j]

13/04/20153 Metody s proměnným počtem parametrů Jazyk C# umožňuje definovat metody akcep- tující variabilní počet skutečných parametrů Pro definici metody s proměnným počtem pa- rametrů se využívá modifikátor params Modifikátor params může být uvedený pou- ze před posledním parametrem metody Parametr zapsaný za params musí být vždy typu pole

13/04/20154 Řetězce Řetězec představuje posloupnost znaků, tj. hodnot typu char Jednotlivé znaky lze zpřístupnit pomocí jejich indexů (zapisovaných v hranatých závorkách) Narozdíl od jazyka C řetězce nejsou ukonče- ny znakem ’\0’ Řetězce mohou být v jazyku C# reprezento- vány např.: –datovým typem string (synonymum pro bázo- vou třídu System.String ) –třídou StringBuilder (definována ve jmen- ném prostoru System.Text )

13/04/20155 Třída String (1) Definována ve jmenném prostoru System Slouží pro ukládání řetězců a práci s nimi Délku řetězce (počet znaků) lze získat pomocí vlastnosti Length Obsahuje mimo jiné přetížený operátor: –+ pro zřetězení (spojení) dvou řetězců –== pro porovnání dvou řetězců na rovnost Poskytuje také sadu metod, např.: –Compare, CompareOrdinal : lexikograficky porovnává řetězce se (bez) zohledně- ním (zohlednění) místního jazykového nastavení

13/04/20156 Třída String (2) –Format : nahrazuje formátovací značky ( {0}, {1} apod.) v ře- tězci hodnotami dalších parametrů –IndexOf, LastIndexOf : najde první (poslední) výskyt podřetězce nebo znaku v řetězci –Insert : vloží (od zadané pozice) podřetězec do řetězce –PadLeft, PadRight : doplní zleva (zprava) řetězec opakováním daného znaku –Remove : vymaže část řetězce

13/04/20157 Třída String (3) –Replace : nahradí výskyty daného řetězce zadaným řetězcem nebo znakem –Split : rozdělí řetězec na podřetězce k rozdělení dojde v místech nalezení zadaného znaku –Substring : vrátí podřetězec začínající na zadané pozici v řetězci –ToLower, ToUpper : převede řetězec na malá (velká) písmena –TrimStart, TrimEnd, Trim : odstraní ze začátku (konce, začátku i konce) řetězce mezery

13/04/20158 Třída String (4) Poznámky: –řetězec reprezentovaný třídou string je neměn- ný (immutable)  metody manipulující s řetěz- cem vytvářejí novou instanci –znaky na dané pozici (indexu) se chovají jako read-only, tj. není možné provést přiřazení (zápis) znaku na zadanou pozici, např zápis.: string s = ”Hello world”; s[1] = ’a’; //nelze způsobí chybu

13/04/20159 Třída StringBuilder (1) Definována ve jmenném prostoru System.Text Při úpravě řetězců reprezentovaných třídou StringBuilder nedochází k vytváření nové instance, ale upravuje se stávající obsah Nová paměť je alokována pouze v případě, že po vykonané operaci řetězec přesahuje speci- fikovanou kapacitu Vykazuje větší efektivitu při operacích jako jsou např. zřetězení řetězců, náhrada části řetězce, vkládání znaků do řetězce apod.

13/04/ Třída StringBuilder (2) Poskytuje např. metody: –Append : připojení řetězce –Insert : vložení řetězce –Remove : odstranění znaků z řetězce –Replace : nahrazení výskytu znaku nebo podřetězce jiným zna- kem nebo podřetězcem –ToString : vrací obsah řetězce přetypovaný na string

13/04/ Třída StringBuilder (3) Poznámky: –třída StringBuilder definuje také vlastnosti: Length : –zpřístupňuje aktuální délku řetězce Capacity : –určuje maximální počet znaků, pro něž je v současné instanci alokované paměťové místo –u instancí třídy StringBuilder lze přiřadit znak na zadaný index (pozici)

13/04/ Struktury (1) Hodnotové typy, které definujeme pomocí klíčového slova struct Mohou obsahovat stejné členy jako třídy Na rozdíl od tříd mají následující omezení, která vyplývají z podstaty hodnotových typů: –vždy mají výchozí konstruktor (bez parametrů), který: nelze předefinovat nastaví všechny datové položky (členské proměnné): –hodnotových typů na implicitní (defaultní) hodnotu: 0, 0.0 pro číselné typy false pro typ bool ’\0’ pro typ char –referenčních typů na hodnotu null

13/04/ Struktury (2) –libovolný jiný konstruktor, který nezabezpečuje inicializaci (nastavení) všech členských proměn- ných musí volat konstruktor bezparametrický (po- mocí this() ) poznámka: použití this() je nutné i v případě, že konstruktor inicializuje členské proměnné pomocí vlastností –nelze v době definice inicializovat členské pro- měnné (vyjma statických) –nemohou dědit, ale mohou implementovat rozhra- ní

13/04/2015 Struktury (3) Příklad: struct Point { public int X { get; set; } public int Y { get; set; } public Point(int x, int y) : this() { X = x; Y = y; } } class Dog { public Color Color { get; set; } public Dog(Color color) { Color = color; } }

13/04/ Struktury (4) [4, 3] [0, 0] pt1 pt2 dog1 dog2 N/A pt1 = new Point(4, 3); pt2 = new Point() dog1 = new Dog(Color.White); N/A pt1 pt2 dog1 dog2 N/A Point pt1; Point pt2; Dog dog1; Dog dog2;

13/04/ Struktury (5) [4, 3] [9, 1] pt1 pt2 dog1 dog2 pt2.X = 9; pt2.Y = 1; dog2.Color = Color.Gray; [4, 3] pt1 pt2 dog1 dog2 pt2 = pt1; dog2 = dog1;

13/04/ Generické typy (1) Generické typy (generika) umožňují psát prog- ramy, které používají parametrizované typy Parametrizované typy jsou v době použití na- hrazeny typy konkrétními Vhodné v případech, kdy se stejný kód opaku- je pro různé datové typy  lepší znovupouži- telnost Zabezpečují silnou typovou kontrolu v době překladu zdrojového kódu

13/04/ Generické typy (2) Generický typ ( T ) se zapisuje za název defino- vaného objektu mezi symboly ( ) V rámci jedné definice je možné použít i více parametrizovaných typů ( ) V jazyku C# lze pomocí generik definovat: –třídy –struktury –rozhraní –metody –delegáty

13/04/ Generické typy (3) Příklad definice generické metody: static void Swap (ref T p1, ref T p2) { T temp; temp = p1; p1 = p2; p2 = temp; } Příklad použití: int a = 10, b = 20; double x = ; y = ; Swap (ref a, ref b); Swap (ref x, ref y);

13/04/ Generické typy (4) Příklad definice generické třídy: class Stack { private T[] items; private int count; public Stack (int n) {…} public void Push(T item) {…} public T Pop() {…} } Příklad použití: Stack stack = new Stack (10); stack.Push(3); int x = stack.Pop();

13/04/ Generické typy (5) Na parametrizovaný typ mohou být kladena omezení (zapisována) pomocí klíčového slova where : –where T : struct : typ T musí být hodnotový typ –where T : class : typ T musí být referenční typ může se jednat o třídu, rozhraní, delegáta nebo pole –where T : new() : typ T musí mít veřejný konstruktor bez parametrů je-li toto omezení použito v kombinaci s ostatními, pak musí být uvedeno jako poslední

13/04/ Generické typy (6) –where T : class_name : typ T musí být odvozen ze specifikované třídy –where T : interface_name : typ T musí implementovat dané rozhraní je možné specifikovat několik těchto omezení najednou Omezení parametrizovaných typů jsou zapiso- vána v záhlaví třídy za jejím názvem Příklad: class MyClass where T : class, IComparable where U : struct { … }