IW5 - Programování v.net a C# 4 Pokročilé konstrukce C#

Podobné dokumenty
Dědičnost (inheritance)

IRAE 07/08 Přednáška č. 7. Začátek (head)

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

Generické programování

Semin aˇr Java V yjimky Radek Ko ˇc ı Fakulta informaˇcn ıch technologi ı VUT Unor 2008 Radek Koˇc ı Semin aˇr Java V yjimky 1/ 25

Komponenty v.net. Obsah přednášky

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

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

KTE / ZPE Informační technologie

Zápis programu v jazyce C#

Výjimky. v C# a Javě

29. Výjimky, jejich vznik, vyhození, odchyt a zpracování. (A7B36PVJ)

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

1 - Úvod do platformy.net. IW5 - Programování v.net a C#

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.

Jazyk C# (seminář 6)

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 3.4.

10. března 2015, Brno Připravil: David Procházka. Programovací jazyk C++

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

Java - výjimky. private void vstup() throws IOException {... }

IRAE 07/08 Přednáška č. 2. atr1 atr2. atr1 atr2 -33

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

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

Připravil: David Procházka. Programovací jazyk C++

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

PREPROCESOR POKRAČOVÁNÍ

1. Téma 12 - Textové soubory a výjimky

Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám.

Vláknové programování část V

Úvod do programování - Java. Cvičení č.4

Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo

Pokročilé programování v jazyce C pro chemiky (C3220) Pokročilá témata jazyka C++

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Java Výjimky Java, zimní semestr

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

Úvod do programovacích jazyků (Java)

Distribuované systémy a výpočty

Desktop GUI. IW5 - Programování v.net a C# Desktop GUI

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

Jazyk C# (seminář 3)

Pro kontrolu správného formátu hodnoty N použijeme metodu try-catch.

Objektově orientované programování

Class loader. každá třída (java.lang.class) obsahuje referenci na svůj class loader. Implementace class loaderu

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

Jazyk C# (seminář 5)

Jazyk C++ II. Výjimky

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

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

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

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

Ošetřování chyb v programech

1. Programování proti rozhraní

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

Soubor jako posloupnost bytů

Typický prvek kolekce pro české řazení

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

Úvod do programovacích jazyků (Java)

Výjimky. A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické

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

OMO. 4 - Creational design patterns A. Singleton Simple Factory Factory Method Abstract Factory Prototype Builder IoC

Datové struktury. alg12 1

Výčtový typ strana 67

NA CO SI DÁT POZOR V JAVASCRIPTU? Angular.cz

Úvod do programovacích jazyků (Java)

Výjimky (exceptions), generické metody a třídy v C#

RMI Remote Method Invocation

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

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.

Algoritmizace a programování

Výjimky a ošetřování chyb v PHP. Who is General Failure and why is he reading my disk?!

Struktura třídy, operátory, jednoduché algoritmy, junit. Programování II 2. cvičení Alena Buchalcevová

Správa paměti. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta, 2016

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

Jakub Čermák Microsoft Student Partner

Jazyk C++ I. Šablony

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

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

Lambda funkce Novinky v interfaces Streamy Optional - aneb zbavujeme se null. Java 8. Ondřej Hrstka

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

Programování v Javě I. Leden 2008

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/

Dědění, polymorfismus

Distribuované systémy a výpočty

Principy objektově orientovaného programování

Teoretické minimum z PJV

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.

Chování konstruktorů a destruktorů při dědění

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 19.2.

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd

Zapouzdření. Tomáš Pitner, upravil Marek Šabo

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

Více o konstruktorech a destruktorech

Jazyk C# a platforma.net

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

UJO Framework. revoluční architektura beans. verze

Abstraktní datové typy: zásobník

typová konverze typová inference

Programování jako nástroj porozumění matematice (seriál pro web modernivyuka.cz)

Java Cvičení 01. CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics

ANT. Aplikační programování v Javě (BI-APJ) - 1 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

Transkript:

4 - Pokročilé konstrukce C# IW5 - Programování v.net a C# Strana 1

Obsah přednášky Výjimky Delegáti Události Lambda výrazy Strana 2

Výjimky a jejich zpracování Slouží k ošetření výjimečných (chybových) stavů programu kontrolovaných blokem try Eskalují se, dokud nejsou zpracovány catch blokem s odpovídajícím typovým parametrem Kontrolovaný blok může následovat blok finally, který se provede vždy try // Controled block catch (ExceptionA ex) /* Exception handling of type ExceptionA */ catch (ExceptionB ex) /* Exception handling of type ExceptionB */ finally // Cleanup block Strana 3

Výjimky a jejich zpracování catch Reaguje na daný typ výjimky. Typový parametr - pouze třída Exception nebo potomci Instanční proměnná - informace o chybě (Message, InnerException, StackTrace) 0-N catch bloků - nutné specifikovat od nejvíce specifických typů výjimek Jméno proměnné nebo celý typových paremetr je možné vynechat Zpracovávané výjimky je možné explicitně eskalovat pomocí throw; try... catch (DivideByZeroException) Console.WriteLine("Divison by zero is not allowed!"); catch (Exception excpinstance) Console.WriteLine( Error occured" + excpinstance); throw; //Escalates the exception. Upper callstack levels can catch the exception Strana 4

Výjimky a jejich zpracování finally Slouží k ošetření otevřených zdrojů (soubory, databáze, síťová spojení,...) Provede se (téměr) vždy... Po dokočení catch bloku Ve chvíli opuštení try - bloku (konec bloku, return, break, continue, goto) Je možné ho uvést i bez bloku catch (try-finally) StreamReader file = null; try file = new StreamReader(File.OpenRead(fileName)); int number = Int32.Parse(file.ReadLine()); Console.WriteLine("Number is: " + number); finally if (file!= null) file.dispose(); Strana 5

Výjimky a jejich zpracování throw throw; - Možné pouze z catch bloku, eskaluje zachycenou/zpracovávanou výjimku. throw new Exception("Message...", innerexception); ArgumentException, NullPointerException, InvalidOperationException, FormatException, FileNotFoundException, KeyNotFoundException,... StackOverflowException, OutOfMemoryException Většinou je již není možné jednoduše zpracovat Strana 6

Ošetření chyb tips&tricks Nechytejte pokemony - ošetřete specifické typy Exception. Generické zachytávání: Tam, kde je možné zotavení i z neznámé chyby Pro logování Ošetření vstupů veřejných metod ArgumentException, ArgumentNullException, ArgumentOutOfRangeException Výjimky neslouží k běžnému řížení běhu programu! Chybové stavy by měly generovat spefickou Exception (vlastní zpráva, popř. Vlastní typ Exception) Nezpracované výjimky je možné odchytit centrálně AppDomain.CurrentDomain.UnhandledException += CurrentDomainUnhandledException; Strana 7

Delegáti Delegát = objekt spravující odkaz na metodu Přiřazení metody do proměnné typu delegát vytvoří instanci delegáta Tu je možné zavolat stejně, jako metodu Definice proměnné delegáta: delegate int Transformer(int x); Kompatibilní metoda: private static int Square(int x) return x * x; Vytvoření instance delegáta: Transformer t = new Transformer(Square); Transformer t = Square; // equivalent Zavolání metody pomocí delegáta int result = t(3); Strana 8

Delegáti Mohou ukazovat na více metod: HelloWorld helloworld = Hello; helloworld += World; Lze je otestovat, zda na někoho ukazují: if (delegatevar == null) Mohou obsahovat typové parametry: delegate T Transformer<T>(T arg); Generické typy delegátů (0 až 16 parametrů) void Action<in T1, in T16>(T1 arg1, T16 arg16); TResult Func<in T1, in T15,out TResult>(T1 arg1, T16 arg16); Jsou typově kontravarintní akceptují i metody, které mají argumenty se specifičtějšími typy, než definuje delegát. Strana 9

Události implementace Implementuje broadcast/subscribe model Vnitřně využívá delegáty, ale nepublikuje všechny funkce. Definice eventu delegate void PriceChangedHandler(decimal oldprice, decimal newprice); public event PriceChangedHandler PriceChanged; Uvnitř třídy je možné pracovat s delegátem PriceChanged Vně třídy, je možné pouze provést přihlášení\odhlášení wallstreet.pricechanged += WallStreetPriceChanged Strana 10

Události vzor Předdefinovaný delegát EventHandler vhodný pro bezparametrické událost public delegate void EventHandler(object sender, EventArgs e); Existuje i generická verze, která usnadňuje implementaci událostí s vlastním typem argumentu public delegate void EventHandler<TEventArgs>(object sender, TEventArgs e); Pro vyvolání události se implementuje metoda protected virtual void OnPropertyChanged(PriceChangedEventArgs args) var handler = PriceChanged; if (handler!= null) handler(this, args); Strana 11

Události INotifyPropertyChanged Generická notifikace změn na datovém modelu Podmínka pro použití DataBinding public event PropertyChangedEventHandler PropertyChanged; protected virtual void OnPropertyChanged([CallerMemberName] string propertyname = null)... public string FirstName get return _firstname; set _firstname = value; OnPropertyChanged("FirstName"); //Property name can be ommited Strana 12

Lambda výrazy Lambda výraz nepojmenovaná metoda Zápis: (<parametry>) => <výraz> nebo <blok příkazů> Příklad: Func<int, int> squareroot = x => x * x; Func<int, int> squareroot = x => return x * x; ; Typy parametrů jsou většinou odvozené. Pokud to v dané situaci není možné je možné je specifikovat Func<int, int, int> sum = (int a, int b) => a + b; Strana 13

Lambda výrazy mapované proměnné Lambda výrazy mohou mapovat vnější proměnné (lokální proměnné i atributy třídy): int factor = 2; Func<int, int> multiplier = n => n * factor; Jejich hodnota je evaluována až při exekuci výrazu pozor na smyčky! Použití lokální promměnné ji udrží naživu po dobu platnosti lambda výrazu Pozor na memory-leak v případě reference jiných objektů. Strana 14

Děkuji za pozornost! Mgr. Siemens CT DC / Sitraff Team Olomoucká 7/9 618 00 Brno Česká republika E-mail: martin.prochaska@siemens.com Strana 15

Reference http://www.amazon.com/5-0-nutshell-the-definitive-reference/dp/1449320104 Strana 16