1 / 46

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

P V178 – Ú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 Šumavská 15, 602 00 BRNO Kanc.: G409,  : +420 – 549 495 751 E-mail: pelikan@fi.muni.cz http://www.fi.muni.cz/usr/pelikan.

dory
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 Šumavská 15, 602 00 BRNO Kanc.: G409,  : +420 – 549 495 751 E-mail: pelikan@fi.muni.cz http://www.fi.muni.cz/usr/pelikan

  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í krokya 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. 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. 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. Vstupní předpoklady • Znalost: • základů programování a algoritmizace • syntaxe programovacího jazykaC/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. 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. 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. 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. Osnova (4) • Abstraktní metody a třídy • Rozhraní • Výjimky • Rozšiřující metody • Výčtové typy, flags • Pole: • jednorozměrná • vícerozměrná pravidelná • vícerozměrná nepravidelná

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

  11. 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. Literatura • Pelikán, Jaroslav: Prezentace k přednáškám z před-mětu PV178 Úvod do vývoje v C#/.NET, http://www.fi.muni.cz/usr/pelikan • Richter, Jeffrey: CLR via C#, 3rd ed. Redmond: Microsoft Press, 2010, ISBN: 9780735627048. • Skeet, Jon: C# in depth, 2nd ed. Stamford: Manning, 2011, ISBN: 9781935182474. • Marguerie, Fabrice, Steve Eichert, Jim Wooley: Linq in action, Edited by Matt Warren, Greenwich: Manning, 2008, ISBN: 9781933988160. • Sharp, John: Microsoft Visual C# 2010, Computer Press 2010, ISBN: 978-80-251-3147-3.

  13. Ukončení předmětu (1) • V průběhu semestru je možné získat maxi-málně 100 bodů: • 56 bodů: domácí úkoly (8 × 7 bodů) • 24 bodů: projekt (nutné získat alespoň 12 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. Ukončení předmětu (2) • Domácí úkoly: • v průběhu semestru bude zadáno 8 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 e-mailem • 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. Ukončení předmětu (3) • možné získat maximálně 24 bodů • nutné získat minimálně 12 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 31. 3. 2014 • je možné navrhnout (zvolit si) vlastní projekt • v týdnu od 21. 4. 2014 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ý do6. 6. 2014

  16. 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. .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.NETWeb Forms Web Services WindowsForms Architektura .NET Framework 2.0 Visual Studio .NET ADO.NET & XML Base ClassLibrary Common Language Runtime Operační systém

  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

  19. .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. .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. .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. .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. .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ňujepodporu pro: • aplikace typu Metro Style • asynchronní programování

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

  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

  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)

  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ů

  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

  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)

  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

  31. 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, 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

  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

  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);

  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

  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)

  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 stringa 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. Předdefinované datové typy (2) Typ 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

  38. Předdefinované datové typy (3) Typ Popis Velikost Typový ekvivalent • Poznámka: • datové typy string a object jsou popsány jako třídy (nikoliv jako struktury) bool logický (booleovský) typ 8 b System.Boolean char znakový typ (Unicode) 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

  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

  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)

  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;

  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

  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;

  44. Null coalescing operator (1) • Nullcoalescing(null splývající) operátor je zapisovanývetvaru 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. Null coalescing operator (2) • Příklad:int? x = null;int? y = 10;int? z = x ??y;inti = z ??4;Console.WriteLine("z = {0}", z);Console.WriteLine("i = {0}", i); • Na výstupu bude vypsáno:z = 10i = 10

  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: vardistance = 20;//int

More Related