Entwurf zur neuen Lehrveranstaltung im 2. Semester des Bachelorstudiengangs Wirtschaftsinformatik an der Hochschule Rosenheim.
- Git und IntelliJ
- Klassen und Vererbung
- Annotationen und das Testframework JUnit
- Interfaces, abstrakte Basisklassen (ABC) und Reflection
- Fallstudie: Zustandsmodellierung eines endlichen Automatens mit einer abstrakten Basisklasse
- Factory Pattern als Kapselung der Instanzenerstellung
- Container, Iteratoren und Generics
- Liste
- Allgemeine Beschreibung (
add
,remove
,get
) - Realisierung einer
ArrayList
- Einführung in Generics
- Effizientere ArrayList durch blockweise Allokation
- Einfach verkettete Liste (
LinkedList
)
- Allgemeine Beschreibung (
- 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
- Wiederholung:
- Map
- Nicht-sequenzieller Zugriff: Gib mir Element mit Eigenschaft X
- Konkrete StudentenMap, mit
get(int matr)
- Abstraktion 1:
Predicate
-> allgemeineget(Predicate)
- Abstraktion 2:
Map<K, V>.{put,get}
- Implementierung als Liste von
Map.Entry<K, V>
- Iterator -> sequenzieller Zugriff auf entryset/keyset/valueset
- Set
- Via LinkedList und Duplikatkontrolle -> zu aufwaendig!
- Via BinBaum (TreeSet)
- Insert
- Contains
- Remove
- Iteration erfordert Agenda! Tiefen- (DFS) und Breitensuche (BFS)
- Liste
- Rekursion
- Einfache Beispiele: Addition, Modulo, Fakulät, Fibonacci (
for
bzw.while
Formulierung nach Rekursion) - Rekursion auf Tree (
contains
,toString
) - Mergesort
- Einfache Beispiele: Addition, Modulo, Fakulät, Fibonacci (
- Threading 1: Basics
- Was ist nebenläufige Ausführung
- Realisierung in Java:
Thread
oderRunnable
- Grundlegende Synchronisation
- Warten auf Terminierung?
- Aktives Warten (
isAlive
) - Passives Warten mit
join
(einzelne Threads), undCountDownLatch
(mehrere Threads oder Jobs)
- Rückgabe von Ergebnissen bei
Runnable
via Instanzvariable - Besser:
Callable
undFuture
, und derExecutorService
- Threading 2: Zeitliche oder resourcenbedingte Abhängigkeiten
- Sequenzielle Abhängigkeiten: Chaining (
CompletableFuture
) - Resourcen: Synchronisierung mit
synchronized
,wait
, undnotifyAll
- Fallstudie: Erzeuger-Verbraucher-Problem
- Sequenzielle Abhängigkeiten: Chaining (
- Datenstrukturen in der Gegenüberstellung: List, Set, Map.
- Konzeptioneller Aufbau (Verlinkung im Speicher?)
- Realisierung einer
HashMap
viahashCode
undequals
- Realisierung einer
TreeMap
via Binärbaum undComparable
als Bound (Generics)