Übungen zu Computergrafik

Ähnliche Dokumente
Design Patterns 2. Model-View-Controller in der Praxis

Drucken, GUI, Design Pattern,... PDF, Usability, Observer Pattern, MVC

JAVA Oberflächen mit Swing

Eclipse :Bis(s) zum Javacode Einführung in die Eclipse-IDE

Aufgabe 1 AUFRÄUMARBEIT, KONSISTENZ. »Programmieren«, WS 2006/2007. Nino Simunic M.A.

Design Pattern - Strukturmuster. CAS SWE - OOAD Marco Hunziker Klaus Imfeld Frédéric Bächler Marcel Lüthi

OWASP Stammtisch München Sep 2014 XSS und andere Sicherheitslücken aus der Perspektive des Programmcodes

Kap. 35 Swing: Grundlagen Kap Swing: Hauptfenster

Entwicklungswerkzeuge

WEBAPPLIKATIONEN MIT PHP. Wo gibt es Hilfe? Wie fang ich an?

AxCMS.net ENTERPRISE CONTENT MANAGEMENT SYSTEM. Module. AxCMS.net. Module. Copyright Axinom GmbH AxCMS.net Seite 1

Dokumentation: Balanced Scorecard

Zeiterfassung-Konnektor Handbuch

Übungen zur Softwaretechnik

JSF (JavaServer Faces) Erstellen einer Webseite

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Praktikum ios-entwicklung im Sommersemester 2015 Übungsblatt 3

Sie müssen den Test bis 20:00 Uhr am Abgabetag dieses Übungszettels absolviert haben.

Software Engineering Übung 4 Architektur, Modulentwurf

Software-Engineering Grundlagen des Software-Engineering

Design Patterns MVC. Marcus Köhler Markus Merath Axel Reusch. Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 1

Benutzeroberflächen. Java Teil 4

Übung 1: Von einer naiven JavaScript Applikation zu einem modernen Front-End Build:

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

GUI Programmierung in Java

Projekt AGB-10 Fremdprojektanalyse

Ausarbeitung zum Vortrag Java Web Start von Adrian Fülöp Fach: Komponentenbasierte Softwareentwicklung WS 06/07 Fachhochschule Osnabrück

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Wochenbericht. Firas Zoabi. Studienprojekt A: SIMPL. 28. Dezember 2009 I M P

Ereignisbehandlung 21

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Swing Grundlagen. Andre Eichmann

1 Installation. 1.1 Die Java-Laufzeitumgebung. 1.2 PXLab. Um PXLab benutzen zu können benötigt man die Java Platform, diese kann man unter

Grundlagen Programmierung

Online-Dateienablage und Datenaustauschdienst Box.net Stand: September 2011

Programmierung 2. Organisatorisches. Sebastian Hack. Klaas Boesche. Sommersemester

DB2 Kurzeinführung (Windows)

Programmierung eines NewsTickers in Java

Online Kurs Entwicklung der Apps auf iphone und ipad

Serie 3: Designbeschreibung Verantwortlich für Rose-Projekt und Designbeschreibungen Dang, Quoc Anh / Phan, Ngoc Diep / Xiongjie Ding

Python SVN-Revision 12

Funktion «Formulare» in educanet²

Praktische Informatik 1

Mensch-Maschine-Interaktion

Rails Ruby on Rails Ajax on Rails. Clemens H. Cap

Process Mining Tutorial: ProM 6 und Disco. Luise Pufahl 3. Juni 2014

Lehrveranstaltung Grundlagen von Datenbanken

Neue Funktionalitäten der KaVo multicad

Im Mathe-Pool startet man Eclipse am besten aus einer Shell heraus, und zwar indem man im Home- Verzeichnis den Befehl

Anleitung für den Euroweb-Newsletter

LEGO-Mindstorms-Roboter im Informatikunterricht 1 - mit Java-

EJB Beispiel. JEE Vorlesung 10. Ralf Gitzel

Anleitung Microsoft Select-Plus Registrierung

Schlussbewertung FB VI SOFTWAREPROJEKT II WS 09/10 TEAM. Alexander Kalden Dominik Eckelmann Marcel Pierry Julian Heise Besha Taher

Software Qualität Übung 1

meinpflegedienst.com Release Notes 3.4

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

System-Spezifikation

Erste Erfahrungen mit Android

WhiteStarUML Tutorial

Hello World in Java. Der Weg zum ersten Java-Programm

Universität Augsburg, Institut für Informatik Sommersemester 2005 Prof. Dr. Werner Kießling 15. Oktober 2005 Dr. Alfons Huhn, Timotheus Preisinger

Inhaltsverzeichnis. 2.2 Grundlagen der UML Zusammenfassung... 53

Berner Fachhochschule Hochschule für Technik und Informatik HTI. Kapitel 1. Einstieg in Java. Dr. Elham Firouzi

Ein mobiler Electronic Program Guide für Android

LiLa Portal Leitfaden für Dozierende

Kurzeinführung Excel2App. Version 1.0.0

Ergänzungen FHB und Richtlinien BSA ASTRA GEVIII Applikationen der Steuer- & Leittechnik

Control System Studio CSS

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Programmierprojekt

Byte-Taxi. Bedienungsanleitung. Seite 1 von 8

6. Objektorientiertes Design

Tutorium Learning by doing WS 2001/ 02 Technische Universität Berlin. Erstellen der Homepage incl. Verlinken in Word 2000

Rails Ruby on Rails Ajax on Rails. Clemens H. Cap

Institut für Informatik

Bekannte Lösungen für bekannte Probleme benutzen. Entwurf auf höherer Abstraktionsebene als bei Programmiersprachen

Kleines Handbuch zur Fotogalerie der Pixel AG

Beuth Hochschule JDK und TextPad WS14/15, S. 1

Browser Grid Funktionalitäten

HANDBUCH - EWL Installation

ELPA view Stand:

MAXDATA PrimeBackup Secure Client Kurzanleitung

Nach Ihrer erstmaligen Anmeldung sollten Sie Ihr Passwort ändern. Dazu klicken Sie bitte auf Ihren Namen.

DYNAMISCHE SEITEN. Warum Scriptsprachen? Stand: CF Carola Fichtner Web-Consulting

Der IBM Websphere Portalserver

SEW Übung EMFText. 1 Aufgabe. 2 Domänenbeschreibung. 3 Installation von Eclipse/EMFText. 4 Schritt-für-Schritt Anleitung. 4.

Quellcode-Repräsentation in Eclipse. Seminarvortrag PG Reclipse Jan Rieke

(August 2008 Version basierend auf Clix 7)

Beschreibung Mobile Office

Modul Windows XP Professional

Selbstbestimmtes Lernen. Proinformatik III Objektorientierte Programmierung. Format. Inhalt. Buzzwords

Partnerportal Installateure Registrierung

Dokumentation. HiPath OpenOffice EE V1 myportal entry. Communication for the open minded. Installationsanleitung A31003-P2010-J

Betriebssystem Windows - SSH Secure Shell Client

ARAkoll 2013 Dokumentation. Datum:

Übungen zur Softwaretechnik

Die nachfolgende Anleitung hilft dem Kunden mit den nötigen Informationen zur Installation und Konfiguration der MDWorkflow-Applikation.

Transkript:

Institut für Informatik Universität Osnabrück, 05.04.2016 Prof. Dr. Oliver Vornberger http://www-lehre.inf.uos.de/~cg Lukas Kalbertodt, B.Sc. Testat bis 13.04.2016, 14:00 Uhr Übungen zu Computergrafik Sommersemester 2016 Blatt 1: MVC Übungsbetrieb In der Vorlesung am Dienstag wird ein Aufgabenblatt verteilt, das bis einschließlich Mittwoch (letztes Testat um 13:30 Uhr) der darauffolgenden Woche zu bearbeiten ist. Die Aufgabenblätter finden sich auch auf der Veranstaltungswebseite www-lehre.inf.uos.de/~cg/2016. Die Übungen finden donnerstags von 10:15-11:45 Uhr in Raum 93/E33 und von 12:15-13:45 Uhr in Raum 93/E06 statt. In den Übungen wird das neue Aufgabenblatt durchgesprochen und die Lösung zum alten Aufgabenblatt diskutiert. Testatbetrieb Begleitend zur Veranstaltung finden wöchentliche, 30-minütige Testate bei den Tutoren der Veranstaltung statt. Das aktuelle Aufgabenblatt ist bis zum Testattermin zu bearbeiten und dem jeweiligen Tutor zum entsprechenden Termin in Raum 93/E10 vorzulegen sowie in das unten genannte Web-System hochzuladen. Achten Sie bei der Bearbeitung der Aufgaben darauf, diese vor dem Testat einmal auf dem Zielrechner getestet zu haben und außerdem natürlich auf sinnvolle Kommentierung mit JavaDoc. Die Testate erfolgen in Zweierteams, zu denen man sich von Donnerstag, 07.04. 9:00 Uhr, bis Sonntag, 10.04. 18:00 Uhr, über eine Webapplikation anmelden kann: https://cg-testate.informatik.uni-osnabrueck.de Verwenden Sie Ihren Rechenzentrums-Login. Piazza Unter piazza.com/uni-osnabrueck.de/spring2016/cg16/home finden Sie eine Instanz des Q&A-Systems Piazza. Dort können Sie Fragen und Probleme mit uns und Ihren Kommilitonen diskutieren. Außerdem werden dort Anmerkungen zu den Übungsblättern und sonstige Ankündigungen gemacht. Alle bis zum 04.04.2014, 18 Uhr in StudIP eingetragenen Studenten werden automatisch eingeladen. Sollten Sie nicht eingeladen worden sein, müssen Sie sich selbst registrieren. Scheinvergabe Um die Zulassung zur Klausur zu erhalten, müssen alle bis auf eins der ausgegebenen Übungsblätter erfolgreich bearbeitet (mindestens 50% der Punkte) und dem Tutor vorgeführt werden. Zum Abschluss der Veranstaltung entscheidet eine Klausur über die Scheinvergabe.

Aufgabe 1.1: Model-View-Controller (50 Punkte) Melden Sie sich an einem Rechner in 93/E10 an und legen Sie die im Anhang befindliche Datei mvcbeispiel.jar in Ihr Arbeitsverzeichnis. Mit dem Befehl jar xvf mvcbeispiel.jar wird das Archiv entpackt. Der Befehl java -jar mvcbeispiel.jar startet die Applikation. Importieren Sie die Applikation auch in Ihr Eclipse-Arbeitsverzeichnis, so dass Sie den Quelltext dort bearbeiten und Ihrem Tutor im Testat vorführen können. Erklären Sie Ihrem Tutor den Aufbau der Applikation und anhand dessen die allgemeine Idee hinter dem Model-View-Controller-Entwurfsmuster. Die Applikation präsentiert beim Start lediglich eine funktionslose View. Implementieren Sie eine Variante des Model-View-Controller-Entwurfsmuster mit Hilfe des Observer/Observable-Design- Patterns. Wie in der Vorlesung vorgestellt, beobachtet die View das Model und wird benachrichtigt, wenn sich dort etwas geändert hat. Für diesen Aufgabenteil reicht es, wenn Sie die beiden Buttons mit Funktionalität versehen, so dass sich bei einem Klick auf den Erhöhe-Button der Wert im Model um 1 erhöht, beim Verringern um 1 erniedrigt. Im JLabel in der Mitte soll immer der aktuelle Wert angezeigt werden. Ergänzen Sie außerdem eine geeignete (doppelte) Fehlerbehandlung, die dafür sorgt, dass sich der Zahlwert immer nur im Intervall von 0 bis 100 bewegen kann. Model View Controller Das Model-View-Controller Pattern ist ein sehr weit verbreitetes Konzept zur Strukturierung von Softwareprogrammen. Die grundsätzliche Idee dabei besteht darin, den Aufbau eines Programms komponentenweise in drei Teile zu trennen: Eben Model, View und Controller. Ziel dabei ist es, einzelne Teile des Codes möglichst wiederverwertbar gestalten zu können. Dies soll dazu führen, dass man Programme einfacher erweitern oder ändern kann. Model Im Model werden alle Daten einer Applikation abgelegt und Teile der grundlegenden Manipulationslogik. Im vorgegebenen Beispiel wird dort die aktuell gewählte Zahl vorgehalten. Um das Model stets in einem sinnvollen Zustand zu halten, ist es sinnvoll Fehlerprüfung in den Manipulationsmethoden (hier beispielsweise setwert()) einzusetzen. Das Model enthält im allgemeinen keine reine Applikationslogik, es kann jedoch sinnvoll sein, dass beispielsweise grafische Objekte, wie eine Linie, neben ihrem Zustand (also beispielsweise den Eckpunkten und ihrer Farbe) auch weiß wie sie sich auf eine gegebene Oberfläche zeichnen kann. Dazu mehr auf dem nächsten Aufgabenblatt. 2

View View-Objekte sind für die Darstellung von Daten verantwortlich und können Möglichkeit bieten, Daten durch den Benutzer zu ändern oder anzupassen. Die Daten selbst sind jedoch wie oben beschrieben im Model gespeichert. Um auch View-Objekte möglichst wiederverwertbar zu gestalten, ist es ratsam, diese in generischer Weise konfigurierbar zu machen. In der gegebenen Applikation ist in der Klasse ZaehlerView im Grunde ein Aussagen und Funktionsfreies JPanel konfiguriert, das grundsätzlich auch in jeder anderen Applikation mit anderm Zweck, als hier verwendet, zum Einsatz kommen könnte. Das gegebene Beispiel ist natürlich sehr akademisch, man kann sich vielleicht besser ein Fenster für eine Betriebssystem-Benachrichtigung vorstellen. Dieses zeigt immer einen Text und eine Menge von Buttons, welche Funktion das Fenster aber genau hat, muss in der View gar nicht definiert sein. Dies erledigt der Controller. Controller Für die Verbindung zwischen den möglichst generischen Views und den spezialisierten Model-Klassen sind die Controller verantwortlich. Im Allgemeinen kann man sagen, dass sie dafür sorgen, dass die Operationen, die ein User in einer View auslöst, an das entsprechende Model propagiert werden. Außerdem kann der Controller genutzt werden, um die View und das Model initial aufzubauen und miteinander bekannt zu machen. Im gegebenen Beispiel legt der Controller die für seinen Zweck nötige View an und konfiguriert diese - genau wie das entsprechende Model. Schließlich enthält der Controller den größten Teil der eigentlichen Applikationslogik, also den Teil der des Programmcodes, der die eigentlich geforderten Dinge tut. In der Beispielsapplikation legt er also alle nötigen Listener an und implementiert deren Logik: Was soll passieren, wenn ein Nutzer auf einen Button klickt? Was soll passieren, wenn ein Nutzer am Slider zieht? Zusammenspiel Während die Grenzen für die Zuständigkeit der einzelnen Teile des MVC-Patterns relativ deutlich abgegrenzt sind, gibt es für das Zusammenspiel im Wesentlichen zwei häufig eingesetzte Varianten. In der ersten Variante kommuniziert die View direkt mit dem Model. In der Aufgabe sollte hierzu das Observer/Observable-Pattern eingesetzt werden. Dabei erweitert eine Klasse die Systemklasse Observable und weitere Klassen, die das Interface Observer implementieren, können das Observable nun beobachten. Das Observable, hier das Model, wird im ersten Fall also von der View beobachtet und benachrichtigt diese per statechanged und notfiyobservers über entsprechende Änderungen. Die View implementiert nun die Methode update, um sich entsprechend selbst zu ändern, wenn das Model seinen Zustand geändert hat: 3

In der zweiten Variante kommuniziert die View überhaupt nicht direkt mit dem Model. Das Anpassen der View an den neuen Zustand erfolgt über den Controller, der diesmal der Observer ist und die View entsprechend anpasst: Während beide Vorgehen zu einer sinnvollen Code-Strukturierung beitragen, hat letztere Methode den weiteren großen Vorteil, dass Model und View sich niemals direkt kennen müssen, so dass die View noch generischer gehalten werden kann. Sie muss also nicht wissen, welche Werte aus dem Model abgeholt werden müssen, um sich selbst anzupassen. Für den Code siehe Anhang Aufgabe 3. Aufgabe 1.2: Slider und Eingabefeld (20 Punkte) Ergänzen Sie die Applikation aus Aufgabe 1 dahingehend, dass sich die Zahl auch dann im Bereich von 0 bis 100 entsprechend ändert, wenn an dem JSlider gezogen wird. Erweitern Sie die Applikation außerdem so, dass der Benutzer in einem Eingabefeld eine Zahl eingeben kann. Die Zahl soll nach Drücken der Eingabe-Taste am Model gesetzt werden und anschließend in der Anwendung im JLabel und auf dem JSlider angezeigt werden. Achten Sie auf eine geeignete Fehlerbehandlung. 4

Siehe Anhang Aufgabe 3. Aufgabe 1.3: Look and Feel (30 Punkte) Erweitern Sie die Applikation um eine JComboBox, mit der das Look and Feel der Applikation umgestellt werden kann. Auswählbar sollen die Designs sein, die auf der Plattform, auf der das Programm läuft, zur Verfügung stehen. Hinweis: Zum Umgang mit Look and Feels sind besonders die Klassen UIManager und SwingUtilities von Bedeutung. Machen Sie sich damit in der Java-Dokumentation vertraut. Erstellen Sie ein eigenes JAR-File. Das JAR-File sollte ohne Angabe der Main-Klasse auf der Kommandozeile ausführbar sein. Siehe Anhang. 5