C Sharp (C#) Martin Saternus Senior Student Partner

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

der Universität Oldenburg
der Universität Oldenburg
der Universität Oldenburg
Objektorientierte Programmierung
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
Grundlagen .NET Hilmar Salomo Tobias Richling
Microsoft Academic Program C# 2.0 Was gibts da Neues? Student Technology Conference 2005.
der Universität Oldenburg
Abstrakte Klassen HS Merseburg (FH) WS 06/07.
FH-Hof Einbindung von JavaScript Anweisungen
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Grundlagen der Sprache
Java: Grundlagen der Objektorientierung
Objekte und Arbeitsspeicher
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 5 Polymorphismus Sommersemester 2003 Lars Bernard.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Programmieren mit JAVA
Programmieren mit JAVA
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
VB .NET Proseminar .NET SS04.
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
Abstrakte Klassen, Interface
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
Einführung in die Programmierung Datensammlung
RelationentheorieObjektorientierte Datenbanken AIFB SS Das ODMG-Objektmodell vs. relationales Modell (1/9) ODMG-Objektmodell Literal_type Atomic_literal.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Informatik 1 Übung 8. NACHBESPRECHUNG Übung 8 Rekursion Existiert Weg von A nach B?
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
C# Einheitliches Typsystem
Die .NET Common Language Runtime
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Windows Presentation Foundation, Vorlesung Wintersemester 2013/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 2 Folie 2 XAML (1) s.a.
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Microsoft.NET Framework: Quelle:
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Dynamische Datentypen
EPROG Tutorium #4 Philipp Effenberger
EPROG Tutorium #5 Philipp Effenberger
EPROG Tutorium #3 Philipp Effenberger
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Programmierpraktikum Java SS 2005 Mag.Thomas Hilpold.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
RelationentheorieObjektorientierte Datenbanken  AIFB SS C++-ODL (1/6) Erweiterung des deklarativen Teils einer C++-Klasse Datentypen d_String,
Einführung in die Programmierung mit Java
Java-Kurs Übung Besprechung der Hausaufgabe
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
Einführung in Java PING e.V. Weiterbildung Andreas Rossbacher 24. März 2005.
Microsoft Student Partner
Objektorientierte (OO) Programmierung
C++ FÜR cOMPUTERSPIELENTWICKLER
Dr. Wolfram Amme, Virtuelle Vererbung, Informatik II, FSU Jena, SS Auflösung von Konflikten bei Mehrfachvererbung Umbenennung mehrdeutiger Methoden.
1 Grundsätze objektorientierter Programmierung. Dr. Wolfram Amme, Grundsätze objektorientierter Programmierung, Informatik II, FSU Jena, SS Objektorientierte.
© Tenbusch Oberstufenzentrum Informations- und Medizintechnik Objektorientierte Programmierung mit Java.
„Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen.“
Definition Felder Konstruktor Methoden Beispiel
Implementieren von Klassen
Objektorientierte Programmierung
Polymorphie Überschreiben
 Präsentation transkript:

C Sharp (C#) Martin Saternus Senior Student Partner Microsoft Deutschland GmbH i-martsa@microsoft.com

Agenda Motivation für eine neue Sprache Konzepte der Sprache Umsetzung des Common Type System Syntax von C# Eigenschaften der Sprache

Motivation für eine neue Sprache Komponentenorientierte, auf .NET Plattform zugeschnittene Sprache Unterstützung von Namespaces Native Unterstützung von Technologien der Basisklassenbibliothek Attributgetriebene deklarative Programmierung Saubere Definition der Sprache Erweiterung gegenüber bestehenden modernen Programmiersprachen

Agenda Motivation für eine neue Sprache Konzepte der Sprache Umsetzung des Common Type System Syntax von C# Eigenschaften der Sprache

Code Separation Namespaces Klassen Structs Interfaces Semantische Separation von Quellcode Verhinderung von Namenskollisionen Klassen Container für Quellcode Organisiert auf dem Heap Structs Organisiert auf dem Stack Interfaces

Vererbung Einfachvererbung von Klassen Implementierung von beliebig vielen Interfaces Implementierung von abstrakten Klassen und Methoden Syntaktische Hervorhebung beim Überschreiben (virtual, override) und Neudefinieren (new) von Methoden sealed Implementierung von nicht weitervererbbaren Klassen

Zugriffsrechte public protected private internal internal protected Öffentlicher Zugriff protected Zugriff aus der vererbten Klasse private Zugriff nur innerhalb der Klasse internal Zugriff innerhalb einer Kompilierungseinheit internal protected Zugriff innerhalb einer Kompilierungseinheit oder aus der vererbten Klasse

Agenda Motivation für eine neue Sprache Konzepte der Sprache Umsetzung des Common Type System Syntax von C# Eigenschaften der Sprache

Einheitliches Typsystem Alle Typen erben von System.Object Implizite Konvertierung eines Typen in ein Objekt ist für jeden Typ möglich Stream MemoryStream FileStream Hashtable double int object

Wert- und Referenztypen Boxing Allokiert eine Box und kopiert den Wert hinein Unboxing Prüft den Typ der Box und kopiert Wert heraus int i = 123; object o = i; int j = (int)o; 123 i o System.Int32 j

Simple Typen Integer Type IEEE Floating Point Exact Numeric Type byte, sbyte (8 bit), short, ushort (16 bit) int, uint (32 bit), long, ulong (64 bit) IEEE Floating Point float (precision of 7 digits) double (precision of 15–16 digits) Exact Numeric Type decimal (28 significant digits) Character Types char (single character) string (rich functionality, by-reference type) Boolean Type bool

Agenda Motivation für eine neue Sprache Konzepte der Sprache Umsetzung des Common Type System Syntax von C# Eigenschaften der Sprache

Namespaces Deklaration mit dem Schlüsselwort namespace Referenzierung mit dem Schüsselwort using Keine Bindung an Dateisystem using <Namespace>; namespace <Namespace.Subnamespace> { }

Klassen Enthalten Felder, Properties, Indexer, Methoden, Delegaten, Events Abstrakte Klassen können abstrakte Methoden enthalten Erlauben Einfachvererbung Können von beliebig vielen Interfaces erben Unabhängig vom Dateinamen [Modifizierer] class <Klassenname> [: Basisklasse, Interfaces] { }

Structs Structs sind limitiert Nutzen Eingeschränkte OO Fähigkeiten Werden „geboxt“ wenn sie zu Collections hinzugefügt werden Nutzen Interop Typen wie z.B. komplexe Zahlen Große Datenfelder [Modifizierer] struct <Name> { }

Interfaces Interfaces sind Typen, die keine Implementierung enthalten (alle Methoden sind abstrakt) nicht instanziiert werden können öffentliche Elemente besitzen nur von anderen Interfaces erben können [Modifizierer] interface <Name> [: Interfaces] { }

Felder Klassenvariablen (in Java Attribute) werden in C# als Felder oder eng. Fields bezeichnet Felder müssen im Gegensatz zu lokalen Variablen keinen Wert zugewiesen bekommen Konstante Felder const – Wert wird zur Kompilierungszeit festgelegt readonly – Wert wird im Konstruktor festgelegt [Modifizierer] [const, readonly] <Typ> <Variable>; public readonly string Name;

Properties Komposition aus Feldern und Methoden Schlüsselwort value enthält Wert bei Zuweisung Nutzen bei Schreib- oder lesegeschützten Feldern Validierungen bei Zuweisungen Berechnungen von Werten [Modifizierer] <Typ> <Name> { get { return <Variable>; } set { <Variable> = value; } }

Indexer Properties für Felder und Collections Basierend auf der Property-Idee Konsistenter Weg zur Container-Erstellung [Modifizierer] <Typ> this[<Typ> <Name>] { get { return <Variable[Name]>; } set { <Variable[Name]> = value; } }

Methoden Methoden können überladen werden, müssen aber verschiedene Signaturen besitzen Überschreiben Deklaration als virtual in der Basisklasse Deklaration als override in der abgeleiteten Klasse Neudefinition mit Schlüssenwort new Variable Parameterlisten können mit dem Schlüsselwort params erzeugt werden [Modifizierer] <Typ> <Methodenname> ([<Typ> <Variable>, …]) { }

Delegates und Events Delegates Events Ähnlich zu Funktionspointern in C und C++ Stark typisiert Events Werden über einen Eventhandler konsumiert [Modifizierer] <Typ> delegate <Name> ([<Typ> <Variable>, …]); [Modifizierer] event <Delegate> <EventName>; <Variable>.<EventName> += new <DelegateName>(<Funktionspointer);

Ausdrücke if (<boolscher Ausdruck) { … } {else { … } } switch (<Variable>) { case: <Konstante> break; } While (<boolscher Ausdruck>) { … } do { … } while(<boolscher Ausdruck>) for (<Init>; <boolscher Ausdruck>; <Modi>) { … } foreach (<Typ> <Variable> in <ICollection impl. Typ) { … }

Agenda Motivation für eine neue Sprache Konzepte der Sprache Umsetzung des Common Type System Syntax von C# Eigenschaften der Sprache

Fehlerbehandlung Fehlerbehandlung durch Ausnahmen Ausnahmen werden von System.Exception abgeleitet Abarbeitung von der speziellsten zur allgemeinsten Ausnahme try { } catch ([<Exception Typ> Variable]) [finally }]

Attribute Strukturierte Möglichkeit, Metadaten an Quellcode zu heften Auswertung zur Laufzeit über Reflections Attribute sind Klassen Einheitliche Vorgehensweise erleichtert die Definition eigener Attribute Attribute können an Typen und Member „angehängt“ werden C# Syntax für Attribute Attribute werden einem Subjekt mit eckigen Klammern vorangestellt

Operatoren überladen Operatoren, die überladen werden können Arithmetische Relationale Logische Operatoren, die nicht überladen werden können Spezielle Operatoren sizeof new is typeof

Überlauf-Überprüfung Integer Arithmetiken C, C++ Überlauf checked vs. unchecked Standardmäßig unchecked, mit Ausnahme von Konstanten Änderung durch Compileranweisung “/checked” int i = checked (x * y); checked { int i = x * y; }

Arbeiten mit Pointern Schlüsselwort “ref , um Ein- und Ausgabe-Parameter zu übergeben Schlüsselwort “out”, um Ausgabe-Parameter zu übergeben Schlüsselwörter “ref/out” müssen in Methoden- und Aufrufsignaturen angegeben werden static void Swap(ref int a, ref int b) {...} static void Main() { int x = 1, y = 2; Swap(ref x, ref y); }

Fragen ??? Weiter geht’s am Ask The Expert Stand!