Einführung in .NET mit C#
Upcoming SlideShare
Loading in...5
×
 

Einführung in .NET mit C#

on

  • 1,792 views

 

Statistics

Views

Total Views
1,792
Views on SlideShare
1,792
Embed Views
0

Actions

Likes
0
Downloads
16
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Einführung in .NET mit C# Einführung in .NET mit C# Presentation Transcript

  • Einführung in C#Präsentation von:Georg HinkelMicrosoft Student PartnerKIT KarlsruheGeorg.hinkel@studentpartners.de
  • 2 Agenda• .NET Architektur, Terminologie• Syntax C# – Kontrollstrukturen, Namenskonventionen – Properties – Delegates, Events• Werttypen vs. Referenztypen Einführung in .NET und C# - Georg Hinkel
  • Grober Aufbau der Plattform und Klärung der BegriffeArchitektur & Terminologie
  • 4 Architektur Programmiersprache (Standard: Common Language Specification, CLS), e.g. C#, Visual Basic IL-Code (Früher Microsoft Intermediate Language) Heute meist nur Intermediate Language (IL) Virtuelle Maschine, die den IL-Code ausführt Standardimplementierung: Common Language Runtime (CLR)Bildquelle: Wikipedia Einführung in .NET und C# - Georg Hinkel
  • 5 Common Language Specification• Definiert den gemeinsamen Nenner aller .NET- Sprachen – Einfachvererbung (Mehrfachvererbung nicht erlaubt) – Common Type System • Definiert Basisdatentypen – Int32 ist 32 bit lang, Int64 64 bit lang – Zeichenketten codiert in Unicode 16 „Little Endian“ – Properties, Delegates, Events, u.a. (kommt später) Einführung in .NET und C# - Georg Hinkel
  • 6 Intermediate Language• Stackbasierter Bytecode• Aus den fertigen Kompilaten direkt ablesbar – Mit Spezialprogrammen (.NET Reflector) Quellcode rekonstruierbar – Techniken um Rekonstruktion des Quellcodes zu verhindern notwendig Einführung in .NET und C# - Georg Hinkel
  • 7 Common Language Runtime (CLR)• Virtuelle Maschine mit Laufzeitumgebung – Dadurch plattformunabhängig – CLR nur für Windows erhältlich – Mono Projekt: CLR für Linux Einführung in .NET und C# - Georg Hinkel
  • 8 Auswahl der .NET-Sprachen• C#, Visual Basic, Managed C++, F# – Offiziell von Microsoft unterstützt• Cω, Asml, Spec#, Polyphonic C# – Forschungssprachen von Microsoft Research• GrGen.NET – Programmierung mit Graphen• Boo, J#, Jscript.NET, Clarion.NET u.v.m Einführung in .NET und C# - Georg Hinkel
  • 9 Auswahl der .NET-Sprachen• C#, Visual Basic, Managed C++, F# – Offiziell von Microsoft unterstützt• Cω, Asml, Spec#, Polyphonic C# – Forschungssprachen von Microsoft Research• GrGen.NET – Programmierung mit Graphen• Boo, J#, Jscript.NET, Clarion.NET u.v.m• …etwa 10-20 weitere Einführung in .NET und C# - Georg Hinkel
  • 10 Auswahl der .NET-Sprachen• C#, Visual Basic, Managed C++, F# – Offiziell von Microsoft unterstützt• Cω, Asml, Spec#, Polyphonic C# matter“ „The language doesn‘t – Forschungssprachen von Microsoft Research Dan Appleman• GrGen.NET – Entwickelt am IPD/Uni Karlsruhe• Boo, J#, Jscript.NET, Clarion.NET u.v.m• …etwa 10-20 weitere Einführung in .NET und C# - Georg Hinkel
  • 11 Zusammenfassung• Grobe Architektur ähnlich Java• Sprachvielfalt Einführung in .NET und C# - Georg Hinkel
  • Syntax, Properties, Delegates, Generics, ValueTypes, StructsSyntax C#
  • 13 Klassen• Hier kein Grundkurs der Objektorientierung (Zeit!)• Literatur: Galileo Openbook – http://openbook.galileocomputing.de/visual_csharp _2010/ – http://openbook.galileocomputing.de/oop/ Einführung in .NET und C# - Georg Hinkel
  • 14Klassen – Syntax in C#/// <summary>/// Nur zu Demonstrationszwecken/// </summary>public class A : B, ICalculator{ public int Calc() { if (this.Id < 2) { return 0; } return 1; }} Einführung in .NET und C# - Georg Hinkel
  • 15 Klassen – Syntax in C# Basisklasse Schnittstelle /// <summary>Klassenname /// Nur zu Demonstrationszwecken /// </summary> public class A : B, ICalculator { public int Calc() { if (this.Id < 2) { Methodendefinition return 0; } Property return 1; } } Einführung in .NET und C# - Georg Hinkel
  • 16 Kontrollstrukturen• Bedingte einfache Sprünge – if-Anweisung• Schleifen – do/while-Schleifen – for-Schleifen• Iterierte Schleifen mit foreach• LINQ Einführung in .NET und C# - Georg Hinkel
  • 17 Namenskonventionen Subjekt .NET Namensraum Pascal Case Klassennamen Pascal Case Methodennamen Pascal Case Klassenvariablen Camel Case Properties, Events Pascal Case Lokale Variablen Camel Case Schnittstellen Beginnen mit I• Pascal Case: Alle Worte groß geschrieben, ohne Leerzeichen• Camel Case: Wie Pascal Case, jedoch erster Buchstabe des ersten Wortesauch klein Einführung in .NET und C# - Georg Hinkel
  • 18 NomenklauturObjektorientierung allgemein .NETKlasse Klasse- Struktur/Struct- Delegate- Event/EreignisAttribut Klassenvariable/FeldFeld Array- (Annotation in Java) Attribut- PropertyMethode MethodeFunktion Funktion Einführung in .NET und C# - Georg Hinkel
  • 19 Properties• „Eigenschaften“ eines Objekts – Getter/Setter-Paar – Automatisiert möglich• Bestandteil der CLS• Ähnlich Java „Beans-Architektur“ private string name; public string Name { get { return name; } set { name = value; } } Alternative Schreibweise (automatisiert): public string Name { get; set; } Einführung in .NET und C# - Georg Hinkel
  • 20 Properties - Vorteile• Problem: Wieviel Berechnungsaufwand steckt hinter der Auswertung einer parameterlosen Funktion?• Semantischer Unterschied – Funktionen, die „nur“ Klassenvariablen zurückgeben – Funktionen, die „hohen“ Berechnungsaufwand für die Auswertung benötigen Einführung in .NET und C# - Georg Hinkel
  • 21 Properties - Vorteile• Problem: Wieviel Berechnungsaufwand steckt hinter der Auswertung einer parameterlosen Funktion?• Semantischer Unterschied – Funktionen, die „nur“ Klassenvariablen zurückgeben – Funktionen, die „hohen“ Berechnungsaufwand für die Auswertung benötigen• Mit Properties: Syntaktischer Unterschied Einführung in .NET und C# - Georg Hinkel
  • 22 Delegates• Ähnlich Funktionszeigern in C, nur mit Objekt• Ein Delegate ist eine Klasse, also ein Datentyp public delegate void Foovoid()• Verketten und Herauslösen möglich (e.g. Methode Delegate.Combine)• Bestandteil der CLS Einführung in .NET und C# - Georg Hinkel
  • 23 Events• Ähnlich Klassenvariable, aber es sind nach außen nur die Operationen Verketten und Herauslösen möglich public event Foovoid FooHappened;• Bestandteil der CLS• Faktisch in der Sprache implementiertes Observer-Pattern („Beobachtermuster“) Einführung in .NET und C# - Georg Hinkel
  • 24 Events – Konventionen (1)• Objektorientierter Ansatz – Parameter/Rückgabe als Event-Objekt – Events nur Void-Delegates (ohne Rückgabe)• Sender wird übergeben – Wiederverwendbarkeit der Handler-Methoden Einführung in .NET und C# - Georg Hinkel
  • 25 Events – Konventionen (2)• Standarddelegates für Events: – Mit Parametern/Rückgabe public delegate void EventHandler<T as EventArgs>(object sender, T event) public event EventHandler<ResolveEntityEventArgs> ResolveEntityRequired; Manchmal noch alter Code ohne Generizität – Ohne Parameter public delegate void EventHandler(object sender, EventArgs event) public event EventHandler PropertyChanged; Einführung in .NET und C# - Georg Hinkel
  • 26 Events - Anwendungen• Oberflächen – Windows Forms Button: 72 Events – WPF Button: 95 Events• MVC/MVP/MVVM – Saubere Implementierung des Observer-Patterns Einführung in .NET und C# - Georg Hinkel
  • 27 Best Practise (1)• Properties + Observer private string _name; public string Name { get { return _name; } set { if (_name != value) { _name = value; OnNameChanged(EventArgs.Empty); } } } Einführung in .NET und C# - Georg Hinkel
  • 28 Best Practise (2)• Properties + Observer protected virtual void OnNameChanged(EventArgs e) { EventHandler handler = NameChanged; if (handler != null) { handler.Invoke(this, e); } } public event EventHandler NameChanged; Einführung in .NET und C# - Georg Hinkel
  • 29 Best Practise (2)• Properties + Observer protected virtual void OnNameChanged(EventArgs e) { EventHandler handler = NameChanged; if (handler != null) { handler(this, e); } } public event EventHandler NameChanged; Einführung in .NET und C# - Georg Hinkel
  • Werttypen, Referenztypen
  • 31 Werttypen, Referenztypen• Java: int, double, … primitive Typen – Keine Objekte – Verstoß gegen Objektorientierung!• .NET: Trennung Werttypen vs. Referenztypen – Vollständig objektorientiert – Automatisches Boxing/Unboxing Einführung in .NET und C# - Georg Hinkel
  • 32 Referenztypen• Zugriff nur über Referenz• Eigentliches Objekt im Heap gespeichert• Variablen sind nur Zeiger „normale Objekte“ Einführung in .NET und C# - Georg Hinkel
  • 33 Werttypen (1)• Overhead für kleine Objekte zu hoch• Speicherung der Objekte „vor Ort“ im Stack – Boxing/Unboxing – Kein Zusätzlicher Speicherplatz notwendig (meist) – Werttypen sind immutable (unveränderlich) – Vererbung nicht möglich Einführung in .NET und C# - Georg Hinkel
  • 34 Werttypen (2)• Definition eigener Werttypen möglich – Enumerationen: Definition mehrerer thematisch ähnlicher numerischer Konstanten – Structure: Wie Klassen, aber ohne Polymorphie • Structure erbt automatisch von ValueType • Implementierung von Schnittstellen trotzdem möglich • GetHashCode sollte überschrieben werden Einführung in .NET und C# - Georg Hinkel
  • 35 Werttypen - Beispiel• Structure Point (System.Drawing.Point) Point p = window.Location; p.X += 20; Was passiert? Was wäre, wenn Point eine Referenzklasse wäre (Reference Type)? Einführung in .NET und C# - Georg Hinkel
  • 36 Werttypen - Beispiel• Structure Point (System.Drawing.Point) Point p = window.Location; p.X += 20; window.Location = p; Was passiert? Was wäre, wenn Point eine Referenzklasse wäre (Reference Type)? Einführung in .NET und C# - Georg Hinkel
  • 37Enumerationen – Syntax in C# /// <summary> /// Defines the gender of a patient /// </summary> public enum Gender { Male, Female, Unknown } Einführung in .NET und C# - Georg Hinkel
  • 38Enumerationen – Syntax in C# /// <summary> /// Defines the gender of a patient /// </summary> public enum Gender : byte { Male , Female, Unknown } Einführung in .NET und C# - Georg Hinkel
  • 39Enumerationen – Syntax in C# /// <summary> /// Defines the gender of a patient /// </summary> [Flagged] public enum Gender : byte { Male = 2, Female = 4, Unknown = 1 } Einführung in .NET und C# - Georg Hinkel
  • Lemming-AmeisenDemo
  • Vielen Dank für eure Aufmerksamkeit! Präsentation von: Georg Hinkel Microsoft Student Partner KIT Karlsruhe georg.hinkel@studentpartners.de
  • 42 IT 4 StudentsDer Newsletter rund um Microsoft Angebote für StudierendeOnline:www.microsoft.de/dreamspark Einführung in .NET und C# - Georg Hinkel
  • 43/TechStudent Online Facebook– das Portal für Geeks, Nerds und www.facebook.com/alle, die es noch werden wollen techstudentgermanywww.microsoft.de/techstuden t Einführung in .NET und C# - Georg Hinkel
  • 44 MSDN AAMSDN AA = Microsoft Developer Network – Academic AllianceEntwicklungsumgebungen, Datenbanken, Betriebssystemewie … Windows 7, Visio, Project, Visual StudioAusstattung der angebotenen Software für alle immatrikulierten Studierenden und die LehreinrichtungOnline: www.msdnaa.de Einführung in .NET und C# - Georg Hinkel
  • 45 DreamSparkKostenloser Softwaredownload für alle StudierendenSDK, Visual Studio, Virtual PC, SQL Server und Co.Online:www.microsoft.de/dreamspark Einführung in .NET und C# - Georg Hinkel