Pflichtmodul im Bachelorstudiengang Informatik an der Hochschule Rosenheim.
- Bloch: Effective Java
- Oaks: Java Performance
- Gamma et al.: Design Patterns
- Subramaniam: Functional Programming in Java
- Siedersleben: Moderne Softwarearchitektur
- Peter's UML/PlantUML guide
-
Einführung und Organisatorisches (Slides, Pdf,Übungen)
Nach einer kurzen Einführung werden wir uns an Hand einiger Beispiele die notwendigen Tools im Java Umfeld ansehen, damit wir für das Semester das Rüstzeug eines Softwareingenieur zur Hand haben: Git, IntelliJ, Google, SO und Java docs. Fehlt noch was?.
-
Klassen und Interfaces (als Wiederholung!) (Slides, Pdf, Skript, Übungen)
In dieser Session sehen wir uns verschiedene Typen von Klassen an: inner, anonymous, local, und static Klassen. Wann wird was benutzt und welche Sichtbarkeit haben sie? Ausserdem:
@FunctionalInterface
und Lambda-Expressions. -
Vererbung (Wiederholung!) (Slides, Skript, Pdf, Übungen)
Eine weitere Session, die sich mit Klassen beschäftigt. Allerdings mehr aus Sicht der Vererbung (ein wichtiges Konzept der OOP!). Hierzu sehen wir uns final und abstract Classes an, sowie virtuelle Funktionen und defaults. Mit einem ersten Design-Pattern (Decorator) sollte das Thema dann abgerundet sein.
-
Mixins (Teil 1) und Generics (Teil 1) (Slides, Skript, Pdf, Übungen)
Nach einem kurzen Ausflug zu Mixins, stürzen wir uns natürlich voller Freude in das Thema "Generics". Wie werden diese in Datastrukturen und Algorithmen angewendet.
-
Mixins (Teil 2) und Generics (Teil 2) (Slides, Pdf, Skript, Übungen)
Mixins zum zweiten und ein paar Sonderfälle bei Generics (Bounds und Wildcards) bestimmen diese Session.
-
Reflection und Annotations (Slides, Pdf, Skript, Übungen)
Mit dem Reflection API und Annotationen werden wir uns in dieser Session beschäftigen. Das gelingt am Besten an Hand von einigen Beispielen: Unit Tests mit (JUnit5), Serialization mit (gson) und Networking mit (retrofit).
-
Design Pattern (Teil 1) (Slides, Pdf, Skript, Übungen: JavaFX (recommended) or Android (advanced))
Fun with Pattern! In dieser Session starten wir endlich mit Design-Pattern im Software Engeneering: Composite-, Iterator- und Observer-Pattern (ach ja, und wie kann man damit ein UI implementieren auf Android). Was ist eigentlich MVC/MVVC?
-
Design Pattern, pt. 2 (Slides, Pdf, Skript, Übungen: JavaFX or Android)
Mehr Pattern: Singleton-, Factory-, Strategy- und Command-Pattern.
-
Design Pattern, pt. 3 (Slides, Pdf, Skript, Übungen: JavaFX, Android)
Last but not least! Zum Abschluß der Pattern-Reihe: Proxy-, Adapter- und Flyweight-Pattern.
-
Parallel Processing (Teil 1) (Slides, Pdf, Skript, Übungen: JavaFX or Android)
Parallele Ausführung von Programcode ist ein wichtiges Konzept. In dieser Session steigen wir ein in Threads und parallele Verarbeitung.
-
Parallel Processing (Teil 2) (Slides, Skript, Übungen: Terminal or Android)
Thread
s are clunky--- erweiterte Konzepte, wieFuture
oderPromises
werden in dieser Session behandelt. -
Einführung in die funktionale Programmierung (Slides, Pdf, Skript, Übungen)
Nachdem wir uns nun fast 3 Semester mit der imperativen und objektorientierten Programmierung beschäftigt haben, verlassen wir nun unsere Komfortzone und schauen uns Konzepte der funktionalen Programmierung an. Natürlich haben wir zunächst ein wenig Spaß mit der Theorie bevor wir uns so tollen Dingen wie
filter
,map
undforEach
zu wenden. -
Functional programming in Java (Slides, Pdf, Skript, Übungen)
Eine weitere Session zu funktionaler Programmierung. Was ist besonders und wo sind die Grenzen? Warum ist es gerade gar so populär? Ein nette Besonderheit, wie funktionale Programmierung in OO-Sprachen integriert wird, sind natürlich Klassen und Interfaces. Das schauen wir uns an Hand von ´streams´ und wie
reduce
undcollect
darauf angewendet wird. -
Zusammenfassung und Klausurvorbereitung
Diese Session nutzen wir, um das Semester noch mal grob zu überfliegen und das als Klausurvorbereitung zu nutzen. Sicher eine gute Chance Fragen loszuwerden.