Vorlesung Grafische Benutzeroberflächen 2016
Solide Kenntnisse der objektorientierten Programmierung in Java
Die Studierenden erlernen die ergonomische Gestaltung, den Entwurf und die Programmierung grafischer Oberflächen. Sie können eine Oberfläche so gestalten, dass ein Benutzer damit effektiv und effizient arbeiten kann. Sie können Desktop-Technologien wie JavaFX sachgerecht anwenden. Die Studierenden verstehen die zugrunde liegenden Architekturkonzepte und können diese Technologien einordnen und bewerten. Weiter erhalten sie einen tiefen Einblick in die Grundlagen der Software-Architektur von Systemen mit graphischen Oberflächen.
Die Veranstaltung hat drei Schwerpunkte: Entwurf und Architektur von Anwendungen mit grafischer Benutzeroberfläche. Überblick über aktuelle Technologien, Werkzeuge und Methoden für den Bau von Anwendungen mit umfangreichen Anforderungen an die Bedienbarkeit und Interaktion. Praktisches Anwenden der erlernten Techniken im Rahmen von Übungen. Der größte Teil der Veranstaltung verwendet JavaFX. Der Schwerpunkt liegt nicht im Erlernen des eher zufälligen JavaFX-APIs, sondern in der Vermittlung der grundsätzlichen Ideen und Entwurfsmuster. Besonderes Gewicht liegt auf Standardfragen der täglichen Praxis (z.B. Bestätigen/Verwerfen, Data-Binding, Internationalisierung, Nebenläufigkeit und Anwendungsarchitektur). Im Rahmen von Studienarbeiten werden weitere moderne Technologie wie beispielweise .NET/WPF, Android oder HTML5 betrachtet.
Begleitend zur Vorlesung finden Übungen zur Vertiefung der erlernten Konzepte statt.
- Ablauf von Vorlesung und Übung
- Themen und Termine
- Hinweise zur verwendeten Software
- Literatur
- Historischer Überblick
- Typen grafischer Oberflächen (Terminal, Mobil, Web, Rich-Client)
- Standardprobleme beim Entwurf und der Programmierung
- Ergonomie und Angemessenheit
- Programmierte und deklarierte Oberflächen
- Gestaltungsregeln
- Grafischer Entwurf - Methoden und Werkzeuge (Styleguides, Mockups)
- Dynamisches Layout – Konzepte und Grundlagen
- Einführung in JavaFX
- Komponenten und Container - Exkurs Composite-Muster
- Layout-Management
- Kontrollfluss in grafischen Oberflächen
- Begriffe der Eventverarbeitung
- Eventverarbeitung in hierarchischen Oberflächen (Bubbling und Capturing)
- Technische Umsetzung
- Ereignisse als Objekte
- Zustellung von Ereignissen
- Behandlung von Ereignissen (Handler, Event-Hierarchie)
- Datenhaltung, Benachrichtigung und Binding
- Das Observer-Muster
- Model-View-Controller – das klassische Modell
- Model-View-Presenter
- Technische Umsetzung
- JavaFX Properties
- JavaFX Binding
- Grundprinzipien und Architektur
- Eigenschaften von Komponenten
- MV* im Großen
- Presentation-Model vs. Business-Model
- Technische Umsetzung
- Bau von GUI Komponenten mit JavaFX
- Wiederverwendung und Schachtelung
- Motivation – Warum ist parallele Verarbeitung notwendig?
- Umgang mit lang laufenden Aktionen (asynchrone Verarbeitung)
- Technische Umsetzung
- Die Worker Schnittstelle in JavaFX
- Die Klassen Task und Service
- Manuelles Testen und Test-Driven-Development
- Behavior-Driven-Test-Development
- Das Page-Objekt-Muster
- Testautomation bei JavaFX Oberflächen
- Motivation
- Das Publish-Subscriber Muster
- Technische Umsetzung
- Ein minimaler Eventbus
- Subscription als Annotation
- 2-Tier und 3-Tier Architekturen
- Thin-, FAT- und Smart/Rich-Clients
- Schichten-, Säulen und Komponentenarchitekturen
- Technische Umsetzung
- Trennung von Businesslogik und Oberflächenlogik
- Umsetzung einer Kundensuche mit JavaFX
- Typen von Weboberflächen (Web 1.0, 2.0, 3.0)
- Vor- und Nachteile der heute gängigen Architekturen
- Technische Umsetzung
- CRUD Anwendung mit HTML5 und AngularJS
- Migration vs Neubau
- Von Swing nach JavaFX
- VUI - Das virtuelle User Interface
Besonders empfohlen
- Tidwell, J.: Designing Interfaces, O’Reilly, (2005)
- http://docs.oracle.com/javase/8/javase-clienttechnologies.htm: Online Dokumentation und Tutorials zu JavaFX (2015)
- Gamma, E., et al.: Design Patterns. Addison-Wesley (1995)
Zusätzlich empfohlen
- Siedersleben, J.: Moderne Software-Architektur, dpunkt (2004)
- Fowler, M.: Patterns of Enterprise Application Architecture. Addison-Wesley (2002)
- Fowler, M.: http://martinfowler.com/eaaDev/uiArchs.html (2006)