C# modern
- Entwicklung der Programmiersprachen
- C# Historie
- Aktuellsten Compiler in VS 2015 nutzen: Installiere nuget packages Microsoft.Net.Compilers und System.ValueTuple
Allgemeine Projektverwaltung
-
Projektmappe und Projekte
- Beispielprojekt Bankhaus_Dagobert
- Projekttypen: Klassenbibliothek, Testprojekt, Winform, Webanwendung und WPF
-
Abbildungen der Schichten auf Projekte:
- Business Layer (abstraktes Objektmodell = Domain) → BankBusinessLayer.dll
- Dataaccess Layer (Implementierung des abstrakten Objektmodells´, z.B. auf einer Datenbank) → BankDataAccessLayer.dll
- GUI → BankGui.WinForm.exe
-
NuGet Package Manager
- Einführung in die Verwaltung von Abhängigkeiten zwischen Bibliotheken
- Installation der Beispielbibliothek in der Projektmappe mit den Übungen
- Eignene nuget- Packages anlegen und in ein selbstdefiniertem Repository veröffentlichen.
Details zu Klassen
- Klassenbildung über Objektmengen
- Innerer Zustand, Eigenschaften und Methoden
-
Wertetypen vs- Referenztypen
- struct- vs. class Blöcke
- copy by value vs. copy by reference
-
Lebenszyklus, Konstruktoren, Dispose und Destruktor
- Objektinitialisierer und annonyme Typen
- Dispose- Schnittstelle
- Dispose manuell und in using Block
- Zugriffsmodifikatoren : z.B. public vs. internal (siehe CSharp45.Basics/ _04_Objektorientiert/ Astro/ inMem/ Konstruktoren von Galaxie, Stern)
-
Vererbung als Abstraktionskonzept und als Konzept zur Wiederverwendung
von Code
- Klasse Himmeslkörper als Verallgemeinerung von Galaxie und Stern (Basics._04_Objektorientiert.Astro)
- Mengen von Sterne, Galaxien und Planeten als Arrays von Himmelskörpern
- Verallgemeinern der Masseberechnung von Himmelskörpern dank virtuelle Methoden → Begriffsbildung "abstrakte Klasse"
- new vs. override (Bsp. Auto.tanken und Auto.tanken_polymorph)
Fehlerbehandlung
- Strukturierte Fehlerbehandlung mittels Try .. Catch
- Fehlerklassen
- ThrowIf...() Funktionen zur Prüfung von Vorbedingungen (mko.TraceHlp)
Architektur und Design- Patterns
- Agile Softwareentwicklung und der vertikale Schnitt
- TDD: Test Driven Development- Testprojekte in Visual Studio
- Softwarearchitektur
-
SOLID- Code
- Mit Dekoratoren das Single Responsibility Princip implementieren.
- Mit IOC- Containern Dependency Injection implementieren.
Schnittstellen
-
Wir erinnern uns:
IDisposable
-
Wie Schnittstellen in .NET Mengenkonzepte abbilden
→ Schnittstellenvererbung als Abstraktionskonzept
- Implementieren von
IEnumarable
in der Klasse PrimSet - Implementieren von
IComparable
für sortierbare Listen aus Preis- Objekten - Vereinfachte Implementierung von
IEnumerator
mittelsyield
- Implementieren von
- Schnittstellenvererbung vs. Implementierungsvererbung
Generische Typen
- Motivation zur generischen Programmierung: Sortiere „Äpfel und Birnen“
- Bsp: ArrayInt und ArrayGenerisch<t> (Indexer)
- Vordefiniere generische Typen
- Selber generische Typen mit Einschränkungen definieren (Bsp.: struct mko.BI.Interval<T>)
- Co- Varianz (Beispiel: IEnumerable<out T>")
Objekt- funktionales Programmieren und LINQ
-
Einsprungadressen mittels Delegates verwalten
- Die vordefinierten generischen Typfamile Func<...> und Actions<...>
- Einsprungadressen speichern, aufrufen, entfernen aus einer Delegate- Variablen
- Lambda- Ausdrücke: Funktionen inline deklarieren
-
Listenverarbeitung mit Lambda und LINQ
- Allgemeine Listenoperationen wie Take, Skip, Concat
- Liste mit Preisen sortieren
- Liste mit Preisen Filtern
- Liste mit Preisen in $ umrechnen
-
Zugriff auf Datenbanken mittels Linq
- Installation von Kepler-DB
- Objektrelationalen Mapper mittels Entity- Framework einrichten
- Zugriff auf Tabellen mittels Linq
Domain Model, Business Layer und DAL
- Pattern Klassenfabrik: Beispiel Basics.Astro.inMem.UniversumMitDI
- Repositories in FunWithAsteroids
Patterns für die Entwicklung graphischer Oberflächen
- Vergleiche GUI-Frameworks (CScharp45.GUI))
- MV- Patterns
-
Implementieren einer Windows Forms GUI für FunWithAsteroids auf Basis des MVP- Pattern
(Image Map in Winforms)
- Implementieren und Testen der Benutzerinteraktion mittels MVP
- Integration von MVP in der Windows Forms Anwendung
- Vergleich mit der ursrünglichen Implementation
- MVC- Pattern am Beispiel von Timeline.UI und Calculator.MVC
Restful Applikationen und WebAPI: Infrastruktur für Industrie 4.0
Multithreading und asynchrone Programmierung
- Grundlagen
- Methoden mit Threads aus dem Threadpool via Delegate starten
- Vorteile des Threadpools
- Nachteile der direkten Nutzung von Threads zwecks Vollauslastung des Rechners
- Vollauslastung mittels TPL (Task Parallel Library) erreichen
- Asynchrone Methoden mittels async/await