Základy jazyka C#
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
[email protected]
Obsah přednášky z z z z z z z
Architektura .NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní Základy jazyka C#
(c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava
2
1
Základy jazyka C#
Architektura .NET Programovací Programovací jazyky VB
C#
C++
JScript
…
Common Language Specification (CLS) ASP.NET
Windows Forms
ADO.NET
XML
Common Language Runtime (CLR) Windows
Služ Služby COM+
Zdroj: J. Šeda: J2EE, .NET a vývoj rozsáhlých systémů, www.interval.cz Základy jazyka C#
3
Součásti .NET Framework z z z z z z z
COM+ – distribuované objekty CLR – společné knihovny ADO.NET – přístup k datům ASP.NET – webové aplikace Windows Forms – uživatelské rozhraní CLS – společné vlastnosti jazyků Programovací jazyky - C#, zásadní změny Základy jazyka C#
(c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava
4
2
Základy jazyka C#
Historie z z z z z z z
1998 – první zprávy o novém jazyce COOL červen 2000 – uvolnění specifikace C# červenec 2000 – .NET Framework SDK listopad 2000 – zahájení standardizace 13. 12. 2001 – ECMA-334 (C#), 335 (CLI) leden 2002 – finální podoba .NET Autor: Anders Hejlsberg (Turbo Pascal, Delphi), Scott Wiltamuth, Peter Golde Základy jazyka C#
5
Vlastnosti jazyka C# z
Podpora vývoje založeného na komponentách z
z z z
přímá podpora základních konstrukcí (vlastnosti, metody, události) metadata + atributy integrované verzování komponent integrovaná XML dokumentace
Základy jazyka C#
(c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava
6
3
Základy jazyka C#
Vlastnosti jazyka C# z
Moderní objektově orientovaný jazyk z z z z z
veškeré očekávané vlastnosti delegát – bezpečné předávání funkcí jako parametrů přetěžování operátorů, uživatelské konverze, „obyčejná“ pole rozsáhlý systém knihoven tříd jednotný typový systém, ale není všechno objekt – optimalizace
Základy jazyka C#
7
Vlastnosti jazyka C# z
Vývoj robustních a trvanlivých aplikací z z z z z
typová bezpečnost automatická správa paměti jednotný systém výjimek možnost nezávislého verzování bázových tříd kontroly rozsahů polí, aritmetické kontroly
Základy jazyka C#
(c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava
8
4
Základy jazyka C#
Vlastnosti jazyka C# z
Pragmatický přístup z z
z
žádná revoluce v syntaxi jazyka práce s ukazateli, přetypování, přímé přidělování paměti na zásobníku – nutnost speciálních privilegií spolupráce s existujícími komponentami COM, DLL
Základy jazyka C#
9
Příklad using System; namespace Priklady { /// <summary> /// popis třídy Priklad1 /// class Priklad1 { static void Main(string[] args) { Console.WriteLine(“…”); } } }
Základy jazyka C#
(c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava
10
5
Základy jazyka C#
Datové typy z
Hodnotové typy z
obsahují přímo data - přiřazením vzniká kopie hodnoty
z
sbyte, byte 10, 3u, 0x00ff short, ushort, int, uint, long, ulong 1000L char ‘a’, ‘\x0041’, ‘\n’ float, double, decimal 1.5f, 1e-3m, 6.67e-23d bool true, false
z z z z
Základy jazyka C#
11
Datové typy z
Struktura (struct) z z
Hodnotový typ Jako třída, ale bez dědičnosti
struct Komplex { public float real; public float imag; } Základy jazyka C#
(c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava
12
6
Základy jazyka C#
Datové typy z
Výčtový typ z
množina pojmenovaných konstant
enum DnyTydne { Pondeli, Utery, Streda, … }; enum Dny : byte { … }; Dny dnes = Dny.Nedele; Základy jazyka C#
13
Datové typy z
Referenční typy z
z z
z
z
neuchovávají hodnotu, ale odkaz na hodnotu objekt hodnota null přiřazením nevzniká kopie hodnoty, ale jen odkazu Typy object, string, třída (class), rozhraní (interface), pole a delegát (delegate)
Ukazatele Základy jazyka C#
(c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava
14
7
Základy jazyka C#
Datové typy z
Pravidelná pole z z z z
z
Klasická pole jako v C/C++ Stejný počet prvků ve všech řádcích int [,] mat1 = new int[5, 10] mat1[2,3] = 15;
Nepravidelná pole z z z z
Pole polí jako v Javě int[][] mat2 = new int [5][]; mat2[2] = new int[7]; mat[2][3] = 15; Základy jazyka C#
15
Výrazy z
Jako C/C++/Java
z
Přetěžování operátorů z
z
Operátory lze definovat pomocí uživatelských metod Unární, binární a relační operátory
Mat operator “+”(Mat op2) { … } Základy jazyka C#
(c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava
16
8
Základy jazyka C#
Příkazy z
jako C/C++/Java
z
Příkaz switch – nelze přecházet mezi větvemi
z
Příkaz goto
z
Průchod kolekcí nebo polem – příkaz foreach foreach( T x in IEnumerable ) { … IEnumerator ie = coll.GetEnumerator(); while( ie.MoveNext() ) { } }
T x = (T)ie.Current(); … Základy jazyka C#
17
Prostory jmen namespace cz.vsb.cs.Priklady { … } using System.Collections; System.Collections.Hashtable t; Hashtable t; Základy jazyka C#
(c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava
18
9
Základy jazyka C#
Třídy public class Control { string text;
// data
public string Text { // vlastnost get { return text; } put { text = value; Redraw(); } } public void Clear() { Text = “”; }
// metoda
} Základy jazyka C#
19
Konstruktor a destruktor z z z
Stejné jméno jako třída Konstruktor se volá automaticky Destruktor se volá při zrušení objektu – kdy to je?
class Bod { private int x, y; public Bod(short nx, short ny) { x = nx; y = ny; } public Bod() { x = y = 0; } } Základy jazyka C#
(c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava
20
10
Základy jazyka C#
Rozhraní a dědičnost public interface IDelete { void Delete(); } public class TextBox : Control, IDelete { public void Delete() { … } public override string Text { get { … } set { … } přetížená vlastnost } }
Základy jazyka C#
21
Indexery public class ScoreList { int[] scores = new int[5]; public int this[int index] { // indexer get { return scores[index]; } set { if( value >= 0 && value <= 10 ) scores[index] = value; } } public int Average { // read-only vlastnost get { int sum = 0; foreach( int score in scores ) sum += score; return sum / scores.Length; } } } Základy jazyka C#
(c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava
22
11
Základy jazyka C#
Literatura a další zdroje z
z
z z z z z
Drayton, P., Albahari, B., Neward, T.: C# in a Nutshell. O’Reilly & Associates Inc., 2002, ISBN 0-596-00181-9 Kačmář, D.: Programujeme .NET aplikace ve Visual Studiu .NET Computer Press, 2001, ISBN 80-7226-569-5 http://msdn.microsoft.com/net http://www.gotdotnet.com http://www.go-mono.com http://www.dotgnu.org http://www.ecma.ch
Základy jazyka C#
(c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava
23
12