Vorlesung Informatik II

Ähnliche Dokumente
Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 17: 3-Schichten-Architektur 2

OOD. [Objekt Orientiertes Design] Version 1.0. OSBS- OnlineShopBewertungsSystem

Bedienung von BlueJ. Klassenanzeige

Innovator 11 classix. Java Reverse Engineering. HowTo. Ralph Schönleber.

Fakultät Angewandte Informatik Programmierung verteilter Systeme Übungen zur Vorlesung Informatik II, Blatt 6

Arbeiten mit dem Outlook Add-In

Die Oberfläche (GUI) Allg. Aufteilung

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Einkaufslisten verwalten. Tipps & Tricks

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 7. Grafische Benutzeroberflächen

Vorlesung Informatik II

Übungen zur Softwaretechnik

Variablen & erweiterte Aktionen nutzen

HS WAWI. Inhaltsverzeichnis. Beschreibung Masken-Steuerungselemente Suchtoolbar Berichtstoolbar Auswahltabellen...

GRAFISCHE BENUTZERSCHNITTSTELLEN

Neue Funktionen im GUI für PC-DMIS V3.x 4.x Seite 1 von 8

EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0. EDV Kurs 13/2

Ereignisbehandlung 21

Anleitung zur Einrichtung des USB-Speicherzugriffs (SharePort) Für DIR-506L (Stand April 2013)

a) In der Aufgabenstellung war ein möglichst einfaches Klassendiagramm gefordert. Abb. 1 zeigt eine mögliche Lösung. * * * Aufbau 1..

1: Access starten und beenden

Vorlesung Informatik II

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

Pascal-Compiler für den Attiny

Anleitung: Internet-Browser bei neuer VEMAGS-Version aufräumen

Grid Player für ios Version 1.1

Password Depot für Android

Programmiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny

Kapitel 6. Vererbung

Die Kunst des Lebens lehren

Klassendiagramm. Kurzer Überblick über UML - Stand BlaBla

Frequently asked questions with Java TM capancdt 6200 colorcontrol ACS 7000 confocaldt 2451/2471 CSP 2008 eddyncdt 3100 ILD 2300.

Alle Steuerelemente des Formulars Menü sind in der Abbildung beschrieben.

Dokumentation: Balanced Scorecard

Kapitel 6. Vererbung

Vorlesung Informatik II

Outlook 2010 einrichten

Handbuch WAGO-SPEEDWAY 767. System-Update. 767-xxxx. Version 1.0.3

Erweiterung Bilderstammdaten und bis zu fünf Artikelbilder

Praktikum Software Engineering

Folgeanleitung für Fachlehrer

Benutzerhandbuch. für. ENAiKOON buddy-tracker

Leitfaden zur PowerPoint Präsentation

Kapitel 6. Vererbung

Anleitung Anki V 1.2 / Mille feuilles

Einrichten von Windows Live Mail

MSI SIM Editor Benutzerhandbuch. MSI SIM Editor Benutzerhandbuch

Bedienungsanleitung V1.0. PC-Programm / Konverter EP-Schachtmanagement. TECTUS Transponder Technology GmbH

Teamcenter Rapid Start (Rich Client)

Grafische Benutzeroberfläche mit Glade und Python

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9

Folgeanleitung für Klassenlehrer

Verwaltung-Registerkarte: Eigene und fremde Bankverbindungen anlegen

Dynamische Segmentierung

Software Engineering Entwurfsmuster (update: 11.6.)

Bedienungsanleitung MiniDV (V3)

Eltako-FVS. Lizenzaktivierung ohne Internetverbindung

Vorlesung Informatik II

Raiffeisenbank Rastede eg Anleitung VR-Networld-Software 4.x

Durchführung der Datenübernahme nach Reisekosten 2011

Erste Hilfe bei Problemen mit Neo

Outlook Express einrichten

Startseite von Prinect Remote Access

Anleitung zum Online Banking

Update von Campus-Datenbanken (FireBird) mit einer Version kleiner 9.6 auf eine Version größer 9.6

Adressverwaltung Unser ÖTB Turnen

Inhalt. Dokumentation VIAS_W. V32w6900 Workflow-Assistent

Wiederholung: Objektorientierte Oberflächen-Programmierung mit Java und Swing

NOTENVERWALTUNG UND VIELES MEHR INHALT

Übung - Überwachen und Verwalten von Systemressourcen in Windows Vista

Softwaretechnik SS 2006

Dateipfad bei Word einrichten

Einführung in die Cross-Plattform Entwicklung Web Services mit dem Intel XDK

eadmin Manual Universitätsstraße Koblenz Deutschland

Vermittler (Mediator) Sabine Müller - Sven Richter - Jens Wagenbreth 03IN2-P-D

tentoinfinity Apps 1.0 EINFÜHRUNG

Erste Schritte. Lavid-F.I.S. Faktura. Erste Schritte

Die Version 5.0 der VR-NetWorld Software erfordert zwingend die Eingabe eines Lizenzschlüssels innerhalb von 60 Tagen nach der Installation.

Überprüfung der digitalen Unterschrift in PDF

Outlook 2002 einrichten

HIT-Software Installieren und Starten der Netzwerklizenz als Download-Anwendung

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Einführung in SharePoint

Innovator 11 excellence. UML-2-Profile erstellen. Beispiel für die Konfiguration eines UML-2-Modells. HowTo. René Beckert.

LDAP-Server. Jederzeit und überall auf Adressen von CAS genesisworld zugreifen

Observer-Pattern (Java vs..net vs. Qt) Seminar Software-Entwurf Tim Rademacher

Einstellungen des Windows-Explorers

Windows Live Mail 2011 / Windows 7

Anleitung Erstanwendung für Fachlehrkräfte. Schritt 1: Installation und Registrierung von EasyGrade

Installationsanleitung CLX.PayMaker Home

WINDOWS 98-AUSSEHEN UNTER WINDOWS XP??

Zugriff auf die Multifunktionsleiste mithilfe der Tastatur

Konfiguration von Clients zur Kommunikation mit einem SUS-Server

Prinzipien Objektorientierter Programmierung

Anleitung zur Lizenzaktualisierung. Plancal nova 7.x

Qt-Projekte mit Visual Studio 2005

Service-Handbuch. SH_Checkup_Applets.doc. Version: 1.02 Aktualisiert: durch: RLo Seite 1 von 6

[Bedienungsanleitung] InfoSys App

KURZANLEITUNG MSDAS DMS SYSTEM - SILVERDAT II SCHNITTSTELLE

Transkript:

Vorlesung Informatik II Universität Augsburg Wintersemester 2011/2012 Prof. Dr. Bernhard Bauer Folien von: Prof. Dr. Robert Lorenz Lehrprofessur für Informatik 12. UML GUI-Schicht 1

GUI-Schicht Sichtbarmachen von fachlichen Daten an der Oberfläche Polling: Regelmäßiges Abfragen von Änderungen der fachlichen Daten durch die GUI-Schicht Beobachtermuster: Signalisieren von Änderungen der fachlichen Daten durch die Fachkonzeptschicht 2

GUI-Schicht Sichtbarmachen von fachlichen Daten an der Oberfläche Bisher: Anzeige von Daten nur durch ein Fenster möglich, das sich selbst aktualisiert Jetzt: Anzeige von Daten simultan in mehreren Fenstern möglich. Aktualisierung aller Fenster durch Implementierung des Beobachtermusters (Polling später) 3

GUI-Schicht Beobachtermuster: Klassendiagramm (grün: API) Sorgt dafür, dass bei Änderung eines Objekts alle davon abhängigen Objekte benachrichtigt und automatisch aktualisiert werden 4

GUI-Schicht Beobachtermuster: Klassendiagramm (grün: API) <<interface>> Observer update(o :Observable, arg :Object) 0..* 1..* observers Observable notifyobservers() setchanged() addobserver() deleteobserver() GUIKlasse update(o :Observable, arg :Object) 0..* subject 1..1 DatenKlasse 5

GUI-Schicht Beobachtermuster: Schnittstelle Oberserver GUI-Klasse implementiert Observer- Schnittstelle update(o:observable,arg:object): aktualisiert angezeigte Daten von o 6

GUI-Schicht Beobachtermuster: Klasse Observable Daten-Klasse erbt von Observable-Klasse und kann dann folgende Operationen benutzen: notifyobservers() Startet Aktualisierung aller Observer-Objekte deleteobserver() Löscht Verbindung zu Observer-Objekt addobserver() Baut Verbindung zu Observer-Objekt auf setchanged() Teilt mit, dass eine Veränderung des Observable-Objekts stattgefunden hat 7

GUI-Schicht Beobachtermuster: Sequenzdiagramm User new GUIKlasse() subject:datenklasse addobserver(this) g:guiklasse... changedaten()... setchanged() notifyobservers() update(subject,null) [g in observers]... loop 8

Bisher: Ein Fenster zum Erfassen, Ändern und Anzeigen von Daten Jetzt: Ein Fenster für das Anzeigen von Daten Ein anderes Fenster für das Erfassen und Ändern von Daten Vorschlag für eine Systematisierung der gegenseitigen Aufrufe von Fenstern (Dialogstruktur) 9

Erfassungsfenster Erstelle für jede Klasse des Fachkonzepts ein Erfassungsfenster zum Erfassung und Ändern von Objekten (Attribute und Beziehungen) Grafisches Interaktionselement für jedes Atribut und jede Beziehung Schaltflächen oder pop-up-menü-einträge für Operationen 10

Erfassungsfenster Erstelle für jede Klasse des Fachkonzepts ein Erfassungsfenster Standardschaltflächen: Ok Fensters Speichern des Objekts und Schließen des Übernehmen Speichern ohne Schließen des Fensters Abbrechen Schließen und Verwerfen der Eingabe Liste Öffnen des zugehörigen Listenfensters 11

Erfassungsfenster Erstelle für jede Klasse des Fachkonzepts ein Erfassungsfenster 1-Assoziationen wie ein als zusätzliches Attribut aufnehmen *-Schaltfläche: öffnet Erfassungsfenster der assoziierten Klasse, Verbindung mit neu erfasstem Objekt...-Schaltfläche: öffnet Auswahlliste der assoziierten Klasse, Verbindung mit selektiertem Objekt 12

Erfassungsfenster Erstelle für jede Klasse des Fachkonzepts ein Erfassungsfenster *-Assoziationen als zusätzliche Liste aufnehmen *-Schaltfläche: öffnet Erfassungsfenster der assoziierten Klasse, neu erfasstes Objekt Liste hinzufügen...-schaltfläche: öffnet Auswahlliste der assoziierten Klasse, selektiertes Objekt Liste hinzufügen x-schaltfläche: Löscht Verbindung mit selektiertem Objekt Bei mehreren Assoziationen: Ein Register pro Assoziation 13

Erfassungsfenster Erstelle für jede Klasse des Fachkonzepts ein Erfassungsfenster Sonderfall Generalisierungen Bei konkreter Oberklasse: Erfassungsfenster für Oberklasse und jede Unterklasse. Zugriff auf alle geerbten Attribute in Erfassungsfenstern für die Unterklassen bei abstrakter Oberklasse: kein Erfassungsfenster für Oberklasse. Zugriff auf alle geerbten Attribute im Erfassungsfenster für die Unterklassen [analog bei mehrstufiger Generalisierung] 14

Erfassungsfenster Erstelle für jede Klasse des Fachkonzepts ein Erfassungsfenster Anbindung an Fachkonzeptklassen Erfassungsfenster kennt zugehörige Fachkonzeptklasse mit Container und kann auf deren Attribute und Operationen zugreifen, aber nicht umgekehrt. Anbindung durch 1-zu-1-Assoziation 15

Erfassungsfenster Erstelle für jede Klasse des Fachkonzepts ein Erfassungsfenster Anbindung an Fachkonzeptklassen DatenKlasseContainer 1..1 GUIErfassung 0..1 subject 1..1 meineobjekte 0..* DatenKlasse 16

Erfassungsfenster Erstelle für jede Klasse des Fachkonzepts ein Erfassungsfenster Standard-Operationen save() update() onok() OnÜbernehmen() OnAbbrechen() OnListe() Übergabe der Eingabedaten an subject Lesen und Darstellen der subject-daten Operationen zu Schaltflächen 17

Erfassung eines Objekts: Sequenzdiagramm User ok:button :GUIErfassung onclick new ActionEvent() e:actionevent actionperformed(e) subject onok() save() getactioncommand() s new DatenKlasse() set...()... 18

Listenfenster Erstelle für jede Containerklasse des Fachkonzepts ein Listenfenster Anzeige aller Objekte einer Klasse mit den wichtigsten Attributen in einer Liste / Tabelle grafisches Interaktionselement für jedes Klassenattribut Schaltflächen oder pop-up-menü-einträge für Klassenoperationen 19

Listenfenster Erstelle für jede Containerklasse des Fachkonzepts ein Listenfenster Standardschaltflächen: Neu Ändern Löschen Öffnen eines leeren Erfassungsfensters Erfassungsfenster für selektiertes Objekt Löschen des selektierten Objekts Schließen Schließen des Listenfensters 20

Listenfenster Erstelle für jede Containerklasse des Fachkonzepts ein Listenfenster Anbindung an Fachkonzeptklassen Listenfenster-Klasse kennt zugehörige Containerklasse, aber nicht umgekehrt Anbindung über *-zu-1-assoziation Benutzung des Bobachtermusters, um simultanes Anzeigen in mehreren Fenstern zu erlauben 21

Listenfenster Erstelle für jede Containerklasse des Fachkonzepts ein Listenfenster Anbindung an Fachkonzeptklassen <<interface>> Observer 0..* 1..* observers Observable GUIListe 0..* alledaten 1..1 DatenKlasseContainer 22

Listenfenster Erstelle für jede Containerklasse des Fachkonzepts ein Listenfenster Standardoperationen update() Containers OnNeu() OnÄndern() OnLöschen() OnSchließen() Auslesen und Darstellen aller Objekte des Operationen zu Schaltflächen 23

Erfassung eines Objekts und Listenfenster aktualisieren: Sequenzdiagramm :GUIErfassung :DatenKlasseContainer actionperformed(e) onok() new DatenKlasse() save() set...() subject adddaten(subject) setchanged() notifyobservers() 24

Mögliche Erweiterungen/Verallgemeinerungen: Eigene Fenster für: Erfassung eines neuen Objekts (Kern-Attribute, keine Beziehungen) Liste zur Auswahl eines Objekts für Erfassung (Übernahme von Attributwerten) Liste zur Auswahl eines Objekts für Aufbau von Objektbeziehungen Liste zur Auswahl eines Objekts für Löschen/Änderungen Modifizierung eines Objekts (alle Attribute und Beziehungen) 25

Mögliche Erweiterungen/Verallgemeinerungen: Darstellung als Zustandsautomat für eine Objekt-Art uebernehmen Zustand: Aktiviertes Fenster erfassen Erfassun g ok abbrechen liste Auswah l starten Programm ok abbrechen ok abbrechen Zustandübergang: Aktionsname beenden liste List e aendern Modifizierun g ok abbrechen loeschen 26

3-Schichtelmodell gesamt <<interface>> Observer 0..* 1..* observers Observable GUIListe GUIErfassung 0..* 0..1 alledaten 1..1 subject 1..1 DatenKlasseContainer 1..1 1..1 meineobjekte 0..* DatenKlasse <<interface>> Datenhaltung store 0..1 1..1 DatenContainer Datei 27