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

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

PV178 – Úvod do vývoje v C#/.NET

Podobné prezentace


Prezentace na téma: "PV178 – Úvod do vývoje v C#/.NET"— 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 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 10/04/2017

3 Organizace předmětu Rozsah (hodinová dotace): 1/2 Přednáška: Cvičení:
2 hodiny týdně první polovinu semestru (7 týdnů) Cvičení: 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 10/04/2017

4 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 10/04/2017

5 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 10/04/2017

6 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é 10/04/2017

7 Osnova (2) Typ třída a její členy: Jmenné prostory
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 10/04/2017

8 Osnova (3) Předávání parametrů metodám: Přetěžování metod
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) 10/04/2017

9 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/04/2017

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

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

12 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: 10/04/2017

13 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ů 10/04/2017

14 Ukončení předmětu (2) Domácí úkoly: Projekt:
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 10/04/2017

15 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 10/04/2017

16 Ukončení předmětu (4) Testy: Cvičení: 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ů 10/04/2017

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

18 .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 10/04/2017

19 .NET Framework (3) BCL – Base Class Library: ADO.NET & XML:
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 10/04/2017

20 .NET Framework (4) ASP.NET: Windows Forms:
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.) 10/04/2017

21 .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) 10/04/2017

22 .NET Framework (6) .NET Framework 3.5:
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 10/04/2017

23 .NET Framework (7) .NET Framework 4.0: .NET Framework 4.5:
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í 10/04/2017

24 Životní cyklus aplikace (1)
CLI C# zdrojový kód Překladač VB zdrojový kód Překladač CIL CLR JIT J# zdrojový kód Překladač 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 10/04/2017

25 Ž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 10/04/2017

26 Ž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) 10/04/2017

27 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ů 10/04/2017

28 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 10/04/2017

29 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) 10/04/2017

30 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 10/04/2017

31 Jmenné konvence (2) Volba jmen: 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, struktury Podstatné 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 10/04/2017

32 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 10/04/2017

33 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); 10/04/2017

34 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 10/04/2017

35 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) 10/04/2017

36 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í 10/04/2017

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

38 Předdefinované datové typy (3)
Popis Velikost Typový ekvivalent bool logický (booleovský) typ 8 b System.Boolean char znakový typ (Unicode, UTF-16) 16 b System.Char decimal peněžní hodnoty (28 platných číslic) 128 b System.Decimal object kořen objektové hierarchie System.Object 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) 10/04/2017

39 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 10/04/2017

40 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) 10/04/2017

41 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; 10/04/2017

42 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 10/04/2017

43 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; 10/04/2017

44 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 10/04/2017

45 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 10/04/2017

46 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 10/04/2017


Stáhnout ppt "PV178 – Úvod do vývoje v C#/.NET"

Podobné prezentace


Reklamy Google