GUI Entwicklung - Universität des Saarlandes · GUI Abnahme • Paper Prototype/Wireframe (Papier...

23
GUI Entwicklung Softwarepraktikum 2015 Matthias Höschele

Transcript of GUI Entwicklung - Universität des Saarlandes · GUI Abnahme • Paper Prototype/Wireframe (Papier...

Page 1: GUI Entwicklung - Universität des Saarlandes · GUI Abnahme • Paper Prototype/Wireframe (Papier oder Digital) mit klar erkennbaren Elementen. • Status-Diagramme • Status-Beschreibungen

GUI EntwicklungSoftwarepraktikum 2015

Matthias Höschele

Page 2: GUI Entwicklung - Universität des Saarlandes · GUI Abnahme • Paper Prototype/Wireframe (Papier oder Digital) mit klar erkennbaren Elementen. • Status-Diagramme • Status-Beschreibungen

Paper Prototyping

Page 3: GUI Entwicklung - Universität des Saarlandes · GUI Abnahme • Paper Prototype/Wireframe (Papier oder Digital) mit klar erkennbaren Elementen. • Status-Diagramme • Status-Beschreibungen

Vorteile• Schnelles Erstellen eines Mockups ohne dazu

programmieren zu müssen.

• Entdeckt frühzeitig Probleme im Design

• Ermöglicht das Einholen von User-Feedback vor dem Implementieren.

• Ermöglicht Zusammenarbeit von Teams aus mehreren Disziplinen.

Page 4: GUI Entwicklung - Universität des Saarlandes · GUI Abnahme • Paper Prototype/Wireframe (Papier oder Digital) mit klar erkennbaren Elementen. • Status-Diagramme • Status-Beschreibungen

Wireframing

Page 5: GUI Entwicklung - Universität des Saarlandes · GUI Abnahme • Paper Prototype/Wireframe (Papier oder Digital) mit klar erkennbaren Elementen. • Status-Diagramme • Status-Beschreibungen

Storyboards

Page 6: GUI Entwicklung - Universität des Saarlandes · GUI Abnahme • Paper Prototype/Wireframe (Papier oder Digital) mit klar erkennbaren Elementen. • Status-Diagramme • Status-Beschreibungen

GUI Abnahme• Paper Prototype/Wireframe (Papier oder Digital) mit

klar erkennbaren Elementen.

• Status-Diagramme

• Status-Beschreibungen

• Status-Übergangsbeschreibung

• Interaktionsbeschreibung: GUI zu Datenquelle

Page 7: GUI Entwicklung - Universität des Saarlandes · GUI Abnahme • Paper Prototype/Wireframe (Papier oder Digital) mit klar erkennbaren Elementen. • Status-Diagramme • Status-Beschreibungen

Status Diagramme

A

B

C

D

Start der GUI

Konfiguration

Bestätigung

Fremder Spielzug

Eigener Spielzug

Page 8: GUI Entwicklung - Universität des Saarlandes · GUI Abnahme • Paper Prototype/Wireframe (Papier oder Digital) mit klar erkennbaren Elementen. • Status-Diagramme • Status-Beschreibungen

Status BeschreibungenA. Uninitialisiert: Fenster: Main. Panels:

Main:Control. Alle Buttons gesperrt, Menu>File>(Connect, Quit) verfügbar.

B. Warten auf Mitspieler: Command Buttons nicht nutzbar, Spielfeld präsent in Panel Main:Map. Spielstände in Panel Main:Info angezeigt.

C. Eigener Spielzug: …

D. Warten auf Konfiguration: …

Page 9: GUI Entwicklung - Universität des Saarlandes · GUI Abnahme • Paper Prototype/Wireframe (Papier oder Digital) mit klar erkennbaren Elementen. • Status-Diagramme • Status-Beschreibungen

Status ÜbergängeStart der GUI: Erstellung des Hauptfensters (Main) mit Panel Main:Control.

Konfiguration: Menu>File>Connect öffnet Dialog: Config

Bestätigung: Dialog: Config:Connect-Button + gültige Einstellungen schließt Dialog und erstellen Panel Main:Main und Main:Info.

Page 10: GUI Entwicklung - Universität des Saarlandes · GUI Abnahme • Paper Prototype/Wireframe (Papier oder Digital) mit klar erkennbaren Elementen. • Status-Diagramme • Status-Beschreibungen

InteraktionenGUI zu Backend

Main:Control:Connect#click Erstelle neue Verbindung zum Server

Main:Main:Build#click Sende einen Build Command zum Server

Page 11: GUI Entwicklung - Universität des Saarlandes · GUI Abnahme • Paper Prototype/Wireframe (Papier oder Digital) mit klar erkennbaren Elementen. • Status-Diagramme • Status-Beschreibungen

Interaktionen

Empfange Build Event: Aktualisiere die Anzeige und assoziiere die Strecke mit dem Mitspieler in der GUI.

Empfange finale Events: Setzt GUI in End-Status und veranlasst Anzeigen des Punktestands.

Backend zu GUI

Page 12: GUI Entwicklung - Universität des Saarlandes · GUI Abnahme • Paper Prototype/Wireframe (Papier oder Digital) mit klar erkennbaren Elementen. • Status-Diagramme • Status-Beschreibungen

JavaFX

• Deklaratives GUI Framework

• Trennung von Code und Design (FXML)

• Nur enthalten im Oracle JDK!

• Eclipse Integration: e(fx)clipse

Page 13: GUI Entwicklung - Universität des Saarlandes · GUI Abnahme • Paper Prototype/Wireframe (Papier oder Digital) mit klar erkennbaren Elementen. • Status-Diagramme • Status-Beschreibungen

JavaFX UI Elemente

Page 14: GUI Entwicklung - Universität des Saarlandes · GUI Abnahme • Paper Prototype/Wireframe (Papier oder Digital) mit klar erkennbaren Elementen. • Status-Diagramme • Status-Beschreibungen

JavaFX UI Elemente

Page 15: GUI Entwicklung - Universität des Saarlandes · GUI Abnahme • Paper Prototype/Wireframe (Papier oder Digital) mit klar erkennbaren Elementen. • Status-Diagramme • Status-Beschreibungen

Demo: Scene Builder

Page 16: GUI Entwicklung - Universität des Saarlandes · GUI Abnahme • Paper Prototype/Wireframe (Papier oder Digital) mit klar erkennbaren Elementen. • Status-Diagramme • Status-Beschreibungen

Demo: FXML Verknüpfen

• @FXML Annotation für Felder und Methoden

• Automatische Initialisierung

• Manuelle Initialisierung mit initialize()

Page 17: GUI Entwicklung - Universität des Saarlandes · GUI Abnahme • Paper Prototype/Wireframe (Papier oder Digital) mit klar erkennbaren Elementen. • Status-Diagramme • Status-Beschreibungen

Demo: Data Bindings

• Property kapselt Observable Werte

• Uni- & Bidirektionale Bindung von Werten

• Vereinfachung von GUI Updates

Page 18: GUI Entwicklung - Universität des Saarlandes · GUI Abnahme • Paper Prototype/Wireframe (Papier oder Digital) mit klar erkennbaren Elementen. • Status-Diagramme • Status-Beschreibungen

Model View ViewModelVi

ew

View

Mod

el

Mod

el

UI Events

Property Änderung

ViewModel Daten

Model Änderung

Lesen

Update

Page 19: GUI Entwicklung - Universität des Saarlandes · GUI Abnahme • Paper Prototype/Wireframe (Papier oder Digital) mit klar erkennbaren Elementen. • Status-Diagramme • Status-Beschreibungen

Nebenläufigkeit• JavaFX ist nicht Thread-Safe!

• Lange Berechnungen und I/O können UI blockieren

• Lösung: Benutzen von Task und Service Klassen

• UI Änderungen aus anderen Threads mit Plattform.runLater()

Page 20: GUI Entwicklung - Universität des Saarlandes · GUI Abnahme • Paper Prototype/Wireframe (Papier oder Digital) mit klar erkennbaren Elementen. • Status-Diagramme • Status-Beschreibungen

Demo: Selektoren

Finden von GUI Kompenenten:

• “.button”: Komponenten vom Typ Button

• “.myClass”: Komponenten mit Klasse “class”

• “#myId”: Komponenten mit ID “myId”

Page 21: GUI Entwicklung - Universität des Saarlandes · GUI Abnahme • Paper Prototype/Wireframe (Papier oder Digital) mit klar erkennbaren Elementen. • Status-Diagramme • Status-Beschreibungen

Demo: CSS Styling• Ändern der Darstellung von Nodes

• Auswählen von Nodes mit Selektoren

• Verfügbare Eigenschaften: https://docs.oracle.com/javase/8/javafx/api/javafx/scene/doc-files/cssref.html

• Nützlich: Scene Builder - CSS Analyzer

Page 22: GUI Entwicklung - Universität des Saarlandes · GUI Abnahme • Paper Prototype/Wireframe (Papier oder Digital) mit klar erkennbaren Elementen. • Status-Diagramme • Status-Beschreibungen

Demo: Images und Shapes

• Geometrische Formen in der API

• Stylebar mit CSS

• Verknüpfung mit Events

• Bilder in der API

Page 23: GUI Entwicklung - Universität des Saarlandes · GUI Abnahme • Paper Prototype/Wireframe (Papier oder Digital) mit klar erkennbaren Elementen. • Status-Diagramme • Status-Beschreibungen

Nützliche Links

• http://code.makery.ch/library/javafx-8-tutorial/

• http://docs.oracle.com/javase/8/javafx/get-started-tutorial/get_start_apps.htm