mk-prg-net \kurs \2016 \11 \07 \cs \oo

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

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 Repositories

  1. Pattern Klassenfabrik: Beispiel Basics.Astro.inMem.UniversumMitDI

Patterns für die Entwicklung graphischer Oberflächen

  1. Vergleiche GUI-Frameworks (CScharp45.GUI))
  2. MV- Patterns
  3. ASP.NET MVC Intro
  4. MVP- Pattern am Bespiel der WindowsForms (Suche Smiles)
  5. WebApi SelfHosting

Multithreading

  1. Threads: Threadklasse, Threadpool, asynchrone Methodenstarts mittels Delegates
  2. Tasks: TPL- Task, Primzahlscanner asynchron, async- await