A
dvanced
S
ervices
Grundlagen 2
(objektorientiert, nicht graphisch)
Klassen und Objekte
Klassen als Datentypen
Konstruktoren
nichtstatische Methoden
Allgemeiner Aufbau einer Klasse
Die Bestandteile einer Klasse
Der Datenteil einer Klasse
Set- und Get-Methoden
Properties
Properties selbst codieren
Properties automatisch generieren
Konstruktoren
Destruktor
Lokale und (klassen-)globale Variablen
Die Referenz this
Übungen
Vererbung 1
Der "hat ein" Ansatz (member objects)
Der "ist ein" Ansatz (inheriting)..
Jede Klasse erbt von Objekt
Die Methoden der Klasse Object
Wie ein Objekt instanziiert wird (Konstruktoren und Destruktor bei Vererbung)
Wie ein Objekt entsteht
Überschreiben von Methoden method overriding), das Schlüsselwort "new" für Methoden
overriding versus overloading
method hiding deutlich machen mit "new" (optional)
Der base-Mechanismus für Methoden
Der base-Mechanismus für Konstruktoren
this als Konstruktorname
Typverwandtschaft durch Vererbung
Späte Bindung (late binding) mit virtual und override
Die Voreinstellung in C# : late binding ist abgeschaltet
Mit virtual und override wird late binding eingeschaltet
Weitervererben von virtual
Der Destruktor und die Finalize()-Methode
Vererbungshierarchien und Mehrfachvererbung
Vererbung verbieten mit sealed
Überschreiben verbieten mit sealed
Object als Rootklasse
Zusammenfassung
Übungen
structs (Strukturen)
Statische Daten und Methoden
Statische Daten
Statischer Konstruktor (static initializer)
Statische Methoden und statische Daten
Statische Properties
Zusammenfassung
Übungen
Accessmodifier
Basiswissen
Zugriffsmodifizierer für Methoden und Daten
private
public
protected
internal
protected internal
Übungen
Modifizierer für Klassen
Basiswissen
public
internal
sealed
static
partial
Abstrakte Klassen
Basiswissen
Abstrakte Methoden
Die Implementierung abstrakter Methoden
Abstrakte Properties
Die Implementierung abstrakter Properties
Übungen
Interfaces
Von der abstrakten Klasse zum Interface
Definition
Implementieren eines Interfaces
Implementierung durch eine reale Kindklasse
Implementierung durch eine abstrakte Kindklasse
Typverwandtschaft durch Ableiten eines Interfaces
Verwendung von Interfaces
Vererbung bei Interfaces
Zusammenfassung
Interfaces 2
Das Interface IComparable
Die klassische Implementierung eines Interfaces
Die explizite (aber versteckte) Implementierung
Wozu gibt es die explizite Implementierung
Properties in Interfaces
Einige Standardklassen
Array
Convert
StringBuilder
String
Extension Methods
Extension Methods für reale Klassen
Extension Methods für abstrakte Klassen
Extension Methods für Interfaces
Extension Methods in einem separaten Assembly (DLL)
Nichtgenerische Containerklassen
ArrayList
BitArray
Queue
Stack
HashTable
SortedList
Generics in Collections
Warum Generics?
Einfache Beispiele
Werttypen und Autoboxing bzw. Unboxing
Keine Typverwandtschaft
Generische Collections in Methodensignaturen
Generische Interfaces, Klassen und Methoden
Einleitung
Generische Interfaces
Typ wird realisiert
Typ wird übernommen
Einschränkungen generischer Typen (Constraints) mit der where-Klausel
where T : class
where T : struct
where T : new()
where T : IrgendeineKlasse
where T : IrgendeinInterface
Generische Klassen
Zwei wichtige Einschränkungen
Beispiel 1: Eine generische Klasse mit einem generischen Datenfeld
Beispiel 2: Implementierung von System.IComparable<T>
Generische Methoden
Generische Containerklassen
List
Collection
LinkedList
Queue
Stack
HashSet
SortedSet
Generische Key-Value-Container
Dictionary<Tk,Tv>
SortedDictionary<Tk,Tv>
SortedList<Tk,Tv>