Skip to content

KotelczukB/fpk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Fortgeschrittene Programmierkonzepte (FPK)

Entwurf zur neuen Lehrveranstaltung im 2. Semester des Bachelorstudiengangs Wirtschaftsinformatik an der Hochschule Rosenheim.

Inhalt

  1. Git und IntelliJ
  2. Klassen und Vererbung
  3. Annotationen und das Testframework JUnit
  4. Interfaces, abstrakte Basisklassen (ABC) und Reflection
    • Fallstudie: Zustandsmodellierung eines endlichen Automatens mit einer abstrakten Basisklasse
    • Factory Pattern als Kapselung der Instanzenerstellung
  5. Container, Iteratoren und Generics
    1. Liste
      • Allgemeine Beschreibung (add, remove, get)
      • Realisierung einer ArrayList
      • Einführung in Generics
      • Effizientere ArrayList durch blockweise Allokation
      • Einfach verkettete Liste (LinkedList)
    2. Iteration
      • Wiederholung: for-Iteration auf Array
      • for-Iteration auf Liste: Ineffizient! -> while mit "Iterator"
      • Abstraktion in den Iterator; Iterator steht "zwischen" den Elementen
        • Iterator als DesignPattern -> UML
        • Iterator als innere Klasse
    3. Map
      • Nicht-sequenzieller Zugriff: Gib mir Element mit Eigenschaft X
      • Konkrete StudentenMap, mit get(int matr)
      • Abstraktion 1: Predicate -> allgemeine get(Predicate)
      • Abstraktion 2: Map<K, V>.{put,get}
      • Implementierung als Liste von Map.Entry<K, V>
      • Iterator -> sequenzieller Zugriff auf entryset/keyset/valueset
    4. Set
      • Via LinkedList und Duplikatkontrolle -> zu aufwaendig!
      • Via BinBaum (TreeSet)
        • Insert
        • Contains
        • Remove
      • Iteration erfordert Agenda! Tiefen- (DFS) und Breitensuche (BFS)
  6. Rekursion
    • Einfache Beispiele: Addition, Modulo, Fakulät, Fibonacci (for bzw. while Formulierung nach Rekursion)
    • Rekursion auf Tree (contains, toString)
    • Mergesort
  7. Threading 1: Basics
    • Was ist nebenläufige Ausführung
    • Realisierung in Java: Thread oder Runnable
    • Grundlegende Synchronisation
      • Warten auf Terminierung?
      • Aktives Warten (isAlive)
      • Passives Warten mit join (einzelne Threads), und CountDownLatch (mehrere Threads oder Jobs)
    • Rückgabe von Ergebnissen bei Runnable via Instanzvariable
    • Besser: Callable und Future, und der ExecutorService
  8. Threading 2: Zeitliche oder resourcenbedingte Abhängigkeiten
    • Sequenzielle Abhängigkeiten: Chaining (CompletableFuture)
    • Resourcen: Synchronisierung mit synchronized, wait, und notifyAll
    • Fallstudie: Erzeuger-Verbraucher-Problem
  9. Datenstrukturen in der Gegenüberstellung: List, Set, Map.
    • Konzeptioneller Aufbau (Verlinkung im Speicher?)
    • Realisierung einer HashMap via hashCode und equals
    • Realisierung einer TreeMap via Binärbaum und Comparable als Bound (Generics)

About

Fortgeschrittene Programmierkonzepte

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages