SlideShare uma empresa Scribd logo
1 de 45
Baixar para ler offline
Einführung in C#




Präsentation von:
Georg Hinkel
Microsoft Student Partner
KIT Karlsruhe
Georg.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 Begriffe
Architektur & 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, Structs
Syntax 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
14




Klassen – 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 Wortes
auch klein


                          Einführung in .NET und C# - Georg Hinkel
18




                         Nomenklautur
Objektorientierung allgemein                     .NET
Klasse                                           Klasse
-                                                Struktur/Struct
-                                                Delegate
-                                                Event/Ereignis
Attribut                                         Klassenvariable/Feld
Feld                                             Array
- (Annotation in Java)                           Attribut
-                                                Property
Methode                                          Methode
Funktion                                         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
37




Enumerationen – 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




Enumerationen – 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




Enumerationen – 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-Ameisen


Demo
Vielen Dank für eure Aufmerksamkeit!




 Präsentation von:
 Georg Hinkel
 Microsoft Student Partner
 KIT Karlsruhe
 georg.hinkel@studentpartners.de
42


             IT 4 Students
Der Newsletter rund um Microsoft Angebote für Studierende


Online:
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                  techstudentgermany
www.microsoft.de/techstuden
  t




                       Einführung in .NET und C# - Georg Hinkel
44



                    MSDN AA
MSDN AA = Microsoft Developer Network – Academic Alliance

Entwicklungsumgebungen, Datenbanken, Betriebssysteme
wie … Windows 7, Visio, Project, Visual Studio

Ausstattung der angebotenen Software für alle
  immatrikulierten Studierenden und die
  Lehreinrichtung

Online: www.msdnaa.de



                    Einführung in .NET und C# - Georg Hinkel
45


               DreamSpark
Kostenloser Softwaredownload für alle Studierenden

SDK, Visual Studio, Virtual PC, SQL Server und Co.


Online:
www.microsoft.de/dreamspark




                    Einführung in .NET und C# - Georg Hinkel

Mais conteúdo relacionado

Destaque

Einführung in .NET
Einführung in .NETEinführung in .NET
Einführung in .NETAndreas Heil
 
".NET und jetzt!" C# in 21 Tagen oder doch besser Best Practices
".NET und jetzt!" C# in 21 Tagen oder doch besser Best Practices".NET und jetzt!" C# in 21 Tagen oder doch besser Best Practices
".NET und jetzt!" C# in 21 Tagen oder doch besser Best PracticesGFU Cyrus AG
 
C# für Fortgeschrittene
C# für FortgeschritteneC# für Fortgeschrittene
C# für Fortgeschrittenemspgermany
 
Los fósiles (1)
Los fósiles (1)Los fósiles (1)
Los fósiles (1)DiazFlor
 
Roadmap von Microsoft UI Technologien und Windows 8
Roadmap von Microsoft UI Technologien und Windows 8Roadmap von Microsoft UI Technologien und Windows 8
Roadmap von Microsoft UI Technologien und Windows 8chmoser79
 
14. Defining Classes
14. Defining Classes14. Defining Classes
14. Defining ClassesIntro C# Book
 
0. Course Introduction
0. Course Introduction0. Course Introduction
0. Course IntroductionIntro C# Book
 
C# Tutorial
C# Tutorial C# Tutorial
C# Tutorial Jm Ramos
 
.NET and C# Introduction
.NET and C# Introduction.NET and C# Introduction
.NET and C# IntroductionSiraj Memon
 
20. Object-Oriented Programming Fundamental Principles
20. Object-Oriented Programming Fundamental Principles20. Object-Oriented Programming Fundamental Principles
20. Object-Oriented Programming Fundamental PrinciplesIntro C# Book
 
What is software engineering
What is software engineeringWhat is software engineering
What is software engineeringJennifer Polack
 
Introduction to .net framework
Introduction to .net frameworkIntroduction to .net framework
Introduction to .net frameworkArun Prasad
 
10 books that every developer must read
10 books that every developer must read10 books that every developer must read
10 books that every developer must readGanesh Samarthyam
 
17. Trees and Graphs
17. Trees and Graphs17. Trees and Graphs
17. Trees and GraphsIntro C# Book
 
Visualising Data with Code
Visualising Data with CodeVisualising Data with Code
Visualising Data with CodeRi Liu
 
[GER] Lessons learned: Modern JVM Languages besides Java
[GER] Lessons learned: Modern JVM Languages besides Java[GER] Lessons learned: Modern JVM Languages besides Java
[GER] Lessons learned: Modern JVM Languages besides JavaKai Wähner
 
Multithreading in c# mit tpl
Multithreading in c# mit tplMultithreading in c# mit tpl
Multithreading in c# mit tplDavidT27
 

Destaque (20)

Einführung in .NET
Einführung in .NETEinführung in .NET
Einführung in .NET
 
".NET und jetzt!" C# in 21 Tagen oder doch besser Best Practices
".NET und jetzt!" C# in 21 Tagen oder doch besser Best Practices".NET und jetzt!" C# in 21 Tagen oder doch besser Best Practices
".NET und jetzt!" C# in 21 Tagen oder doch besser Best Practices
 
C# für Fortgeschrittene
C# für FortgeschritteneC# für Fortgeschrittene
C# für Fortgeschrittene
 
Los fósiles (1)
Los fósiles (1)Los fósiles (1)
Los fósiles (1)
 
Roadmap von Microsoft UI Technologien und Windows 8
Roadmap von Microsoft UI Technologien und Windows 8Roadmap von Microsoft UI Technologien und Windows 8
Roadmap von Microsoft UI Technologien und Windows 8
 
14. Defining Classes
14. Defining Classes14. Defining Classes
14. Defining Classes
 
0. Course Introduction
0. Course Introduction0. Course Introduction
0. Course Introduction
 
C# basics
 C# basics C# basics
C# basics
 
08. Numeral Systems
08. Numeral Systems08. Numeral Systems
08. Numeral Systems
 
C# Tutorial
C# Tutorial C# Tutorial
C# Tutorial
 
.NET and C# Introduction
.NET and C# Introduction.NET and C# Introduction
.NET and C# Introduction
 
20. Object-Oriented Programming Fundamental Principles
20. Object-Oriented Programming Fundamental Principles20. Object-Oriented Programming Fundamental Principles
20. Object-Oriented Programming Fundamental Principles
 
What is software engineering
What is software engineeringWhat is software engineering
What is software engineering
 
Introduction to .net framework
Introduction to .net frameworkIntroduction to .net framework
Introduction to .net framework
 
10 books that every developer must read
10 books that every developer must read10 books that every developer must read
10 books that every developer must read
 
Cloud History 101
Cloud History 101Cloud History 101
Cloud History 101
 
17. Trees and Graphs
17. Trees and Graphs17. Trees and Graphs
17. Trees and Graphs
 
Visualising Data with Code
Visualising Data with CodeVisualising Data with Code
Visualising Data with Code
 
[GER] Lessons learned: Modern JVM Languages besides Java
[GER] Lessons learned: Modern JVM Languages besides Java[GER] Lessons learned: Modern JVM Languages besides Java
[GER] Lessons learned: Modern JVM Languages besides Java
 
Multithreading in c# mit tpl
Multithreading in c# mit tplMultithreading in c# mit tpl
Multithreading in c# mit tpl
 

Semelhante a Einführung in .NET mit C#

LINQ - Einheitlicher Datenzugriff in .NET
LINQ - Einheitlicher Datenzugriff in .NETLINQ - Einheitlicher Datenzugriff in .NET
LINQ - Einheitlicher Datenzugriff in .NETGFU Cyrus AG
 
Text Template Transformation Toolkit (T4)
Text Template Transformation Toolkit (T4)Text Template Transformation Toolkit (T4)
Text Template Transformation Toolkit (T4)NETUserGroupBern
 
Taugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Taugt AngularJS wirklich was? Erfahrungsbericht und AusblickTaugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Taugt AngularJS wirklich was? Erfahrungsbericht und AusblickPhilipp Burgmer
 
Implementierung der Knowledge Engineering Workbench in myCBR
Implementierung der Knowledge Engineering Workbench in myCBRImplementierung der Knowledge Engineering Workbench in myCBR
Implementierung der Knowledge Engineering Workbench in myCBRAlexander Hundt
 
C API for Lotus Notes & Domino
C API for Lotus Notes & DominoC API for Lotus Notes & Domino
C API for Lotus Notes & DominoUlrich Krause
 
Top 10 Internet Trends 2001
Top 10 Internet Trends 2001Top 10 Internet Trends 2001
Top 10 Internet Trends 2001Jürg Stuker
 
C / C++ Api for Beginners
C / C++ Api for BeginnersC / C++ Api for Beginners
C / C++ Api for BeginnersUlrich Krause
 
Automatisierungsmöglichkeiten beim Legacy-Reengineering - Andres Koch, Object...
Automatisierungsmöglichkeiten beim Legacy-Reengineering - Andres Koch, Object...Automatisierungsmöglichkeiten beim Legacy-Reengineering - Andres Koch, Object...
Automatisierungsmöglichkeiten beim Legacy-Reengineering - Andres Koch, Object...BATbern
 
Seit 10 Jahren mit Python: Quantax, ein Risk-Management-System für Banken
Seit 10 Jahren mit Python: Quantax, ein Risk-Management-System für Banken Seit 10 Jahren mit Python: Quantax, ein Risk-Management-System für Banken
Seit 10 Jahren mit Python: Quantax, ein Risk-Management-System für Banken Martin Gfeller
 
Ruby und Rails für .NET Entwickler
Ruby und Rails für .NET EntwicklerRuby und Rails für .NET Entwickler
Ruby und Rails für .NET EntwicklerNETUserGroupBern
 
BASTA! 2016 - Roslyn & Visual Studio Extensions
BASTA! 2016 - Roslyn & Visual Studio ExtensionsBASTA! 2016 - Roslyn & Visual Studio Extensions
BASTA! 2016 - Roslyn & Visual Studio ExtensionsRobin Sedlaczek
 
LAIK: A Library for Fault Tolerant Distribution of Global Data
LAIK: A Library for Fault Tolerant Distribution of Global DataLAIK: A Library for Fault Tolerant Distribution of Global Data
LAIK: A Library for Fault Tolerant Distribution of Global DataDai Yang
 
Inter Prozedurale Zeigeranalyse
Inter Prozedurale ZeigeranalyseInter Prozedurale Zeigeranalyse
Inter Prozedurale ZeigeranalyseTim Furche
 
DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...
DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...
DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...Robin Sedlaczek
 
Domain-Specific Languages (DSLs) entwickeln und anwenden
Domain-Specific Languages (DSLs) entwickeln und anwendenDomain-Specific Languages (DSLs) entwickeln und anwenden
Domain-Specific Languages (DSLs) entwickeln und anwendenRoland Ewald
 

Semelhante a Einführung in .NET mit C# (20)

.NET und jetzt!
.NET und jetzt!.NET und jetzt!
.NET und jetzt!
 
LINQ - Einheitlicher Datenzugriff in .NET
LINQ - Einheitlicher Datenzugriff in .NETLINQ - Einheitlicher Datenzugriff in .NET
LINQ - Einheitlicher Datenzugriff in .NET
 
Text Template Transformation Toolkit (T4)
Text Template Transformation Toolkit (T4)Text Template Transformation Toolkit (T4)
Text Template Transformation Toolkit (T4)
 
C++ kompakt
C++ kompaktC++ kompakt
C++ kompakt
 
Taugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Taugt AngularJS wirklich was? Erfahrungsbericht und AusblickTaugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Taugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
 
Bit WiSe 2013 | Basisinformationstechnologie I - 08: Programmiersprachen I
Bit WiSe 2013 | Basisinformationstechnologie I - 08: Programmiersprachen IBit WiSe 2013 | Basisinformationstechnologie I - 08: Programmiersprachen I
Bit WiSe 2013 | Basisinformationstechnologie I - 08: Programmiersprachen I
 
Enterprise JS
Enterprise JS Enterprise JS
Enterprise JS
 
Implementierung der Knowledge Engineering Workbench in myCBR
Implementierung der Knowledge Engineering Workbench in myCBRImplementierung der Knowledge Engineering Workbench in myCBR
Implementierung der Knowledge Engineering Workbench in myCBR
 
C API for Lotus Notes & Domino
C API for Lotus Notes & DominoC API for Lotus Notes & Domino
C API for Lotus Notes & Domino
 
Top 10 Internet Trends 2001
Top 10 Internet Trends 2001Top 10 Internet Trends 2001
Top 10 Internet Trends 2001
 
C / C++ Api for Beginners
C / C++ Api for BeginnersC / C++ Api for Beginners
C / C++ Api for Beginners
 
Automatisierungsmöglichkeiten beim Legacy-Reengineering - Andres Koch, Object...
Automatisierungsmöglichkeiten beim Legacy-Reengineering - Andres Koch, Object...Automatisierungsmöglichkeiten beim Legacy-Reengineering - Andres Koch, Object...
Automatisierungsmöglichkeiten beim Legacy-Reengineering - Andres Koch, Object...
 
Seit 10 Jahren mit Python: Quantax, ein Risk-Management-System für Banken
Seit 10 Jahren mit Python: Quantax, ein Risk-Management-System für Banken Seit 10 Jahren mit Python: Quantax, ein Risk-Management-System für Banken
Seit 10 Jahren mit Python: Quantax, ein Risk-Management-System für Banken
 
Ruby und Rails für .NET Entwickler
Ruby und Rails für .NET EntwicklerRuby und Rails für .NET Entwickler
Ruby und Rails für .NET Entwickler
 
BASTA! 2016 - Roslyn & Visual Studio Extensions
BASTA! 2016 - Roslyn & Visual Studio ExtensionsBASTA! 2016 - Roslyn & Visual Studio Extensions
BASTA! 2016 - Roslyn & Visual Studio Extensions
 
LAIK: A Library for Fault Tolerant Distribution of Global Data
LAIK: A Library for Fault Tolerant Distribution of Global DataLAIK: A Library for Fault Tolerant Distribution of Global Data
LAIK: A Library for Fault Tolerant Distribution of Global Data
 
Inter Prozedurale Zeigeranalyse
Inter Prozedurale ZeigeranalyseInter Prozedurale Zeigeranalyse
Inter Prozedurale Zeigeranalyse
 
PLUX.NET – SOFTWAREKOMPOSITION DURCH PLUG & PLAY
PLUX.NET – SOFTWAREKOMPOSITION DURCH PLUG & PLAYPLUX.NET – SOFTWAREKOMPOSITION DURCH PLUG & PLAY
PLUX.NET – SOFTWAREKOMPOSITION DURCH PLUG & PLAY
 
DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...
DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...
DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...
 
Domain-Specific Languages (DSLs) entwickeln und anwenden
Domain-Specific Languages (DSLs) entwickeln und anwendenDomain-Specific Languages (DSLs) entwickeln und anwenden
Domain-Specific Languages (DSLs) entwickeln und anwenden
 

Mais de mspgermany

Windows Phone 7: jetzt wird gecodet
Windows Phone 7: jetzt wird gecodetWindows Phone 7: jetzt wird gecodet
Windows Phone 7: jetzt wird gecodetmspgermany
 
Softwarequalität mit Visual Studio 2010
Softwarequalität mit Visual Studio 2010Softwarequalität mit Visual Studio 2010
Softwarequalität mit Visual Studio 2010mspgermany
 
Einführung in die Spieleprogrammierung mit XNA
Einführung in die Spieleprogrammierung mit XNAEinführung in die Spieleprogrammierung mit XNA
Einführung in die Spieleprogrammierung mit XNAmspgermany
 
Office-Programmierung mit VBA
Office-Programmierung mit VBAOffice-Programmierung mit VBA
Office-Programmierung mit VBAmspgermany
 
Windows Server 2008 R2 – Hyper-V
Windows Server 2008 R2 – Hyper-VWindows Server 2008 R2 – Hyper-V
Windows Server 2008 R2 – Hyper-Vmspgermany
 
Windows Embedded Compact 7 Einführung - Ausblick – Möglichkeiten
Windows Embedded Compact 7 Einführung - Ausblick – MöglichkeitenWindows Embedded Compact 7 Einführung - Ausblick – Möglichkeiten
Windows Embedded Compact 7 Einführung - Ausblick – Möglichkeitenmspgermany
 
Präsentationstraining PowerPoint Karaoke Version 2
Präsentationstraining PowerPoint Karaoke Version 2Präsentationstraining PowerPoint Karaoke Version 2
Präsentationstraining PowerPoint Karaoke Version 2mspgermany
 
Mit Stil ans Ziel
Mit Stil ans ZielMit Stil ans Ziel
Mit Stil ans Zielmspgermany
 
Präsentationstraining PowerPoint Karaoke
Präsentationstraining PowerPoint KaraokePräsentationstraining PowerPoint Karaoke
Präsentationstraining PowerPoint Karaokemspgermany
 
Windows Phone 7
Windows Phone 7Windows Phone 7
Windows Phone 7mspgermany
 
Grundlagen der anwendungsentwicklung für windows phone 7
Grundlagen der anwendungsentwicklung für windows phone 7Grundlagen der anwendungsentwicklung für windows phone 7
Grundlagen der anwendungsentwicklung für windows phone 7mspgermany
 
Usergroup 02 Berlin Windows7
Usergroup 02 Berlin Windows7Usergroup 02 Berlin Windows7
Usergroup 02 Berlin Windows7mspgermany
 
Usergroup 02 Berlin Surface
Usergroup 02 Berlin SurfaceUsergroup 02 Berlin Surface
Usergroup 02 Berlin Surfacemspgermany
 
Usergroup02 Berlin IE8
Usergroup02 Berlin IE8Usergroup02 Berlin IE8
Usergroup02 Berlin IE8mspgermany
 

Mais de mspgermany (14)

Windows Phone 7: jetzt wird gecodet
Windows Phone 7: jetzt wird gecodetWindows Phone 7: jetzt wird gecodet
Windows Phone 7: jetzt wird gecodet
 
Softwarequalität mit Visual Studio 2010
Softwarequalität mit Visual Studio 2010Softwarequalität mit Visual Studio 2010
Softwarequalität mit Visual Studio 2010
 
Einführung in die Spieleprogrammierung mit XNA
Einführung in die Spieleprogrammierung mit XNAEinführung in die Spieleprogrammierung mit XNA
Einführung in die Spieleprogrammierung mit XNA
 
Office-Programmierung mit VBA
Office-Programmierung mit VBAOffice-Programmierung mit VBA
Office-Programmierung mit VBA
 
Windows Server 2008 R2 – Hyper-V
Windows Server 2008 R2 – Hyper-VWindows Server 2008 R2 – Hyper-V
Windows Server 2008 R2 – Hyper-V
 
Windows Embedded Compact 7 Einführung - Ausblick – Möglichkeiten
Windows Embedded Compact 7 Einführung - Ausblick – MöglichkeitenWindows Embedded Compact 7 Einführung - Ausblick – Möglichkeiten
Windows Embedded Compact 7 Einführung - Ausblick – Möglichkeiten
 
Präsentationstraining PowerPoint Karaoke Version 2
Präsentationstraining PowerPoint Karaoke Version 2Präsentationstraining PowerPoint Karaoke Version 2
Präsentationstraining PowerPoint Karaoke Version 2
 
Mit Stil ans Ziel
Mit Stil ans ZielMit Stil ans Ziel
Mit Stil ans Ziel
 
Präsentationstraining PowerPoint Karaoke
Präsentationstraining PowerPoint KaraokePräsentationstraining PowerPoint Karaoke
Präsentationstraining PowerPoint Karaoke
 
Windows Phone 7
Windows Phone 7Windows Phone 7
Windows Phone 7
 
Grundlagen der anwendungsentwicklung für windows phone 7
Grundlagen der anwendungsentwicklung für windows phone 7Grundlagen der anwendungsentwicklung für windows phone 7
Grundlagen der anwendungsentwicklung für windows phone 7
 
Usergroup 02 Berlin Windows7
Usergroup 02 Berlin Windows7Usergroup 02 Berlin Windows7
Usergroup 02 Berlin Windows7
 
Usergroup 02 Berlin Surface
Usergroup 02 Berlin SurfaceUsergroup 02 Berlin Surface
Usergroup 02 Berlin Surface
 
Usergroup02 Berlin IE8
Usergroup02 Berlin IE8Usergroup02 Berlin IE8
Usergroup02 Berlin IE8
 

Einführung in .NET mit C#

  • 1. Einführung in C# Präsentation von: Georg Hinkel Microsoft Student Partner KIT Karlsruhe Georg.hinkel@studentpartners.de
  • 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. Grober Aufbau der Plattform und Klärung der Begriffe Architektur & Terminologie
  • 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 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 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 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 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 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 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 Zusammenfassung • Grobe Architektur ähnlich Java • Sprachvielfalt Einführung in .NET und C# - Georg Hinkel
  • 12. Syntax, Properties, Delegates, Generics, ValueTypes, Structs Syntax C#
  • 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 Klassen – 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 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 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 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 Wortes auch klein Einführung in .NET und C# - Georg Hinkel
  • 18. 18 Nomenklautur Objektorientierung allgemein .NET Klasse Klasse - Struktur/Struct - Delegate - Event/Ereignis Attribut Klassenvariable/Feld Feld Array - (Annotation in Java) Attribut - Property Methode Methode Funktion Funktion Einführung in .NET und C# - Georg Hinkel
  • 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 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 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 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 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 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 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 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 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 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 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
  • 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 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 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 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 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 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 Enumerationen – 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 Enumerationen – 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 Enumerationen – 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
  • 41. Vielen Dank für eure Aufmerksamkeit! Präsentation von: Georg Hinkel Microsoft Student Partner KIT Karlsruhe georg.hinkel@studentpartners.de
  • 42. 42 IT 4 Students Der Newsletter rund um Microsoft Angebote für Studierende Online: www.microsoft.de/dreamspark Einführung in .NET und C# - Georg Hinkel
  • 43. 43 /TechStudent Online Facebook – das Portal für Geeks, Nerds und www.facebook.com/ alle, die es noch werden wollen techstudentgermany www.microsoft.de/techstuden t Einführung in .NET und C# - Georg Hinkel
  • 44. 44 MSDN AA MSDN AA = Microsoft Developer Network – Academic Alliance Entwicklungsumgebungen, Datenbanken, Betriebssysteme wie … Windows 7, Visio, Project, Visual Studio Ausstattung der angebotenen Software für alle immatrikulierten Studierenden und die Lehreinrichtung Online: www.msdnaa.de Einführung in .NET und C# - Georg Hinkel
  • 45. 45 DreamSpark Kostenloser Softwaredownload für alle Studierenden SDK, Visual Studio, Virtual PC, SQL Server und Co. Online: www.microsoft.de/dreamspark Einführung in .NET und C# - Georg Hinkel