Column #col2

Schulungsbeschreibung: Modernes Design mit C# und .NET

1. Grundlagen der Objektorientierung
Zunächst lernen Sie den Lebenszyklus eines Objekts in C# kennen. Sie erfahren, wie Objekte erzeugt und initialisiert werden und welche unerwarteten Effekte dabei auftreten können. Darüber hinaus zeigen wir Ihnen die Besonderheiten von C# beim Löschen der Objekte. Als nächstes werden Vererbung und Polymorphismus betrachtet. Sie lernen diese Konzepte im Design und bei der Implementierung zu unterscheiden. Außerdem zeigen wir Ihnen hierzu einige Besonderheiten von C# und erklären Ihnen in diesem Zusammenhang "frühes" und "spätes" Binden.

2. Objektorientiertes Design
In diesem Kapitel lernen Sie, woran man schlechtes Softwaredesign erkennt, und erhalten nicht nur Kriterien für ein gutes Design, sondern lernen Designregeln und Techniken sowie deren Vor- und Nachteile kennen. Um die universelle Gültigkeit der vorgestellten Konzepte zu demonstrieren, leiten wir bekannte Muster (Patterns) mit den erlernten Techniken her. Sie erfahren außerdem, welchen Designproblemen man in jedem Projekt begegnet (z.B. der Umgang mit Vererbung oder Strategien zur Ausnahmebehandlung) und welche Lösungen sich bewährt haben. Zum Abschluss dieses Kapitels vergleichen wir unterschiedliche Teststrategien und ihren Einfluss auf das Design.

3. Funktionale Programmierung
Objektorientierte Programmiersprachen werden zunehmend durch funktionale Konzepte ergänzt. C# spielt hierbei eine Vorreiterrolle. In diesem Kapitel erklären wir zunächst die Begriffe, die benötigt werden, um die funktionalen Elemente von C# zu verstehen. Alle Beispiele werden in F# gezeigt, damit Sie einen ersten Eindruck von F# bekommen, der funktionalen Programmiersprache für .NET.

4. Gutes Codieren
Die Fähigkeit, lesbaren und fehlerfreien Programmcode zu schreiben, wird oft unterschätzt. In diesem Kapitel lernen Sie Kriterien für lesbaren und prägnanten Programmcode kennen. Unterschiedliche Codierstile werden durch Bespiele miteinander verglichen, so dass Sie sich selbst eine Meinung darüber bilden können, wie prägnanter Programmcode entsteht.

5. Design mit C#
Nun zeigen wir Ihnen, wie einfach es ist, mit den Sprachmitteln von C# ein gutes Design zu realisieren. Sie erfahren beispielsweise, was ein Fluent-API ist und wieso es dabei hilft, prägnanten Programmcode zu schreiben. Dabei lernen Sie alles über Lambda-Ausdrücke, Extension-Methoden und das LINQ-API. Den Abschluss bildet eine Einführung in das Thema Metadaten. Sie lernen, wie man Metadaten in C# einsetzt, wie man seine eigenen Metadaten in Form von Attributen schreibt und was .NET intern daraus macht.

6. Funktionale Programmierung mit C#
Auch mit C# lässt sich eleganter funktionaler Programmcode schreiben, wenn man versteht, wie die wesentlichen funktionalen Konzepte in C# umgesetzt sind. Sie lernen, welche Sprachmittel und Bibliotheken dabei zum Einsatz kommen und wie diese Ihren Programmcode signifikant einfacher machen. Außerdem zeigen wir Ihnen, wie unkompliziert die Zusammenarbeit zwischen C#-Modulen und F#-Modulen ist.

7. Parallelität in C#
Der Einsatz von Parallelität wird beim Design von Softwaresystemen immer wichtiger, da die Single-Core-Prozessorleistung kaum mehr wächst. C# beinhaltet von Anfang an einige Konzepte zum Erzeugen, Benutzen und Synchronisieren von Threads, die Sie als erstes gezeigt bekommen. Inzwischen gibt es aber ungleich elegantere Methoden, ein Programm durch Parallelität zu beschleunigen: PLINQ für Datenparallelität und TPL für Aufgabenparallelität. Die Erläuterung dieser Methoden bildet den Hauptteil des Kapitels. Zum Abschluss zeigen wir Ihnen die Vorteile und Grenzen des Einsatzes von parallelen Konzepten.

8. Begleitende Übungen
Der Schwerpunkt der Schulung liegt auf der Vermittlung von konzeptionellem Wissen. Zusätzlich zeigen wir Ihnen durch zahlreichen Beispiel-Programme, wie die besprochenen Konzepte in C# bzw. F# umgesetzt werden. Der Diskussion der Vor- und Nachteile der einzelnen Lösungsansätze wird viel Raum eingeräumt. Die praktische Demonstration der Beispiele erfolgt durch den Dozenten, Sie benötigen also kein spezielles Wissen im Umgang mit der Entwicklungsumgebung.