mk-prg-net \net \ cs \course \oo

C# modern

  1. Entwicklung der Programmiersprachen
  2. C# Historie
  3. Aktuellsten Compiler in VS 2015 nutzen: Installiere nuget packages Microsoft.Net.Compilers und System.ValueTuple

Allgemeine Projektverwaltung

  1. Projektmappe und Projekte
    1. Beispielprojekt Bankhaus_Dagobert
    2. Projekttypen: Klassenbibliothek, Testprojekt, Winform, Webanwendung und WPF
    3. Abbildungen der Schichten auf Projekte:
      1. Business Layer (abstraktes Objektmodell = Domain) → BankBusinessLayer.dll
      2. Dataaccess Layer (Implementierung des abstrakten Objektmodells´, z.B. auf einer Datenbank) → BankDataAccessLayer.dll
      3. GUI → BankGui.WinForm.exe
  2. NuGet Package Manager
    1. Einführung in die Verwaltung von Abhängigkeiten zwischen Bibliotheken
    2. Installation der Beispielbibliothek in der Projektmappe mit den Übungen
    3. Eignene nuget- Packages anlegen und in ein selbstdefiniertem Repository veröffentlichen.

Details zu Klassen

  1. Klassenbildung über Objektmengen
  2. Innerer Zustand, Eigenschaften und Methoden
  3. Wertetypen vs- Referenztypen
    1. struct- vs. class Blöcke
    2. copy by value vs. copy by reference
    3. Lebenszyklus, Konstruktoren, Dispose und Destruktor
      1. Objektinitialisierer und annonyme Typen
      2. Dispose- Schnittstelle
      3. Dispose manuell und in using Block
  4. Zugriffsmodifikatoren : z.B. public vs. internal (siehe CSharp45.Basics/ _04_Objektorientiert/ Astro/ inMem/ Konstruktoren von Galaxie, Stern)
  5. Vererbung als Abstraktionskonzept und als Konzept zur Wiederverwendung von Code
    1. Klasse Himmeslkörper als Verallgemeinerung von Galaxie und Stern (Basics._04_Objektorientiert.Astro)
    2. Mengen von Sterne, Galaxien und Planeten als Arrays von Himmelskörpern
    3. Verallgemeinern der Masseberechnung von Himmelskörpern dank virtuelle Methoden → Begriffsbildung "abstrakte Klasse"
    4. new vs. override (Bsp. Auto.tanken und Auto.tanken_polymorph)

Fehlerbehandlung

  1. Strukturierte Fehlerbehandlung mittels Try .. Catch
  2. Fehlerklassen
  3. ThrowIf...() Funktionen zur Prüfung von Vorbedingungen (mko.TraceHlp)

Architektur und Design- Patterns

  1. Agile Softwareentwicklung und der vertikale Schnitt
  2. TDD: Test Driven Development- Testprojekte in Visual Studio
  3. Softwarearchitektur
  4. SOLID- Code
    1. Mit Dekoratoren das Single Responsibility Princip implementieren.
    2. Mit IOC- Containern Dependency Injection implementieren.

Schnittstellen

  1. Wir erinnern uns: IDisposable
  2. Wie Schnittstellen in .NET Mengenkonzepte abbilden → Schnittstellenvererbung als Abstraktionskonzept
    1. Implementieren von IEnumarable in der Klasse PrimSet
    2. Implementieren von IComparable für sortierbare Listen aus Preis- Objekten
    3. Vereinfachte Implementierung von IEnumerator mittels yield
  3. Schnittstellenvererbung vs. Implementierungsvererbung

Generische Typen

  1. Motivation zur generischen Programmierung: Sortiere „Äpfel und Birnen“
  2. Bsp: ArrayInt und ArrayGenerisch<t> (Indexer)
  3. Vordefiniere generische Typen
  4. Selber generische Typen mit Einschränkungen definieren (Bsp.: struct mko.BI.Interval<T>)
  5. Co- Varianz (Beispiel: IEnumerable<out T>")

Objekt- funktionales Programmieren und LINQ

  1. Einsprungadressen mittels Delegates verwalten
    1. Die vordefinierten generischen Typfamile Func<...> und Actions<...>
    2. Einsprungadressen speichern, aufrufen, entfernen aus einer Delegate- Variablen
  2. Lambda- Ausdrücke: Funktionen inline deklarieren
  3. Listenverarbeitung mit Lambda und LINQ
    1. Allgemeine Listenoperationen wie Take, Skip, Concat
    2. Liste mit Preisen sortieren
    3. Liste mit Preisen Filtern
    4. Liste mit Preisen in $ umrechnen
  4. Zugriff auf Datenbanken mittels Linq

    1. Installation von Kepler-DB
    2. Objektrelationalen Mapper mittels Entity- Framework einrichten
    3. Zugriff auf Tabellen mittels Linq

Domain Model, Business Layer und DAL

  1. Pattern Klassenfabrik: Beispiel Basics.Astro.inMem.UniversumMitDI
  2. Repositories in FunWithAsteroids

Patterns für die Entwicklung graphischer Oberflächen

  1. Vergleiche GUI-Frameworks (CScharp45.GUI))
  2. MV- Patterns
  3. Implementieren einer Windows Forms GUI für FunWithAsteroids auf Basis des MVP- Pattern (Image Map in Winforms)
    1. Implementieren und Testen der Benutzerinteraktion mittels MVP
    2. Integration von MVP in der Windows Forms Anwendung
    3. Vergleich mit der ursrünglichen Implementation
  4. MVC- Pattern am Beispiel von Timeline.UI und Calculator.MVC
    1. ASP.NET MVC Intro

Restful Applikationen und WebAPI: Infrastruktur für Industrie 4.0

  1. Bsp FileUploadRestful

Multithreading und asynchrone Programmierung

  1. Grundlagen
  2. Methoden mit Threads aus dem Threadpool via Delegate starten
  3. Vorteile des Threadpools
  4. Nachteile der direkten Nutzung von Threads zwecks Vollauslastung des Rechners
  5. Vollauslastung mittels TPL (Task Parallel Library) erreichen
  6. Asynchrone Methoden mittels async/await