01.03.2014 Aufrufe

Entwicklung nutzerorientierter Anwendungen

Entwicklung nutzerorientierter Anwendungen

Entwicklung nutzerorientierter Anwendungen

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<strong>Entwicklung</strong> <strong>nutzerorientierter</strong> <strong>Anwendungen</strong><br />

Wintersemester 2013/2014<br />

1. Einführung<br />

Lernziele der Veranstaltung 2<br />

Inhalte 3<br />

Praktikum 4<br />

Klausur 5<br />

Literatur (HCI und UID) 6<br />

Literatur (Java) 7<br />

<strong>Entwicklung</strong>sumgebung 8<br />

2. Softwaretechnik für Benutzungsschnittstellen<br />

Übersicht: Analyse und Entwurf 9<br />

Visionsdokument 10<br />

2. 1 Benutzer kennen und verstehen<br />

Admins und User - ein Zerrbild 11<br />

Benutzer charakterisieren 12<br />

Stereotype 13<br />

Beispiel: Stereotype<br />

Stereotype und Benutzerrollen 14<br />

Anwendungsszenarien 15<br />

Beispiel 1: Anwendungsszenario OBS<br />

Beispiel 2: Anwendungsszenarien Mobida<br />

Szenario Use Case Beschreibung 16<br />

Methoden der Benutzerforschung 17<br />

Fallen umgehen 18<br />

z.B. Fahrkartenautomat 19<br />

z.B. Online Belegsystem 20<br />

z.B. Stundenplanungssystem 21<br />

2. 2 Anwendungscharakter und Modell<br />

Nicht-funktionale Anforderungen 22<br />

Charakter von <strong>Anwendungen</strong> 23<br />

Beispiel: Anwendungscharakter<br />

Modelle eines Systems 24<br />

Beispiel: Diskrepanz der Modelle<br />

2. 3 Anwendungsfallanalyse<br />

Anwendungsfälle (Use Cases) 25<br />

Use Case Diagramm (Geldautomat) 26<br />

Use Case Diagramm (Belegsystem) 27<br />

z.B. Use Cases eines Buchs 28<br />

z.B. Dokument- statt Datei-Menü 29<br />

Beispiel: anwendungsfallorientiert 30<br />

Gegenbeispiel: datenstrukturorientiert 31<br />

Von Use Cases zu Screens 32<br />

Use Case Spezifikation 33<br />

Beispiel: Use Case Spezifikation<br />

2. 4 Abläufe<br />

Workflow 34<br />

Beispiel zum Workflow 35<br />

Assistent 36<br />

Beispiele zu Assistenten 37<br />

- 2 -


2. 6 Klarstellung:<br />

2. 7 Vorbild<br />

2. 8 Grenzen<br />

2. 8 Rapid<br />

2. 5 GUI-Diagramme<br />

Sinn und Zweck 38<br />

vgl. Flow Chart 39<br />

vgl. Contentogramm 1<br />

vgl. Contentogramm 2<br />

vgl. Zustandsdiagramm 40<br />

Navigationsübersicht (abstrakt) 41<br />

Navigationsübersicht (detailliert) 42<br />

Legende zur Navigationsübersicht 43<br />

Screen-Diagramme (abstrakt, skizziert, detailliert) 44<br />

=> Medero: Paper Prototyping<br />

=> Rettig: Prototyping for Tiny Fingers<br />

Varianten von Screen-Diagrammen 45<br />

Vorgehensweise für Screen-Diagramme 46<br />

vgl. Wireframes 1<br />

vgl. Wireframes 2<br />

Spezialfall Karteireiter (JTabbedPane) 47<br />

UML-Sequenzdiagramme zur Erinnerung 48<br />

vgl. Sequenzdiagramm "Geld holen" 49<br />

Verbindung GUI => Sequenzdiagramm 50<br />

Fokussteuerung definieren 51<br />

Drag&Drop 52<br />

Komplexität beherrschen 53<br />

Diagramme - für wen ? 54<br />

Architektur 55<br />

der UML 56<br />

Prototyping 57<br />

=> YouTube: Hanmail Paper Prototype<br />

3. Screen Design und Ergonomie<br />

3. 1 Arten von Benutzungsoberflächen<br />

Klassifikation 58<br />

Menüs und Dialoge 59<br />

Toolbars und Icons 60<br />

Tastaturkürzel / Hotkeys 61<br />

Direkte Manipulation 62<br />

Multi-Touch Gesten 63<br />

Web-Oberflächen 64<br />

Konventionen berücksichtigen 65<br />

3. 2 Formen<br />

Gedanken zur Fenstergestaltung 66<br />

z.B. Windows arabisch 67<br />

Prioritäten für Gruppierung 68<br />

Hinweise zur Gruppierung 69<br />

z.B. MS Word Druckdialog 70<br />

Natürliche Anordnung 71<br />

Hervorheben von Komponenten 72<br />

Minimal- und Maximalgrößen 73<br />

Umrechnung des Sehwinkels 74<br />

Abbildungsmaßstab 75<br />

Dialog Units (DLU) unter Windows 76<br />

- 3 -


3. 3 Schrift<br />

Schriftarten 77<br />

Gut lesbare Bildschirm-Schrift 78<br />

Beschriftung mittels Label 79<br />

Ausrichtung von Beschriftungen 80<br />

Eingabe von Text 81<br />

Hörsaalübung: Gestalten eines Eingabefenster 82<br />

3. 4 Farbe<br />

Was ist Farbe ? 83<br />

Farbmodell RGB 84<br />

Farbmodell CMYK 85<br />

Farbmodell HSL 86<br />

Physiologische Aspekte 87<br />

Psychologische Aspekte 88<br />

Farbkombinationen 89<br />

Heller oder dunkler Hintergrund ? 90<br />

Farbschema / Farbklima 91<br />

Im Zweifelsfall 92<br />

Farbcodierung 93<br />

3. 5 Dynamisches Layout<br />

Begriffserklärung 94<br />

Wo macht es Sinn ? 95<br />

Parameter dynamischer Layouts 96<br />

Layout-Raster skizzieren 97<br />

Vorgehensweise beim Layout 98<br />

Auswahl anwendungsfallorientiert 99<br />

Komponentengröße beeinflussen 100<br />

Versuch mit geschachtelten Layouts 101<br />

besser mit GridBagLayout 102<br />

Hörsaalübung 103<br />

"Datei öffnen" als GridBagLayout<br />

Quellcode "Datei öffnen" als GridBagLayout<br />

Anmerkung zur Schriftgröße 104<br />

3. 6 Software-Ergonomie<br />

Begriffe (1) 105<br />

Begriffe (2) 106<br />

Ergonomische Normen 107<br />

Normen zur (Software-)Ergonomie 108<br />

Normen zur Software-Ergonomie 109<br />

(1a) Aufgabenangemessenheit 110<br />

(1b) Aufgabenangemessenheit 111<br />

(2a) Selbstbeschreibungsfähigkeit 112<br />

(2b) Selbstbeschreibungsfähigkeit 113<br />

(2c) Selbstbeschreibungsfähigkeit 114<br />

(3) Steuerbarkeit 115<br />

(4a) Erwartungskonformität 116<br />

(4b) Erwartungskonformität 117<br />

(5) Fehlertoleranz 118<br />

(6) Individualisierbarkeit 119<br />

(7) Lernförderlichkeit 120<br />

3. 7 Usability Inspection<br />

Evaluation der Usability 121<br />

Methoden der Usability Inspection 122<br />

Checkliste für Heuristik 123<br />

- 4 -


3. 8 Usability Test<br />

Vorbereitung des Tests 124<br />

Prototypen 125<br />

Usability Lab<br />

Eröffnung 126<br />

Durchführung: Thinking aloud - laut denken 127<br />

Durchführung: Co-Discovery - zu zweit erforschen 128<br />

Durchführung: Interviews und Fragebogen 129<br />

Durchführung: Observierung 130<br />

Auswertung (1) 131<br />

Auswertung (2) 132<br />

Auswertung (3) 133<br />

4. Java<br />

Interpreter-Prinzip 134<br />

Dateitypen und Tools 135<br />

Java Development Kit (JDK) 136<br />

<strong>Entwicklung</strong> nur mit JDK 137<br />

IDE Eclipse 138<br />

4. 1 Programmtypen<br />

Das einfachste Java-Programm (main) 139<br />

Ausgabe auf die Konsole 140<br />

Die einfachste GUI-Applikation 141<br />

HelloWorld Klassendiagramm 142<br />

Zur Lebensdauer von Objekten 143<br />

Seitenblick: Applet 144<br />

Applets und Sicherheit 145<br />

4. 2 Grundlagen für Umsteiger<br />

Klassen 146<br />

Objekte 147<br />

Initialisierung von Variablen 148<br />

Zugriffsrechte 149<br />

Datentypen 150<br />

Zeichenketten: String 151<br />

Arrays 152<br />

Ausnahmebehandlung 153<br />

Bibliotheken: Packages 154<br />

4. 3 Weitere Details zu Java<br />

Zeiger versus Referenzen 155<br />

Typumwandlung (cast) 156<br />

Interface 157<br />

Klassenhierarchie 158<br />

Mutter aller Klassen: class Object 159<br />

plattformunabhängig ? 160<br />

sicher ? 161<br />

Gegenüberstellung Java / C++ in Stichworten<br />

4. 4 Collection-Klassen<br />

Collection-Klassen 162<br />

Wrapper-Klassen 163<br />

Interface Iterator 164<br />

Klassenhierarchie 165<br />

AbstractList implements List 166<br />

AbstractSet implements Set 167<br />

AbstractMap implements Map 168<br />

Generics: typsichere Collections 169<br />

- 5 -


4. 5 Dateien und Streams<br />

Streams / Datenströme 170<br />

Byte- und Character-Streams 171<br />

Lesen aus Streams 172<br />

Schreiben in Streams 173<br />

Spezialisierte Streams 174<br />

Beispiel: Kopieren einer Textdatei 175<br />

Zerlegen von Texten: Scanner 176<br />

Wahlfreier Datei-Zugriff 177<br />

4. 6 Serialisierung<br />

Serialisierung / Deserialisierung 178<br />

Serialisierung in C++ 179<br />

Interface java.io.Serializable 180<br />

Standard-Implementierung in Java 181<br />

Praktischer Einsatz 182<br />

Portabilität serialisierter Objekte 183<br />

Mögliche Probleme 184<br />

Interface java.io.Externalizable 185<br />

Marshalling / Unmarshalling 186<br />

4. 7 Entwurfsphase mit statischem Layout<br />

Dynamische und statische Layouts 187<br />

Vorgehensweise beim Entwurf 188<br />

Starter-Applikation 189<br />

4. 8 GUI Klassenstruktur<br />

Architektur für kleine GUI-<strong>Anwendungen</strong> 190<br />

Model / View / Controller - Architektur 191<br />

Beispiel Model / View 192<br />

Beispiel Model / ViewController 193<br />

Situation mit Eclipse WindowBuilder 194<br />

Alle Widgets zu Instanzvariablen 195<br />

Handler als Methoden der Fensterklasse 196<br />

Statische GUI im Konstruktor verstecken 197<br />

Zugriff auf Model-Objekt 198<br />

main-Methode in Hauptfensterklasse 199<br />

Partitionierung der GUI 200<br />

Klassendiagramm 201<br />

Reaktionszeit und Event Queue 202<br />

Kurze Aktivitäten mit Wait-Cursor 203<br />

Längere Aktivitäten im Worker Thread 204<br />

Beispiel zu Wait-Cursor und Worker Thread<br />

Swing & Worker Threa<br />

Quellcode zu Wait-Cursor und Worker Thread<br />

5. Fenster, Dialoge, Container<br />

GUI-Bibliotheken in Java SE 205<br />

Swing Components<br />

Weitere Features von JFC/Swing 206<br />

Container 207<br />

Top Level Container 208<br />

Bereits bekannt: JFrame 209<br />

5. 1 Panels und Panes<br />

Räumliche Gliederung 210<br />

JPanel: einfache Fläche 211<br />

Rand und Abstand mit Border 212<br />

Beispiele zu Border<br />

JScrollPane: verschiebbare Sicht 213<br />

JSplitPane: zweigeteilt 214<br />

- 6 -


JTabbedPane: Karteikarten mit Reitern 215<br />

Beispiel zu JTabbedPane<br />

CardLayout: reiterlose Karteikarten 216<br />

5. 2 Dialoge<br />

Überblick 217<br />

JDialog 218<br />

JOptionPane: Standard-Dialoge 219<br />

Spezielle Dialoge 220<br />

Datenübergabe 221<br />

Beispiel zu Dialogen<br />

Dialogklasse (JDialog)<br />

Hauptfensterklasse (JDialog, JOptionPane)<br />

5. 3 Layout-Manager<br />

Layout-Manager in Swing 222<br />

Überblick 223<br />

Fließtext: FlowLayout 224<br />

FlowLayout Programmfragment 225<br />

Zeile oder Spalte: BoxLayout 226<br />

BoxLayout Programmfragment 227<br />

Mitte maximal: BorderLayout 228<br />

BorderLayout Programmfragment 229<br />

Gleiche Tabellenzellen: GridLayout 230<br />

GridLayout Programmfragment 231<br />

Universell: GridBagLayout 232<br />

GridBagLayout Programmfragment 233<br />

GridBagConstraints (1) 234<br />

GridBagConstraints (2) 235<br />

Weitere Layout-Manager 236<br />

Gemischt: statisch und dynamisch 237<br />

6. Ereignisbehandlung<br />

Konsoledialoge 238<br />

Ereignisorientierte Programmierung 239<br />

Ereignisbegriff 240<br />

Aktivitäten und Eventklassen 241<br />

Zuordnung von Handlern 242<br />

bei Komponenten 243<br />

Systemvergleich 244<br />

in Java AWT 1.0 (veraltet) 245<br />

seit Java AWT 1.1 : Listener 246<br />

Listener und Adapter 247<br />

Anonyme innere Klasse 248<br />

Innere Klasse im Vergleich zu C++ 249<br />

Observer-Pattern zum Vergleich 250<br />

So macht es Eclipse 251<br />

So machte es JBuilder 252<br />

Fenster als Listener seiner Komponenten 253<br />

Beispiel zu Varianten der Ereignisbehandlung<br />

Quellcode zu Varianten der Ereignisbehandlung<br />

zum Vergleich: MFC (1) 254<br />

zum Vergleich: MFC (2) 255<br />

zum Abschluss: Visual Basic 256<br />

- 7 -


7. Bausteine grafischer Bedienoberflächen<br />

Begriffe 257<br />

Visueller Index (aus Java Tutorial)<br />

Swing Components in Eclipse 258<br />

Klassenhierarchie 259<br />

7. 1 Schaltflächen<br />

Schaltflächen: Charakterisierung 260<br />

JButton: löst nur Aktion aus 261<br />

JToggleButton: Zustand + Aktion 262<br />

JCheckBox: Wahrheitswert-I/O 263<br />

JRadioButton: Auswahl 1 aus n 264<br />

Beispiel zu RadioButtons<br />

Quellcode zu RadioButtons (JRadioButton, ButtonGroup)<br />

7. 2 Textfelder<br />

Textfelder: Charakterisierung 265<br />

JTextField: einzeilige I/O + Aktion 266<br />

JTextArea: mehrzeilige I/O 267<br />

Beispiel zu Textfeldern<br />

Quellcode zu Textfeldern (JTextField, JTextArea, JScrollPane)<br />

Wertebereichsüberprüfung 268<br />

7. 3 Auswahllisten<br />

Auswahllisten: Charakterisierung 269<br />

JList: sichtbare Liste 270<br />

JList: Auswahlmodus und Selektion 271<br />

JComboBox: ausklappbare Liste 272<br />

Dynamische Listen 273<br />

ImageIcon: statische Bilder 274<br />

Beispiele zu Auswahllisten<br />

Quellcode zu Auswahllisten (JList, JComboBox, JScrollPane, ImageIcon)<br />

7. 4 "Analogwerte"<br />

JSlider: analog mit Einrasten 275<br />

JProgressBar: reine Anzeige 276<br />

JScrollBar: meist für Fenster 277<br />

Beispiele zu "Analogwerte"<br />

Quellcode zu "Analogwerte" (JSlider, JProgressBar, JScrollBar)<br />

7. 5 Komplexe Datenstrukturen<br />

Model / View / Controller - Architektur 278<br />

Beispiel Model / View 279<br />

Beispiel Model / ViewController 280<br />

JTable: Charakterisierung 281<br />

Model / View Architektur bei JTable 282<br />

Model / View als Observer-Pattern 283<br />

Zugriff über Interface TableModel 284<br />

Abstract Class AbstractTableModel 285<br />

Beispiele zu Tabellen<br />

Quellcode zu Tabellen (JTable, AbstractTableModel)<br />

JTree 286<br />

DefaultMutableTreeNode 287<br />

Tree als binärer Baum 288<br />

DefaultTreeModel 289<br />

Beispiele zu Baumstrukturen<br />

Quellcode zu Baumstrukturen (JTree, DefaultTreeModel, DefaultMutableTreeNode)<br />

- 8 -


7. 6 Menüs und Toolbars<br />

Klassenhierarchie zu JMenu 290<br />

JMenuBar, JMenu: Hauptmenü 291<br />

Aufbau eines Menüs 292<br />

JPopupMenu: Kontextmenü 293<br />

Kontextmenü-Ereignisbehandlung 294<br />

Beispiele zu Menüs (JMenuBar, JMenu, JPopupMenu)<br />

Quellcode zu Menüs<br />

Toolbars 295<br />

JToolBar 296<br />

Beispiel zu Toolbars<br />

Quellcode zu Toolbars (JToolBar, BorderLayout)<br />

7. 7 Grafik<br />

Direkte Grafikausgabe 297<br />

Grafik Kontext 298<br />

Beispiel: Bild anzeigen 299<br />

Grafikausgabe beschleunigen (1) 300<br />

Grafikausgabe beschleunigen (2) 301<br />

7. 8 Drag & Drop<br />

Mentales Modell und Anwendungsbereiche 302<br />

Zustandsdiagramm allgemein 303<br />

Low Level mit Swing 304<br />

Abstract Class DragAndDropable 305<br />

High Level mit Swing 306<br />

- 9 -

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!