Nové prvky jazyka C# 2.0
|
|
- Hynek Navrátil
- před 7 lety
- Počet zobrazení:
Transkript
1 Nové prvky jazyka C# 2.0 Aleš Keprt Verze 2006 Katedra informatiky Univerzita Palackého, Olomouc
2 Verze jazyka C# Specifikace C# není omezena jen na.net Zatím všechny implementace C# jsou v rámci platformy.net Verze: C# 1.0 pro.net 1.0 Visual C# 2002 C# 1.1 pro.net 1.1 Visual C# 2003 C# 2.0 pro.net 2.0 Visual C# /54
3 Třináct nových prvků jazyka C# 1. Generické typy a metody 2. Iterátory 3. Částečně deklarované třídy 4. Nulovatelné typy 5. Bezejmenné metody, vnější proměnné 6. Operátor :: 7. Statické třídy 8. Zástupná jména seskupení 9. Odlišná přístupová práva pro get a set 10. Kovariance a kontravariance 11. Pole pevné délky 12. Spřátelená seskupení 13. Nevypisování varovných hlášení 3/54
4 1. Generické typy a metody Umožňují větší rozsah re-use Vhodné pro případy, kde se stejný kód opakuje pro různé datové typy Generické typy a metody jsou jakési vzory, jejichž instance jsou teprve skutečnými typy a metodami Pozn.: typy = třídy, struktury, rozhraní 4/54
5 Příklad generická funkce funkce pro záměnu hodnot dvou proměnných void swap<t>(ref T a, ref T b) { T c = a; a = b; T je jméno typového parametru b = c; } Použití: int a,b; swap<int>(ref a, ref b); swap(ref a, ref b); Zde jsme za T dosadili konkrétní typ int Typová inference (překladač rozumí, že tam má být <int>)
6 Příklad jednoduchý zásobník class Stack<T> { T[] data; int pos; public Stack() { data = new T[10]; pos = 0; } public void push(t value) { data[pos++] = value; if(pos >= data.length) pos = 0; } public T pop() { if(pos==0) pos = data.length; return data[--pos]; } 6/54
7 Příklad použití zásobníku Stack<string> s = new Stack<string>(); Výhody: Silná typová kontrola Bezpečnější kód Rychlejší kód (u hodnotových typů) Praktické důsledky na vývoj softwaru: Méně chyb Rychlejší vývoj Levnější vývoj 7/54
8 Kompilace generického kódu Kompilace probíhá jinak než v C++ Každý hodnotový typ má vlastní kód Všechny referenční typy sdílí jednu společnou instanci kódu Důvod: Samotná reference je vždy stejná Důsledek: Kratší programy 8/54
9 Omezení typových parametrů Základní operace s typovými parametry: Přiřazení Porovnání s null Volání metod třídy System.Object Ostatní jen s použitím klauzule where Klauzule where určuje, co vše typový parametr podporuje 9/54
10 where volání metod Metody, které chceme volat, umístíme do rozhraní Uvedeme požadavek where T:MyInterface Příklad: Generická metoda test_any() volá na svém parametru metodu test(): interface ITestable { void test(); } void test_any<t>(t obj) where T : ITestable { obj.test(); } 10/54
11 where vytváření nových objektů Uvedeme požadavek T:new() T create<t>() where T:new() { } return new T(); Použití: MyClass a = create<myclass>(); Platí jen pro konstruktor bez parametrů Není nutno používat při vytváření polí 11/54
12 where omezení na pouze hodnotové nebo referenční typy Omezení na referenční typy: class RefOnly<T> where T : class {...} Můžeme pak používat operátor as: var as Type Omezení na hodnotové typy: class ValueOnly<T>where T : struct {...} Znemožní porovnání s null struct zastupuje všechny hodnotové typy 12/54
13 where vícenásobná omezení Je možno uvádět více typových parametrů Lze definovat vztahy mezi parametry Příklad ukazuje požadavek na dědičnost: class MyClass<A, B, C> } where A : B,new() where B : C { vícenásobná omezení oddělena čárkou B a C jsou zde odhalené (naked) parametry Mezi dvěma where se nepíše žádný oddělovač Omezení new() musí být v seznamu poslední 13/54
14 Dědičnost zakázané konstrukce Typový parametr nemůže být předkem Následující příklad nefunguje: class Outer<T> { } class Inner : T {} 14/54
15 Dědičnost povolené konstrukce BaseType nám poslouží jako bázová třída class BaseType { } Tato generická třída je úplně samostatnou třídou! class BaseType<T> { } Type1 dědí konkrétní třídu BaseType class Type1 : BaseType { } Chyba! Nelze zde zjistit typ parametru T class Type2 : BaseType<T> { } Type3 je generická třída dědící z BaseType<T> class Type3<T> : BaseType<T> { } Type4 je generická třída dědící z BaseType<int> class Type4<T> : BaseType<int> { } 15/54
16 Typový parametr generické třídy lze používat ve všech jejích metodách (viz příklad se zásobníkem) 16/54 Co všechno může být generické Třídy (class) Struktury (struct) Rozhraní (interface) Metody Delegáty
17 Výchozí parametry (default) Slovo default zastupuje výchozí hodnotu typu int a = default(int); MyClass b = default(myclass); MyStruct c = default(mystruct); Použitelné i mimo generické programování Výchozí hodnota třídy je null Výchozí hodnota číselného typu je binární nula Výchozí hodnota struktury se zavádí rekurzivně jako výchozí hodnota všech jejích složek 17/54
18 (konec 1.části) 18/54
19 2. Iterátory Iterátor je programový blok obsahující příkaz yield Iterátory mají stejný účel jako enumerátory (viz příkaz foreach) Psát iterátory je MNOHEM snazší 19/54
20 Iterátory - příklad Přidáme podporu do našeho zásobníku: public IEnumerator<T> GetEnumerator(){ } } for(int i=0; i<pos; i++) { } yield return data[i]; A to je vše! tento iterátor je generický zde postupně jakoby vracíme jednotlivé hodnoty 20/54
21 Iterátory - implementace 1. Na začátku je volána metoda s.getenumerator(). 2. V místě příkazu yield je provádění kódu pozastaveno, je uchován kontext a hodnota data[i] je dosazena do proměnné v 3. Je provedeno tělo příkazu foreach(typ v in ). 4. Kontext je přepnut zpět do metody GetEnumerator a vykonávání pokračuje za příkazem yield opět až po další příkaz yield (můžeme tedy také umístit několik yield na různá místa v metodě). 5. Body 2 až 4 se opakují, dokud neskončí provádění metody GetEnumerator. Tím je ukončeno i provádění foreach. 21/54
22 Pojmenovaný iterátor Vytvoříme iterátor vracející pro dané N mocniny dvojky od 2 1 až po 2 N. IEnumerable Power(int N) { } int counter = 0; int result = 1; while(counter++ < N) { result *= 2; yield return result; } jméno iterátoru 22/54
23 Použití iterátorů Iterátory se používají stejně jako enumerátory Nepojmenovaný iterátor: foreach(string v in mystack) { } Console.WriteLine(v); Pojmenovaný iterátor: foreach(int i in Power(10)) { } Console.WriteLine(i); jméno objektu jméno metody 23/54
24 Předčasné ukončení iterace Příkaz yield return x; vrací další hodnotu Příkaz yield break; ukončí iteraci (obyčejné return; použít nelze) 24/54
25 3. Částečně deklarované třídy Třídu lze nyní deklarovat ve více souborech partial class MyClass : BaseClass, Interface1 { } partial class Inner<T> { } T a; první soubor partial class MyClass : Interface2 { partial class Inner<T> { T b; } } druhý soubor 25/54
26 Visual Studio 2005 používá tento konstrukt pro oddělení kódu formulářů na část generovanou v IDE a část psanou ručně 26/54 Pravidla částečných deklarací Je-li třída partial, musí tak být deklarována ve všech jejích částech Všechny části musejí být v jednom modulu Jména typů, generických parametrů, přístupová práva a modifikátory musejí ve všech částech souhlasit
27 4. Nulovatelné typy Hodnotové typy nemohou být null Např. při práci s SQL by se to však hodilo Nulovatelné typy jsou hodnotové typy, jimž lze přiřadit také null Deklarace: Přidáme otazník za název typu int? x; Console.WriteLine(x==null? "null" : x.value.tostring()); if(x.hasvalue) Console.WriteLine("x má hodnotu"); 27/54
28 Implementace nulovatelných typů Jsou to instance generického typu T? je totéž jako System.Nullable<T> Vlastnost HasValue vrací true/false Vlastnost Value vyvolá výjimku při null Konverze T? na T pouze explicitně Konverze T na T? je implicitní T? má všechny operátory jako T 28/54
29 Nulovatelné typy operace s null Výsledkem operací s null je vždy null Operátor?? umožní dosadit výchozí hodnotu int? x; int y = x?? -1; Je to totéž jako if(x==null) y=-1; else y=x; Operátor?? lze používat i bez nulovatelných typů Typ bool? je specifický poskytuje trojhodnotovou logiku (chová se stejně jako SQL typ Boolean) 29/54
30 5. Bezejmenné (anonymní) metody Přiblížení funkcionálním jazykům Vhodné pro psaní delegátů button.click += delegate {MessageBox.Show("Click!");}; 30/54
31 Vnější proměnné Bezejmenná metoda je samostatným blokem kódu, ale sdílí proměnné s nadřazeným blokem! int a = 0; button.click += delegate {MessageBox.Show((++a).ToString());}; a = 23; V tomto příkladu se všechno odkazuje na jedinou instanci hodnotové proměnné a Parametry ve formě ref a out se nesdílí 31/54
32 6. Operátor :: Zpřístupňuje (nejen) globální prostor jmen int System,Console; proměnná System blokuje prostor jmen System //Následující řádek fungovat nebude System.Console.WriteLine("Nefunguje!"); //Použijeme operátor :: global::system.console.writeline("ok"); Vlevo uvádíme slovo global nebo zástupné jméno prostoru jmen (namespace alias) 32/54
33 7. Statické třídy Píšeme jednoduše static class... Statická třída: Má jen statické součásti Nemá konstruktor (statický mít může) Nelze vytvářet instance Je zapečetěná (sealed nelze ji dědit) 33/54
34 8. Zástupná jména seskupení Potřebujeme odlišit dvě verze stejné komponenty Použijeme parametr překladače /r /r:komponenta_verze1=grid.dll /r:komponenta_verze2=grid20.dll V kódu si tyto komponenty zpřístupníme extern alias Komponenta_verze1; extern alias Komponenta_verze2; 34/54
35 9. Odlišná přístupová práva pro get a set Nově mohou mít get a set odlišná práva public string Name { get {return name;} } public protected set {name = value;} omezeno na protected Pravidla: 1. Vnitřní modifikátor musí být více restriktivní 2. Modifikovat lze jen jedno z get/set, ne obojí 35/54
36 Odlišná přístupová práva pro get a set Implementace rozhraní Implementace rozhraní není děděním Akcesor, který není součástí rozhraní, lze doplnit a nastavit mu jiná přístupová práva public interface MyInterface { } int MyProperty {get;} public class MyClass : MyInterface { } public int MyProperty { } get {...} protected set {...} public 36/54
37 10. Kovariance a kontravariance Obojí se týká delegátů Kovariance umožňuje použít metodu, jejíž návratový typ je potomkem návratového typu deklarovaného v delegátu Kontravariance umožňuje použít metodu s parametry, které jsou předky parametrů deklarovaných v delegátu 37/54
38 Kovariance a kontravariance příklad class A {} class B : A {} class C : B {} class Test { delegate B Metoda(B param); B MetodaA(A param) {...} C MetodaC(B param) {...} public Test() { Metoda ma = new Metoda(MetodaA); Metoda mc = new Metoda(MetodaC); } } definujeme strom dědičnosti delegát používá typ B A místo B: kontravariance C místo B: kovariance 38/54
39 11. Pole pevné délky V unsafe bloku lze deklarovat pole pevné délky, které je fyzicky uloženo na místě deklarace Je to hodnotový typ, neprovádí se kontrola přetečení bufferu atd. struct MyArray { } unsafe public fixed char path[256]; private int reserved; 39/54
40 12. Spřátelená seskupení Chceme-li, aby seskupení (assembly) B mělo přístup do všech (i neveřejných) součástí seskupení A, pak v seskupení A použijeme následující atribut: [assembly:internalsvisibleto ("B",PublicKeyToken="...")] Public key token je 8bajtová hodnota sloužící k rozlišení dvou stejně pojmenovaných seskupení (od různých autorů apod.) 40/54
41 13. Nevypisování varovných hlášení Vypisování varovných hlášení lze ovlivnit přímo v kódu, použitím nové direktivy #pragma warning disable 414,3021 #pragma warning restore 414,3021 Příklad zakáže a pak obnoví varovná hlášení číslo 414 a 3021 Tento konstrukt nelze použít pro povolení hlášení zakázaných nastavením překladače 41/54
42 (konec 2.části) 42/54
43 Analýza Celkem 13 nových prvků v jazyku Některé vyvolaly bouřlivé diskuze Žádná novinka není povinná, dosavadní kód bude i nadále fungovat 43/54
44 Analýza generické typy Je to nejvýznamnější novinka Není to stejné jako šablony v C++ Neříká se tomu šablony, ani templaty Vliv na knihovnu tříd BCL, zvláště kolekce Širší re-use, lepší typová kontrola Závěr: Je to velmi pozitivní věc 44/54
45 Analýza nulovatelné typy Zjednodušení práce s SQL Teze: Je to půlkrok k regulárním výrazům int? = žádný nebo jeden int int! = právě jeden int int+ = jeden nebo více intů int* = libovolný počet intů Problémy: Kolize int* s unsafe pointery Stále nám chybí i opak = nenulovatelné typy 45/54
46 Analýza zjednodušení práce Některé nové konstrukty zjednodušují práci: Iterátory Bezejmenné metody Odlišná přístupová prává pro get a set Kovariance a kontravariance 46/54
47 Analýza další novinky Operátor :: zpřístupní global namespace Částečné deklarace zpřehlední kód Ostatní novinky jsou již méně důležité, spíše kosmetické 47/54
48 (konec 3.části) 48/54
49 Novinky ve vývojovém prostředí (stručný přehled) 1. Refactoring kódu 2. Expanze podle vzoru 3. Chytrá kontextová nápověda v debuggeru 4. Chytřejší sledování kontextu v IntelliSense 5. Možnost zobrazit metadata jako zdroják a mnoho dalšího 49/54
50 1. Refactoring Rename Přejmenuje prvek v deklaraci i volání Bezpečnější, než klasické textové find & replace Extract method Z části kódu udělá samostatnou metodu Encapsulate field Datový prvek (proměnnou) zabalí do property Změní kód používající proměnnou na property 50/54
51 Refactoring (pokračování) Extract interface Vytvoří rozhraní podle existující třídy Promote local variable to parameter Povýší lokální proměnou na parametr volání Remove parameters Odstraní parametry z deklarace i volání Reorder parameters Změní pořadí parametrů v deklaraci i volání 51/54
52 2. Expanze podle vzoru Je to programování myší aneb Insert code snippet Tři možné aktivace: Lokální menu (pravým tlačítkem) Klávesová zkratka Ctrl+K,X Zadat název snippetu a zmáčknout 2x Tab Příklad foreach: foreach(object var in collection_to_loop) { } 52/54
53 Novinky v knihovně tříd BCL Base Class Library obsahuje také mnoho nových prvků (nad rámec této přednášky) 53/54
54 Mgr. Aleš Keprt, Ph.D., Vytvořeno pro potřeby přednášky na UP Olomouc. Tento text není určen pro samostudium, ale jen jako vodítko pro přednášku, takže jeho obsah se může čtenáři zdát stručný, nekompletní či možná i chybný. Použití je povoleno jen na vlastní nebezpečí. V případě dalšího šíření tohoto dokumentu nebo i jeho kterékoliv části je NUTNO vždy uvést původního autora a odkaz na původní dokument. Komentáře můžete posílat em autorovi (adresu najdete pomocí Googlu). 54
Nové prvky jazyka Visual C# 2.0 (2005)
Nové prvky jazyka Visual C# 2.0 (2005) Aleš Keprt Katedra informatiky, Fakulta elektrotechniky a informatiky VŠB Technická Univerzita Ostrava 17. listopadu 15, 708 33, Ostrava-Poruba, Česká Republika Ales@Keprt.cz
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,
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 =
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;
Ú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
NULOVATELNÉ TYPY POD LUPOU
NULOVATELNÉ TYPY POD LUPOU Aleš Keprt Katedra informatiky, FEI, VŠB Technická Univerzita Ostrava 17.listopadu 15, 708 00 Ostrava Poruba Aley@Keprt.cz Abstrakt Nová verze jazyka C# od Microsoftu obsahuje
Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15
Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15 KAPITOLA 1 Úvod do programo vání v jazyce C++ 17 Základní pojmy 17 Proměnné a konstanty 18 Typy příkazů 18 IDE integrované vývojové
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č
Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí
Kolekce obecně Seznamy a iterátory 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 Kolekce ::= homogenní sada prvků
Programování v C++ 2, 4. cvičení
Programování v C++ 2, 4. cvičení statické atributy a metody, konstruktory 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled Přístupová práva
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
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
Úvod do programovacích jazyků (Java)
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích
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í
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
Komponenty v.net. Obsah přednášky
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 Rozdíl mezi COM a.net Distribuce komponent Programování
Pokud neuvedeme override, vznikne v synu nová (nevirtuální) metoda (a pochopitelně se nezavolá, jak bychom
Poznámky k virtuálním metodám aneb co když zkoušíme překladač zlobit... Pokud neuvedeme override, vznikne v synu nová (nevirtuální) metoda (a pochopitelně se nezavolá, jak bychom chtěli). Pokud neuvedeme
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,
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ýč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
Programování v C++ 1, 5. cvičení
Programování v C++ 1, 5. cvičení konstruktory, nevirtuální dědění 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 3 Shrnutí minule procvičené
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á
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
Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky
JAVA Třídy Definice třídy úplná definice [public] [abstract] [final] class Jmeno [extends Predek] [impelements SeznamInterfacu] {... // telo tridy public veřejná třída abstract nesmí být vytvářeny instance
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
Úvod do programovacích jazyků (Java)
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích
Ú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
Jazyk C# (seminář 6)
Jazyk C# (seminář 6) Pavel Procházka KMI 29. října 2014 Delegát motivace Delegáty a události Jak docílit v C# funkcionální práce s metodami v C je to pomocí pointerů na funkce. Proč to v C# nejde pomocí
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í
8 Třídy, objekty, metody, předávání argumentů metod
8 Třídy, objekty, metody, předávání argumentů metod 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 třídám a objektům, instančním
Základy objektové orientace I. Únor 2010
Seminář Java Základy objektové orientace I Radek Kočí Fakulta informačních technologií VUT Únor 2010 Radek Kočí Seminář Java Základy OO (1) 1/ 20 Téma přednášky Charakteristika objektově orientovaných
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
Programování v C++ 1, 6. cvičení
Programování v C++ 1, 6. cvičení dědičnost, polymorfismus 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 3 Shrnutí minule procvičené
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.
Informatika 10. 9. 2013 Jméno a příjmení Rodné číslo 1) Napište algoritmus pro rychlé třídění (quicksort). 2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus
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
PB161 Programování v jazyce C++ Přednáška 7
PB161 Programování v jazyce C++ Přednáška 7 Statické položky tříd Základy OOP Nikola Beneš 6. listopadu 2018 PB161 přednáška 7: static, základy OOP 6. listopadu 2018 1 / 21 Klíčové slovo static Znáte z
NPRG031 Programování II 1 / :25:46
NPRG031 Programování II 1 / 26 28. 2. 2018 11:25:46 Objekty Svět se skládá z objektů! konkrétní x abstraktní hmatatelné x nehmatatelné (letadlo) x (chyba v programu) Objekty mohou obsahovat jiné objekty
NMIN201 Objektově orientované programování 1 / :36:09
NMIN201 Objektově orientované programování 1 / 26 8.10.2013 15:36:09 Objekty Svět se skládá z objektů! konkrétní x abstraktní hmatatelné x nehmatatelné (letadlo) x (chyba v programu) Objekty mohou obsahovat
PB161 Programování v jazyce C++ Přednáška 7
PB161 Programování v jazyce C++ Přednáška 7 Statické položky tříd Základy OOP Nikola Beneš 6. listopadu 2018 PB161 přednáška 7: static, základy OOP 6. listopadu 2018 1 / 21 Klíčové slovo static Znáte z
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é
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ý
Jazyk C# (seminář 3)
Jazyk C# (seminář 3) Pavel Procházka KMI October 8, 2014 Motivace Největší využití v programování okenních aplikací a GUI knihoven. Data reprezentujeme pomocí objektů (tříd), máme tedy ucelený pohled na
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
Osnova přednášky. Programové prostředky řízení Úvod do C# II. Přístup ke členům. Členy (Members)
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
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í
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,
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
Tematický celek 03 3.1 Proměnné Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace. 3.1.1 Deklarace proměnných Dim jméno_proměnné [As typ] - deklarace uvnitř procedury platí pouze pro
Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
1 - Úvod do platformy.net. IW5 - Programování v.net a C#
1 - Úvod do platformy.net IW5 - Programování v.net a C# Strana 1 Obsah přednášky Objektově orientované paradigma.net Framework Základní rysy jazyka C# Strana 2 Objektová orientace C# implementuje základní
Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
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
Využití OOP v praxi -- Knihovna PHP -- Interval.cz
Page 1 of 6 Knihovna PHP Využití OOP v praxi Po dlouhé teorii přichází na řadu praxe. V následujícím textu si vysvětlíme možnosti přístupu k databázi pomocí různých vzorů objektově orientovaného programování
Seminář Java IV p.1/38
Seminář Java IV Seminář Java IV p.1/38 Rekapitulace Deklarace tříd Proměnné, metody, konstruktory, modifikátory přístupu Datové typy primitivní, objektové, pole Dědičnost Řídící konstrukce Podmínky, cykly
Assembler - 5.část. poslední změna této stránky: Zpět
1 z 5 19.2.2007 7:52 Assembler - 5.část poslední změna této stránky: 9.2.2007 1. Pseudoinstrukce a direktivy Zpět Kromě instrukcí můžete v Assembleru psát také další konstrukce, které se obšem nepřekládají
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
Nové prvky v C# 3.0. David Keprt
Nové prvky v C# 3.0 David Keprt revize Aleš Keprt 11.12.2006 Úvod Obsahem této prezentace je představení nových konstrukcí, které do jazyka C# přináší verze 3.0. Mezi ně patří: Klíčové slovo var Nové možnosti
Zapouzdření. Tomáš Pitner, upravil Marek Šabo
Zapouzdření Tomáš Pitner, upravil Marek Šabo Co je zapouzdření Naprosto zásadní vlastnost objektového přístupu, možná nejzásadnější Jde o spojení dat a práce s nimi do jednoho celku - objektu Data jsou
Abstraktní třídy, polymorfní struktury
Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní třídy, polymorfní struktury BI-PA2, 2011, Přednáška 9 1/32 Abstraktní třídy, polymorfní struktury Ing. Josef Vogel, CSc Katedra softwarového inženýrství
7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd
7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd Algoritmizace (Y36ALG), Šumperk - 7. přednáška 1 Třída jako zdroj funkcionality Třída v jazyku Java je programová jednotka tvořená
IRAE 07/08 Přednáška č. 1
Úvod do předmětu OOP Objekt Proč OOP? Literatura, osnova předmětu viz. cvičení Základní prvek OOP sw inženýrství = model reálných objektů (věcí) člověk, auto, okno (ve windows), slovník, = model abstraktní
Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ
MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ 1) PROGRAM, ZDROJOVÝ KÓD, PŘEKLAD PROGRAMU 3 2) HISTORIE TVORBY PROGRAMŮ 3 3) SYNTAXE A SÉMANTIKA 3 4) SPECIFIKACE
IRAE 07/08 Přednáška č. 2. atr1 atr2. atr1 atr2 -33
Objekt jako proměnná Objekty a metody Objekt = proměnná referenčního typu vznik pomocí new, chování viz pole jako referenční proměnná minulý semestr Stack Heap objekt ref this 10 20 atr1 atr2 jinyobjekt
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
Jazyk C# (seminář 3)
Jazyk C# (seminář 3) Pavel Procházka KMI 15. října 2014 Motivace Představme si problém, jak napsat seznam v C# class IntList{... int value; public void IntList( int val, List next ){... V čem je to nevýhodné?
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()
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).
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
<surface name="pozadi" file="obrazky/pozadi/pozadi.png"/> ****************************************************************************
zdroje/zdroje.xml
Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky
JAVA Třídy Definice třídy úplná definice [public] [abstract] [final] class Jmeno [extends Predek] [impelements SeznamInterfacu] {... // telo tridy public veřejná třída abstract nesmí být vytvářeny instance
Obsah přednášky. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace UML. Co je diagram tříd. Ing. Ondřej Guth
Evropský sociální fond. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace Ing. Ondřej Guth Katedra teoretické informatiky Fakulta informačních technologií České vysoké učení technické v Praze
Dědičnost (inheritance)
Dědičnost (inheritance) Úvod Umožňuje objektům převzít (zdědit) členy jiných objektů a pouze je rozšířit o Auto: lze odvodit Vztah je osobní auto, cisterna jsou auta Základní pojmy Bázová třída (rodič)
Datové struktury. alg12 1
Datové struktury Jedna z klasických knih o programování (autor prof. Wirth) má název Algorithms + Data structures = Programs Datová struktura je množina dat (prvků, složek, datových objektů), pro kterou
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
Pokročilé programování v jazyce C pro chemiky (C3220) Pokročilá témata jazyka C++
Pokročilé programování v jazyce C pro chemiky (C3220) Pokročilá témata jazyka C++ Prostory jmen U programů mohou někdy nastat kolize mezi jmény (tříd, funkcí, globálních proměnných atd.) pokud v různých
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
Objektové programování
Objektové programování - přináší nové možnosti a styl programování - vytváří nový datový typ, který umí vše co standardní datové typy + to co ho naučíme - překladač se k tomuto typu chová stejně jako k
Dynamicky vázané metody. Pozdní vazba, virtuální metody
Dynamicky vázané metody Pozdní vazba, virtuální metody Motivace... class TBod protected: float x,y; public: int vrat_pocet_bodu() return 1; ; od třídy TBod odvodíme: class TUsecka: public TBod protected:
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í
Základy programování (IZP)
Základy programování (IZP) Šesté počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Petr Veigend, iveigend@fit.vutbr.cz 6. týden
Úvod do programování - Java. Cvičení č.4
Úvod do programování - Java Cvičení č.4 1 Sekvence (posloupnost) Sekvence je tvořena posloupností jednoho nebo více příkazů, které se provádějí v pevně daném pořadí. Příkaz se začne provádět až po ukončení
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
IRAE 07/08 Přednáška č. 7. Začátek (head)
Fronta (Queue) FIFO First In First Out (první dovnitř první ven) Vložení položky (Enqueue) Vyjmutí položky (Dequeue) Přidávání prvků Konec (Tail) Začátek (head) na jedné straně (konec) Odebírání prvků
Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo
Statické proměnné a metody Tomáš Pitner, upravil Marek Šabo Úvod Se statickou metodou jsme se setkali už u úplně prvního programu - Hello, world! public class Demo { public static void main(string[] args)
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í
Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
Datové typy v Javě. Tomáš Pitner, upravil Marek Šabo
Datové typy v Javě Tomáš Pitner, upravil Marek Šabo Úvod k datovým typům v Javě Existují dvě základní kategorie datových typů: primitivní a objektové Primitivní v proměnné je uložena přímo hodnota např.
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í
Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
Programování v C++, 2. cvičení
Programování v C++, 2. cvičení 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 Operátory new a delete 2 3 Operátory new a delete minule
Java Výjimky Java, zimní semestr
Java Výjimky 1 Výjimky (exceptions) hlášení a ošetření chyb výjimka signalizuje nějaký chybový stav výjimka = instance třídy java.lang.throwable dvě podtřídy java.lang.error a java.lang.exception konkrétní
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ň
IB111 Programování a algoritmizace. Objektově orientované programování (OOP)
IB111 Programování a algoritmizace Objektově orientované programování (OOP) OP a OOP Objekt Kombinuje data a funkce a poskytuje určité rozhraní. OP = objektové programování Vše musí být objekty Např. Smalltalk,
4. ZÁKLADNÍ POJMY Z OBJEKTOVĚ ORIENTOVANÉHO PROGRAMOVÁNÍ
4. ZÁKLADNÍ POJMY Z OBJEKTOVĚ ORIENTOVANÉHO PROGRAMOVÁNÍ OBJEKT Program v Javě je staticky strukturován na třídy, jejichž instance (objekty) za běhu dynamicky programu vznikají a zanikají. Objekt je nejprve
Ú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í
Základní datové struktury
Základní datové struktury Martin Trnečka Katedra informatiky, Přírodovědecká fakulta Univerzita Palackého v Olomouci 4. listopadu 2013 Martin Trnečka (UPOL) Algoritmická matematika 1 4. listopadu 2013
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
Software602 Form Designer
Software602 Form Designer Javascriptový vyhodnocovací mechanismus výrazů Aktualizováno: 17. 3. 2017 Software602 a.s. Hornokrčská 15 140 00 Praha 4 tel: 222 011 602 web: www.602.cz e-mail: info@602.cz ID
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
Programové konvence, dokumentace a ladění. Programování II 2. přednáška Alena Buchalcevová
Programové konvence, dokumentace a ladění 2. přednáška Alena Buchalcevová Proč dodržovat programové konvence? velkou část životního cyklu softwaru tvoří údržba údržbu provádí většinou někdo jiný než autor