mk-prg-net \net \ cs \course \intro

C# Einführung

Ziele

Grundlagen .NET 4.5

  1. NET Überblick, Historie, Versionen
    NET 4.6 mit SIMD- Support
  2. CLR und ihre Dienste (GC, AppDomains, Security etc.)
  3. Assemblies: DLL und EXE
  4. Private Assemblies und Global Assembly Cache
  5. Signierung

Softwareentwicklung mit Visual Studio 2013/15

  1. Projektmappe und Projekte
  2. Beispielprojekt Vectoralgebra
  3. Projekttypen: Klassenbibliothek, Testprojekt, Winform
  4. Fenster Eigenschaften, Projektmappenexplorer, Klassenansicht, Klassendiagramm
  5. Codesnippets

Nuget Package Manager

  1. Einführung in die Verwaltung von Abhängigkeiten zwischen Bibliotheken
  2. Installation der Beispielbibliothek in der Projektmappe mit den Übungen

C# Syntax und Programmkonstrukte

  1. Compiler und Präprozessor
    1. Bedingtes Kompilieren
    2. Debug- und Trace- Klasse, mit Tracefiles Laufzeitfehler lokalisieren
  2. Literale, Ausdrücke, Operatoren und Anweisungen
  3. Blöcke
  4. Variablen
    1. Elementare Datentypen
    2. Deklaration, Initialisierung und Typinferenz
    3. Übung: Klasse Konto um statischen Instancecounter erweitern
    4. Aufzählungstypen
    5. Konvertierung und Konvertierungsoperatoren
  5. Anweisungsblöcke
    1. Verzweigungen
    2. Schleifen
    3. Funktions- und Unterprogrammblöcke
    4. Parameterliste und Arten der Parameterübergabe
  6. Datenstrukturen
    1. Geschäftsobjekte als Komposition elementarer Daten
    2. Vordefinierte Datenstruktur DateTime
    3. struct- Blöcke
    4. Instanziierung, Initialisierung mittels Konstruktor
    5. Geschäftslogik in Methoden implementieren
    6. Grenzen von Wertetypen
  7. Referenztypen
    1. Objekte mit dynamischen Speicherplatzanforderungen als Referenztypinstanzen
    2. Vordefinierte Referenztypen
    3. Eigene Referenztypen mittels class block deklarieren
    4. Boxing/Unboxing von Werte in Referenztypen
  8. Arrays
    1. Ein- und mehrdimensionale Arrays
    2. Parameterarrays
    3. Sortieren mittels Array- Sort
    4. Problem mit selbstdefinierten Typen
  9. Chars und Strings
  10. Generische Typen
  11. Motivation zur generischen Programmierung: Sortiere „Äpfel und Birnen“
  12. Vordefiniere generische Typen

Collections und Schnittstellen

  1. Schnittstellen
  2. Wie Schnittstellen in .NET Mengenkonzepte abbilden → Schnittstellenvererbung als Abstraktionskonzept
  3. Implementieren von IEnumarable in PrimList
  4. Bsp: ArrayInt und ArrayGenerisch<T>
  5. Indexer
    1. ForEach und IEnumerable
    2. Collections im .NET Framework (ArrayList, Dictionary)

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. Entiy Framework
    2. Installation von Kepler-DB
    3. Objektrelationalen Mapper mittels Entity- Framework einrichten
    4. Zugriff auf Tabellen mittels Linq

Klassen, Vererbung und Polymorphismus

  1. Klassenbildung über Objektmengen
  2. Innerer Zustand, Eigenschaften und Methoden
  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)
      Anwendung: Implementieren eines Verzeichnisscanners nach dem Desing- Pattern der template method: DirTree
    5. Events mittels Delegates implementieren (Stoppuhr, DirTree, LogServer)

Fehlerbehandlung

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

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

GUI mit Windows Form

  1. Ausrichten von Steuerelementen mittels Format\Ausrichten …
  2. Anwendungseinstellungen
  3. Ressourcen
  4. Globalisierung
  5. Forms von selbstdefinierten Vorlagen ableiten
    1. Vererbungsbeziehungen und Kapselung
    2. WinFormTemplate in Klassenbibliothek umwandeln
    3. Neue Form, die von einem Formular erbt, anlegen
  6. Veröffentlichen

Einführung in die Winform- Steuerelemente- Bibliothek

  1. Basisklasse Control und ihre Eigenschaften und Methoden
    1. Durch Control.Visible alle Steuerelemente innerhalb eines Panels gleichzeitig verschwinden lassen
    2. Steuerelemente zur Laufzeit hinzufügen
    3. Benutzereingaben validieren
  2. Streifzug durch die Bibliothek der Winform- Steuerelemente
    1. Buttons: Starten von Anwendungslogik
    2. TabControl, Panel, etc.: Steuerelemente organisieren
    3. TextBox und TextBoxBase
    4. Texteditor mit Clippboard- Funktion implementieren
    5. Listboxen und ComboBox
      1. Binden mittels BindingSource von Listbox an Array mit ColorItem- Objekten
      2. Klassenhierarchie von Kaffezusatz (Milch, Zucker, Chili, …)
      3. Objekte der Klassenhierarchie über ComboBox auswählen
    6. Treeview
      1. Statische TreeView Solarsystem (ImageList mit Bildern für Knoten)
      2. TreeView dynamisch aufbauen beim Rekursiven Durchlauf durch ein Dateiverzeichnis (Filesystem)
      3. Vordefinierter Dialog FolderBrowserDialog zum auswählen eines Verzeichnisses
  3. Selbstdefinierte Dialoge
    1. Definieren von Rückgabewerten in modalen Dialogen
    2. Zugriff auf den inneren Zustand von Dialogen mittels Properties
      1. Beispiel Kaffeautomat: Schnittstelle Icoffe wird implementiert durch Dialog und Klasse CoffeeOrder
      2. CoffeeOrder Objekt kann aus Daten des Dialoges mittels speziellen New- Konstruktor instanziiert werden
      3. CoffeeOrder Objekt serialisieren in xml und speichern auf Festplatte
      4. CoffeeOrder Objekt aus Datei durch deserialisieren wiederherstellen
  4. Selbstdefinierte Steuerelemente
    1. Bestehende Steuerelemente erweitern oder neue Steuerelemente erstellen
    2. IntBox: Steuerelement zum definieren eines benannten Eingabefeldes für Integer
    3. Entwurfszeitunterstützung mittels der System.ComponentModel- Attribute Browsable und Category
    4. Eigenschaften Caption und Value implementieren