Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

PV178 – Úvod do vývoje v C#/.NET RNDr. Jaroslav PELIKÁN, Ph.D. katedra počítačových systémů a komunikací Fakulta informatiky Masarykovy univerzity Botanická.

Podobné prezentace


Prezentace na téma: "PV178 – Úvod do vývoje v C#/.NET RNDr. Jaroslav PELIKÁN, Ph.D. katedra počítačových systémů a komunikací Fakulta informatiky Masarykovy univerzity Botanická."— Transkript prezentace:

1 PV178 – Úvod do vývoje v C#/.NET RNDr. Jaroslav PELIKÁN, Ph.D. katedra počítačových systémů a komunikací Fakulta informatiky Masarykovy univerzity Botanická 68a, BRNO Kanc.: A209,  : +420 –

2 10/04/20152 Cíle předmětu Osvojit si základní návyky tvorby kvalitního kódu v jazyce C# Po absolvování tohoto předmětu by student měl: –znát základní kroky a techniky doprovázející proces vývoje aplikací v C#/.NET –ovládat prostředí Visual Studio 2013 –znát hlavní rysy a programové konstrukce pro- gramovacího jazyka C# –být schopen psát kvalitní objektový kód

3 10/04/20153 Organizace předmětu Rozsah (hodinová dotace): 1/2 Přednáška: –2 hodiny týdně –první polovinu semestru (7 týdnů) Cvičení: –2 hodiny týdně –celý semestr Ve druhé polovině semestru jsou plánovány přednášky (vedené dalšími vyučujícími) pro zájemce na vybraná témata

4 10/04/20154 Používané technologie Výuka probíhá s využitím: –programovacího jazyka C# –platformy MS.NET Framework –vývojového prostředí MS Visual Studio 2013 studenti Fakulty informatiky mohou některou z plných verzí (Professional, Premium, Ultimate) získat přes MSDN Academic Alliance

5 10/04/20155 Vstupní předpoklady Znalost: –základů programování a algoritmizace –syntaxe programovacího jazyka C/C++ nebo Java –základů objektově orientovaného programování – na úrovni předmětu: PB161 Programování v jazyce C++ nebo PB162 Programování v jazyce Java

6 10/04/20156 Osnova (1).NET Framework a jeho architektura Charakteristika jazyka C# Typový systém v.NET: –předdefinované typy –hodnotové typy –referenční typy –nulovatelné typy (null coalescing operator) –implicitně typované proměnné

7 10/04/20157 Osnova (2) Typ třída a její členy: –přístupnost ke členům třídy –datové položky –metody –konstruktory instancí – vytvoření objektu –destruktory –konstanty –statické členy třídy (metody) a statické třídy –vlastnosti Jmenné prostory

8 10/04/20158 Osnova (3) Předávání parametrů metodám: –parametry předávané hodnotou –parametry předávané odkazem –výstupní parametry Přetěžování metod Metody s proměnným počtem parametrů Principy OOP: –zapouzdření –dědičnost (skrývání metod) –polymorfismus (virtuální metody, předefinování metody)

9 10/04/20159 Osnova (4) Abstraktní metody a třídy Rozhraní Výjimky Rozšiřující metody Výčtové typy Pole: –jednorozměrná –vícerozměrná pravidelná –vícerozměrná nepravidelná

10 10/04/ Osnova (5) Řetězce Struktury Indexery Generické datové typy Kolekce: –negenerické –generické Iterátory Delegáty (anonymní metody, lambda výrazy)

11 10/04/ Osnova (6) Události Práce se soubory (proudy): –textové soubory –binární soubory –práce se souborovým systémem LINQ Kolokvium, zápočet

12 10/04/ Literatura Pelikán, Jaroslav: Prezentace k přednáškám z před- mětu PV178 Úvod do vývoje v C#/.NET, Richter, Jeffrey: CLR via C#, 3rd ed. Redmond: Microsoft Press, 2010, ISBN: Skeet, Jon: C# in depth, 2nd ed. Stamford: Manning, 2011, ISBN: Marguerie, Fabrice, Steve Eichert, Jim Wooley: Linq in action, Edited by Matt Warren, Greenwich: Manning, 2008, ISBN: Sharp, John: Microsoft Visual C# 2010, Computer Press 2010, ISBN:

13 10/04/ Ukončení předmětu (1) V průběhu semestru je možné získat maxi- málně 100 bodů: –42 bodů: domácí úkoly (6 úkolů po 7 bodech) –38 bodů: projekt (nutné získat alespoň 20 bodů) –20 bodů: testy na cvičeních Při ukončení předmětu: –kolokviem je zapotřebí získat min. 60 bodů –zápočtem je zapotřebí získat min. 50 bodů

14 10/04/ Ukončení předmětu (2) Domácí úkoly: –v průběhu semestru bude zadáno 6 domácích úkolů z probraných okruhů (po 7 bodech) –o zadání prvního úkolu a způsobu zveřejňování dalších budete informováni em –na vypracování budete mít vždy alespoň 7 dní od zveřejnění Projekt: –nutno odevzdat samostatný projekt prokazující vaši schopnost vytvořit funkční a použitelnou aplikaci

15 10/04/ Ukončení předmětu (3) –možné získat maximálně 38 bodů –nutné získat minimálně 20 bodů –projekty budou vypsány jako tematický balík v ISu –k vybranému projektu se musíte přihlásit nejpoz- ději do –je možné navrhnout (zvolit si) vlastní projekt –v týdnu od proběhne kontrola projek- tů odevzdáním návrhu struktury: typicky ve formě UML diagramu tříd (pokud se u studenta předpokládá znalost UML) –vyhotovený projekt musí být odevzdaný do

16 10/04/ Ukončení předmětu (4) Testy: –na začátku většiny cvičení –formou odpovědníku v ISu, který je zaměřený na téma poslední (popř. předposlední) před- nášky –za správné vyplnění odpovědníků je možné získat celkem maximálně 20 bodů Cvičení: –docházka na cvičení nebude kontrolována –neúčastí na cvičeních přicházíte o možnost bodů z testů

17 10/04/ NET Framework (1) Softwarová platforma vyvinutá firmou Micro- soft, která podporuje vytváření a spouštění aplikací a webových služeb Operační systém Common Language Runtime Base Class Library ADO.NET & XML ASP.NET Web Forms Web Services Windows Forms Common Language Specification VBC++C#J#J#… Visual Studio.NET Architektura.NET Framework 2.0

18 10/04/ NET Framework (2) CLR – Common Language Runtime: –běhové prostředí realizující základní infrastruk- turu, nad kterou je celý framework vybudován –provádí spouštění všech programů napsaných pro.NET Framework (nezávisle na použitém programovacím jazyku) –lze přirovnat k virtuálnímu stroji u jazyka Java –zajišťuje např.: spouštění programů správu paměti (včetně automatické garbage collec- tion), výpočetních vláken (threads), výjimek typovou bezpečnost

19 10/04/ NET Framework (3) BCL – Base Class Library: –knihovna dodávaná s.NET Frameworkem –obsahuje třídy sloužící pro práci např. s: grafikou soubory databází počítačovou sítí ADO.NET & XML: –knihovna pro přístup k datům a pro práci s XML soubory

20 10/04/ NET Framework (4) ASP.NET: –soubor technologií pro tvorbu webových aplika- cí a webových služeb Windows Forms: –programové rozhraní pro vývoj grafických desk- topových aplikací –poskytuje sadu tříd umožňujících přístup ke standardním ovládacím prvkům operačního sys- tému MS Windows (okno, tlačítko, menu, editační prvek atd.)

21 10/04/ NET Framework (5) CLS – Common Language Specification: –definuje základní vlastnosti programovacích ja- zyků podporované běhovým prostředím CLR.NET Framework 3.0: –přináší čtyři hlavní nové komponenty: WPF – Windows Presentation Foundation: –rozhraní pro vytváření grafických aplikací a jejich uživatel- ských rozhraní –založeno na XML a vektorové grafice –při své činnosti využívá Direct3D WCF – Windows Communication Foundation: –technologie pro vývoj webových služeb a komunikační infrastruktury aplikací –umožňuje vytváření aplikací orientovaných na služby (SOA – Service Oriented Application)

22 10/04/ NET Framework (6) WF – Windows Workflow Foundation: –technologie pro definování (modelování) heterogenních sekvenčních procesů Windows CardSpace: –programová komponenta, která bezpečně ukládá digitální identity a poskytuje jednotné rozhraní pro volbu identity k určité transakci.NET Framework 3.5: –přidává dvě komponenty pro datové služby: ADO.NET Entity Framework ADO.NET Data Services –poskytuje LINQ: komponenta umožňující jednotný přístup k datům a jejich zpra- cování deklarativním a funkcionálním způsobem

23 10/04/ NET Framework (7).NET Framework 4.0: –přináší zejména Parallel Extensions zlepšující podporu paralelních výpočtů u vícejádrových a distribuovaných systémů: PLINQ: –paralelní implementace technologie LINQ Task Parallel Library: –množina tříd umožňující efektivní zpracování úloh s využi- tím všech dostupných jader procesoru.NET Framework 4.5: –doplňuje podporu pro: aplikace typu Metro Style asynchronní programování

24 10/04/ Životní cyklus aplikace (1) CIL – Common Intermediate Language: –dříve nazývaný jako MSIL – Microsoft Interme- diate Language –jazyk nezávislý na platformě, do něhož jsou pře- kládány programy napsané v jazycích kompati- bilních s.NET Frameworkem C# zdrojový kód VB zdrojový kód J# zdrojový kód Překladač CILCLR CLI JIT

25 10/04/ Životní cyklus aplikace (2) CLI – Common Language Infrastructure: –otevřená a standardizovaná specifikace –popisuje vlastnosti spustitelného kódu a prostře- dí pro jeho běh –umožňuje, aby aplikace byly napsány v různých vyšších programovacích jazycích a následně spouštěny v rozličných prostředích –součástí CLI je i CTS – Common Type System popisující datové typy a typový systém –mezi implementace CLI patří CLR a Mono

26 10/04/ Životní cyklus aplikace (3) JIT – Just-In-Time compilation: –realizována JIT překladačem, který je součástí CLR –provedena v okamžiku, kdy systém detekuje, že dochází ke spuštění aplikace v CIL –během ní dochází k vygenerování strojového kódu, který může být spuštěn na aktuálně použí- vané platformě –výsledný kód běží ve virtuálním stroji.NET Frameworku  jedná se o řízený kód (managed code)

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

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

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

30 10/04/ Jmenné konvence (1) Dovolují rychlejší čtení a porozumění kódu Poskytují dodatečné informace o kódu Velikost písmen – kapitalizace: –Pascal Case: konvence, u níž jsou víceslovné identifikátory psány dohromady (bez mezer a podtržítek mezi slovy) každé slovo začíná velkým písmenem používá se např. pro názvy jmenných prostorů, dato- vých typů (tříd, struktur, výčtových typů, …), rozhra- ní, metod, vlastností, událostí, hodnot výčtových typů příklad: ThisIsPascalCase

31 10/04/ Jmenné konvence (2) –Camel Case: podobně jako Pascal Case, ale první písmeno identifi- kátoru je malé používá se např. pro lokální proměnné, parametry metod, soukromé datové položky třídy příklad: thisIsCamelCase Volba jmen: Třídy, strukturyPodstatné jméno nebo jmenná fráze Metody Slovesa v rozkazovacím tvaru a slovesné fráze (sloveso + předmět) Vlastnosti, proměnné Podstatné jméno nebo jmenná fráze

32 10/04/ Standardní výstup (1) Pro zobrazení hodnot na standardní výstup je možné použít statické metody definované ve statické třídě Console : –Write : po vypsání posledního znaku neprovádí odřádkování –WriteLine : po vypsání posledního znaku provádí odřádkování Poznámka: –třída Console je definována ve jmenném prostoru System

33 10/04/ Standardní výstup (2) Prvním parametrem uvedených metod může být řetězec obsahující (kromě textu) specifi- kace, které určují místa, na nichž mají být vy- psány hodnoty dalších parametrů Specifikace se zapisují ve složených závor- kách, jež obsahují pořadové číslo vypisova- ného parametru Příklad: Console.Write("a = {0}, b = {1}", a, b);

34 10/04/ Standardní výstup (3) Poznámky: –součástí specifikace mohou být i informace o tom, jakým způsobem má být hodnota odpo- vídajícího parametru formátována –je-li zapotřebí vypsat hodnotu pouze jednoho parametru, je možné řetězec (jako první para- metr) vynechat

35 10/04/ Standardní vstup Pro načtení hodnoty ze standardního vstupu jsou ve třídě Console definovány statické metody: –Read : načítá ze standardního vstupu jeden znak vrácená hodnota je typu int –ReadLine : načítá ze standardního vstupu celý řádek vrácená hodnota je typu string Poznámka: –pro převody mezi různými datovými typy lze použít metody statické třídy Convert (defi- nována ve jmenném prostoru System )

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

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

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

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

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

41 10/04/ Nulovatelné typy (1) Nulovatelné (nullable) typy představují rozší- ření, jež umožňuje přiřazovat hodnotu null do proměnných všech hodnotových typů Hodnota null vyjadřuje, že proměnná nemá žádnou hodnotu Vhodné zejména pro pohodlnou práci s SQL a s relačními databázemi (ve sloupci databáze může být hodnota NULL) Zapisovány pomocí otazníku za názvem typu Příklad: int? x;

42 10/04/ Nulovatelné typy (2) Poskytují vlastnosti (určené pouze pro čtení): –Value : obsahuje hodnotu dané proměnné je-li hodnota proměnné null, pak způsobí výjimku pro změnu hodnoty se používá přiřazení přímo do proměnné –HasValue : booleovská vlastnost: –false : vyjadřuje, že proměnná nemá žádnou hodnotu nastaví se automaticky, je-li do proměnné přiřazena hodnota null –true : vyjadřuje, že proměnná má určitou hodnotu nastaví se automaticky, je-li do proměnné přiřazena jiná hodnota než null

43 10/04/ Nulovatelné typy (3) Konverze: –nenulovatelného typu na nulovatelný je provádě- na implicitně –nulovatelného typy na nenulovatelný musí být provedena explicitně Příklad: int? age1 = 30; int? age2 = null; int age3 = 0; age3 = (int)age1; age2 = age3;

44 10/04/ Null coalescing operator (1) Null coalescing (null splývající) operátor je zapisovaný ve tvaru výrazu: A ?? B Výsledek výrazu je: –A : jestliže A neobsahuje hodnotu null –B : v opačném případě Jestliže A obsahuje hodnotu null, pak B poskytne hodnotu k použití Používaný k definici implicitní hodnoty pro nulovatelné hodnotové nebo referenční typy

45 10/04/ Null coalescing operator (2) Příklad: int? x = null; int? y = 10; int? z = x ?? y; int i = z ?? 4; Console.WriteLine("z = {0}", z); Console.WriteLine("i = {0}", i); Na výstupu bude vypsáno: z = 10 i = 10

46 10/04/ Implicitně typované proměnné Definované pomocí klíčového slova var (bez použití identifikátoru označujícího datový typ) V době definice musí být provedena i jejich inicializace Představují silně typované proměnné Jejich typ je určen z pravé strany inicializace Příklad: var distance = 20; //int


Stáhnout ppt "PV178 – Úvod do vývoje v C#/.NET RNDr. Jaroslav PELIKÁN, Ph.D. katedra počítačových systémů a komunikací Fakulta informatiky Masarykovy univerzity Botanická."

Podobné prezentace


Reklamy Google