Grundlagen .NET Hilmar Salomo Tobias Richling Microsoft Student Consultant Student der Informatik FH Augsburg i-hilsal@microsoft.com Tobias Richling Microsoft Student Partner Student der Wirtschaftsinformatik Universität Münster tobias.richling@studentprogram.de Grundlagen .NET STC 02. – 03. Juni 2004
Ziele Praxis !!! Verständnis der Vision hinter .NET Theoretische Kenntnisse in C# Praktische Kenntnis im Umgang mit C# Grundlagen .NET STC 02. – 03. Juni 2004
Gliederung Warum .NET? Relevante Sprachfeatures von C# Praxis Zusammenfassung Grundlagen .NET STC 02. – 03. Juni 2004
Warum .NET: Softwareinseln Sprachfeatures Beispiel Zusammenfassung ? ? ? ? Grundlagen .NET STC 02. – 03. Juni 2004
Warum .NET: Probleme Schwieriges Deployment Sprachfeatures Beispiel Zusammenfassung Schwieriges Deployment DLL Hell Versionierung Nicht interoperabel da inkompatibel Typsystem unterschiedliche Technologien Alte Techniken, z.T. nicht Objektorientiert Sicherheitsmängel Grundlagen .NET STC 02. – 03. Juni 2004
Warum .NET: Vision Warum .NET Sprachfeatures Beispiel Zusammenfassung Grundlagen .NET STC 02. – 03. Juni 2004
Warum .NET: Vorteile Einfaches Deployment Sprachfeatures Beispiel Zusammenfassung Einfaches Deployment Selbstbeschreibende Komponenten Interoperabilität und Kompatiblität Einheitliches Typsystem Portierbares Framework Vollständig Objektorientiert Strenge Sicherheitsmechanismen Sicherheit nach Codeidentität Grundlagen .NET STC 02. – 03. Juni 2004
Grundbausteine des .NET Framework Warum .NET Sprachfeatures Praxis Zusammenfassung Security, Evidence Visual Studio.NET Intermediate Language VB C++ C# JScript J# Common Language Specifications Windows Forms Web Forms WebServices Windows- Applikation ASP.NET CLR: Garbage Collection erwähnen ADO.NET Base Class Library, XML Common Language Runtime, Common Type System Grundlagen .NET STC 02. – 03. Juni 2004
Operation System Services Ausführungsmodell Warum .NET Sprachfeatures Praxis Zusammenfassung Sourcecode VB.NET VC#.NET VC++.NET Unmanaged Component Compiler Compiler Compiler Assembly Assembly Assembly IL-Code NGEN JIT Compiler CLR Managed Code Managed Code Managed Code Unmanaged Code Native Code CLR Services Operation System Services Grundlagen .NET STC 02. – 03. Juni 2004
Metadaten - Reflection Warum .NET Sprachfeatures Praxis Zusammenfassung System.Type Felder Methoden . . . public class Person { public string firstName; public string lastName; public bool Save() { System.Type t = this.GetType(); foreach(FieldInfo f in t.GetFields()) { ... } } } Person p = new Person(“Hilmar",“Salomo"); p Salomo Person Hilmar Selbstbeschreibende Komponenten, keine Registrierung erforderlich (DLL HELL) Grundlagen .NET STC 02. – 03. Juni 2004
Klassenbibliothek System.Web System.Windows.Forms System.Drawing Services UI Design ComponentModel Description HtmlControls Discovery WebControls Protocols System.Drawing Caching Security Drawing2D Printing Configuration SessionState Imaging Text System.Data System.Xml OleDb SqlClient XSLT Serialization Common SQLTypes XPath Einheitliche Klassenbibliothek, Sprachen haben keine „Mächtigkeit“ in Form eigener Logik System Collections IO Security Runtime InteropServices Configuration Net ServiceProcess Remoting Diagnostics Reflection Text Grundlagen .NET STC 02. – 03. Juni 2004 Serialization Globalization Resources Threading
Sprachfeatures von C# Typsystem und Typisierung Zugriffsrechte Warum .NET Sprachfeatures Praxis Zusammenfassung Typsystem und Typisierung Zugriffsrechte Klassen und Strukturen Boxing und Unboxing Enumerations Felder Properties und Indexer Fehlerbehandlung For Each Schleifen Grundlagen .NET STC 02. – 03. Juni 2004
Typ System Basiert auf dem Common Type System Einheitliches Konzept Warum .NET Sprachfeatures Praxis Zusammenfassung Basiert auf dem Common Type System Einheitliches Konzept „Alles“ ist ein Objekt Referenz- und Valuetypes Value Reference Interfaces Simple Types Classes Enums Arrays Structs Heap Stack Grundlagen .NET STC 02. – 03. Juni 2004
Zugriffsrechte Von C++ übernommen Erweiterungen in C# public protected Warum .NET Sprachfeatures Praxis Zusammenfassung Von C++ übernommen public protected private Erweiterungen in C# sealed internal protected internal Grundlagen .NET STC 02. – 03. Juni 2004
Klassen vs. Strukturen Klasse Struktur Interface Interface Field Field Warum .NET Sprachfeatures Praxis Zusammenfassung Klasse Struktur Interface Interface Field Field Properties / Indexer Properties / Indexer Methoden Methoden Events / Delegates Subclass Subclass Heap Stack Grundlagen .NET STC 02. – 03. Juni 2004
Boxing und Unboxing Werttypen können „boxed“ oder „unboxed“ werden Warum .NET Sprachfeatures Praxis Zusammenfassung Werttypen können „boxed“ oder „unboxed“ werden Boxing erlaubt Werttypen als Referenzen zu übergeben Basiert auf der Tatsache, dass alles ein Objekt ist boxing double value; //Boxing object BoxedValue = value; //Unboxing value = (double)BoxedValue; Object Value Double Value unboxing Heap Stack Grundlagen .NET STC 02. – 03. Juni 2004
Enumerations Benannte Elemente anstatt Nummern Stark typisiert Warum .NET Sprachfeatures Praxis Zusammenfassung Benannte Elemente anstatt Nummern Stark typisiert Einfacher zu nutzen: „Color.Red“ als „3“ enum Color { White, // 1 Red = 3, Green, // 4 Blue, // 5 Yellow = 5 // auch 5!!! }; Grundlagen .NET STC 02. – 03. Juni 2004
Felder Nullbasiert und typegebunden Warum .NET Sprachfeatures Praxis Zusammenfassung Nullbasiert und typegebunden Deklariert mit Type und Shape, aber ohne Grenze Erzeugung mit „new“ und Grenzen oder Initialisierern int [ ] SingleDim = new int [20]; int [ , ] TwoDim = new [ ] {{1,2,3} {4,5,6}}; int [ ] [ ] Jagged = new int [1] [ ]; Grundlagen .NET STC 02. – 03. Juni 2004
Properties Mischung aus Membern (Feldern) und Methoden Nutzen bei Warum .NET Sprachfeatures Praxis Zusammenfassung Mischung aus Membern (Feldern) und Methoden Nutzen bei „readonly“ / „writeonly“ Feldern Validierungen bei der Zuweisung / Berechnungen Klasse String test private String test; int wrong public property Name get String Name set String Name Grundlagen .NET STC 02. – 03. Juni 2004
Properties Klasse String test private String test; int wrong Warum .NET Sprachfeatures Praxis Zusammenfassung public string name { get { return name; } set { name = value; } } Klasse String test private String test; int wrong public property Name get String Name set String Name Grundlagen .NET STC 02. – 03. Juni 2004
Indexer Konsistenter Weg, um Container zu erstellen Warum .NET Sprachfeatures Praxis Zusammenfassung Konsistenter Weg, um Container zu erstellen Basieren auf der Property Idee Index Qualifizierer können von jedem Typ sein public object this[string index] { get { return Dict.Item(index); } set { Dict.Item(index) = value; } } Grundlagen .NET STC 02. – 03. Juni 2004
Fehlerbehandlung Try – Catch – finally Block Try Fehler Kein Fehler Warum .NET Sprachfeatures Praxis Zusammenfassung Try – Catch – finally Block try { // gefährlicher Code } Catch (e as Fehlerobjekt) // Fehlerbehandlung Finally // Abschlussarbeiten Try Fehler Kein Fehler Catch Fehlerobjekt Fehlerbehandlung Finally Abschlussarbeiten Grundlagen .NET STC 02. – 03. Juni 2004
Foreach Schleifen Einfach Iterationsmöglichkeit für Collections Warum .NET Sprachfeatures Praxis Zusammenfassung Einfach Iterationsmöglichkeit für Collections Einsatz für alle Arrays und sonstige Collections Können in eigenen Collections verwandt werden Point[] Points = GetPoints(); foreach( Point p in Points ) { MyPen.MoveTo(p.x,p.y); } Grundlagen .NET STC 02. – 03. Juni 2004
Zusammenfassung Verständnis der Grundkonzepte von .NET Warum .NET Sprachfeatures Praxis Zusammenfassung Verständnis der Grundkonzepte von .NET Überblick über die Grundlegenden Sprachfeatures von C# Grundkenntnisse der Programmierung mit C# Grundlagen .NET STC 02. – 03. Juni 2004
Vielen Dank für die Aufmerksamkeit! Fragen Vielen Dank für die Aufmerksamkeit! Haben Sie noch Fragen? Grundlagen .NET STC 02. – 03. Juni 2004
Wie geht es weiter auf der STC…? Zeit Track 1 Track 2 15:30 Web Technologies mit ASP.NET Thorsten Planeth Share Point Portal Server Infrastruktur Eric Hellmich 16:00 16:30 17:00 Kaffeepause 17:30 Grundlagen .NET STC 02. – 03. Juni 2004
Wie geht es weiter auf der STC…? Zeit Track 1 Track 2 Workshop 13:30 Grundlagen .NET (100) Hilmar Salomo & Tobias Richling (Andreas Jahrstorfer, Michael Wensauer, Marcel Kulicke) 13:45 14:00 14:15 ADO.NET, SQL Server 2000 & Yukon (200) Dirk Primbs Windows Server 2003 (200) Daniel Wessels 15:30 Grundlagen .NET STC 02. – 03. Juni 2004