mk-prg-net \kurs \2016 \12 \04 \vb \net

VB.NET

Projektverwaltung mit Visual Studio

  1. Projektmappe und Projekte
  2. Beispielvorhaben Bank

    Abbildung einer in drei Schichten gegliederten Anwendung auf Viual Studio Projekte

    1. Projekmappe Bank
    2. Projekt (Typ Klassenbibliothek) BankBL als Businesslayer
    3. Projekt (Typ Testprojekt) BankBL.Test als Unit-Test für die Businesslayer Komponenten
    4. Projekt (Typ Klassenbibliothek) BankDA als Data- Access Layer
    5. Projekt (Typ Testprojekt) BankDA.Test als Unit-Test für die DataAccess Layer Komponenten
    6. Projekt (Typ Windows Form) Bank.Clinet.WinForm als GUI zur Steuerung der Geschäftslogik
  3. 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. Definition Klasssen und Objekte
  3. Member einer Klasse
    1. Mit Feldern den inneren Zustand implementieren
    2. Über Eigenschaften auf den inneren Zustand zugreifen
    3. Über Methoden mit Objekte kommunizieren
    4. Über Ereignisse die Umgebung von Zustandsänderungen benachrichtigen
    5. Zugriffsmodifikatoren : z.B. public vs. friend (Anwendung: Konstruktor verstecken für Klassenfabrik- Pattern)
  4. Wertetypen vs- Referenztypen
    1. struct- vs. class Blöcke (Point vs. SPoint)
      1. copy by value vs. copy by reference
    2. Lebenszyklus, Konstruktoren, Dispose und Destruktor
      1. Objektinitialisierer und annonyme Typen
      2. Dispose- Schnittstelle
      3. Dispose manuell und in using Block
  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)

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. Funktionale Programmierung in VB
    1. Optionale Parameter
    2. Bennante Parameter
    3. Parameterarrays
  2. Einsprungadressen mittels Delegates verwalten
    1. Die vordefinierten generischen Typfamile Func<...> und Actions<...>
    2. Einsprungadressen speichern, aufrufen, entfernen aus einer Delegate- Variablen
    3. Events und Delegates
  3. Lambda- Ausdrücke: Funktionen inline deklarieren
  4. Listenverarbeitung mit Lambda und LINQ
    1. Allgemeine Listenoperationen wie take, skip, concat
    2. LINQ
    3. Liste mit Preisen sortieren
    4. Liste mit Preisen Filtern
    5. Liste mit Preisen in $ umrechnen
  5. Zugriff auf Datenbanken mittels Linq

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

Fehlerbehandlung

  1. Strukturierte Fehlerbehandlung mittels Try .. Catch
  2. Fehlerklassen
  3. ThrowIf...() Funktionen

Multithreading

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