Einführung in .NET mit C#

2,677 views
2,429 views

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,677
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
25
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Einführung in .NET mit C#

  1. 1. Einführung in C#Präsentation von:Georg HinkelMicrosoft Student PartnerKIT KarlsruheGeorg.hinkel@studentpartners.de
  2. 2. 2 Agenda• .NET Architektur, Terminologie• Syntax C# – Kontrollstrukturen, Namenskonventionen – Properties – Delegates, Events• Werttypen vs. Referenztypen Einführung in .NET und C# - Georg Hinkel
  3. 3. Grober Aufbau der Plattform und Klärung der BegriffeArchitektur & Terminologie
  4. 4. 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. 5. 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. 6. 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. 7. 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. 8. 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. 9. 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. 10. 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. 11. 11 Zusammenfassung• Grobe Architektur ähnlich Java• Sprachvielfalt Einführung in .NET und C# - Georg Hinkel
  12. 12. Syntax, Properties, Delegates, Generics, ValueTypes, StructsSyntax C#
  13. 13. 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
  14. 14. 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. 15. 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. 16. 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. 17. 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. 18. 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. 19. 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. 20. 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. 21. 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. 22. 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. 23. 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. 24. 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. 25. 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. 26. 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. 27. 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. 28. 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. 29. 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
  30. 30. Werttypen, Referenztypen
  31. 31. 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. 32. 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. 33. 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. 34. 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. 35. 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. 36. 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
  37. 37. 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
  38. 38. 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
  39. 39. 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
  40. 40. Lemming-AmeisenDemo
  41. 41. Vielen Dank für eure Aufmerksamkeit! Präsentation von: Georg Hinkel Microsoft Student Partner KIT Karlsruhe georg.hinkel@studentpartners.de
  42. 42. 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. 43. 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. 44. 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. 45. 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

×