Medientechnik. Übung MVC



Similar documents
DHBW Karlsruhe, Vorlesung Programmieren, Remote Musterlösungen

5.17 GUI. Xiaoyi Jiang Informatik I Grundlagen der Programmierung

Konzepte objektorientierter Programmierung

// Correntista. //Conta Corrente. package Banco; public class Correntista { String nome, sobrenome; int cpf;

TIn 1: Lecture 3: Lernziele. Lecture 3 The Belly of the Architect. Basic internal components of the Pointers and data storage in memory

file://c:\dokumente und Einstellungen\Marco Favorito\Desktop\ScanCmds.html

J2EE-Application Server

CSS 543 Program 3: Online Tic-Tac-Toe Game Professor: Munehiro Fukuda Due date: see the syllabus

Open Text Social Media. Actual Status, Strategy and Roadmap

LEARNING AGREEMENT FOR STUDIES

Homework/Program #5 Solutions

INTRODUCTION TO COMPUTER PROGRAMMING. Richard Pierse. Class 7: Object-Oriented Programming. Introduction

Erfolgreiche Zusammenarbeit:

CS 335 Lecture 06 Java Programming GUI and Swing

SPICE auf der Überholspur. Vergleich von ISO (TR) und Automotive SPICE

Offizielle Interpretationen zur Schweißerprüfung ISO

1.00 Lecture 1. Course information Course staff (TA, instructor names on syllabus/faq): 2 instructors, 4 TAs, 2 Lab TAs, graders

22. April 2010 Siemens Enterprise Communications

Quick Start Guide UTM 110/120

Linux & Docker auf Azure

Implementing Data Models and Reports with Microsoft SQL Server

1

Contents. What is Wirtschaftsmathematik?

Diese Liste wird präsentiert von. Netheweb.de

HYPO TIROL BANK AG. EUR 5,750,000,000 Debt Issuance Programme (the "Programme")

MASTER THESIS ABOUT THE RELEVANCE OF THE CONTEXT FOR THE MOOC LEARNER EXPERIENCE

GUIs with Swing. Principles of Software Construction: Objects, Design, and Concurrency. Jonathan Aldrich and Charlie Garrod Fall 2012


How To Connect A Webadmin To A Powerpoint (Utm) From A Usb To A Usb (Net) Or Ipa (Netlan) Device (Netbook) From Your Computer Or Ipam (Netnet

Rainer Stropek software architects gmbh. Entwicklung modularer Anwendungen mit C# und dem Managed Extensibility Framework (MEF)

Advanced Network Programming Lab using Java. Angelos Stavrou

Multipurpsoe Business Partner Certificates Guideline for the Business Partner

BP9 - Citrix Receiver Optimierung: So verbessern Sie Management und Benutzerkomfort. Systems Engineer, Citrix Systems GmbH

Support verb constructions

Using A Frame for Output

SAP GLOBAL DIVERSITY POLICY

Symantec Backup Exec (TM) 13 Installation Log

Extending Desktop Applications to the Web

Safe Harbor Statement

Timebox Planning View der agile Ansatz für die visuelle Planung von System Engineering Projekt Portfolios

How To Build A Swing Program In Java.Java.Netbeans.Netcode.Com (For Windows) (For Linux) (Java) (Javax) (Windows) (Powerpoint) (Netbeans) (Sun) (

Developments in the Austrian Surveying Education

Welcome Unveiling the Results of the First Comprehensive Study on Structured Products in Switzerland

Analytics & Marketing 4.0 Wie die Anwendung von BigData die Customer Loyalty von morgen schafft

ISO/IEC 27001:2013 Thema Änderungen der Kontrollen der ISO/IEC 27001:2013 im Vergleich zur Fassung aus 2005 Datum

AD2 - The future of mobile enterprise applications: Live from the Citrix Labs

Java Server Pages combined with servlets in action. Generals. Java Servlets

JiST Graphical User Interface Event Viewer. Mark Fong

AnyWeb AG

LINGUISTIC SUPPORT IN "THESIS WRITER": CORPUS-BASED ACADEMIC PHRASEOLOGY IN ENGLISH AND GERMAN

APPLICATION SETUP DOCUMENT

Elena Chiocchetti & Natascia Ralli (EURAC) Tanja Wissik & Vesna Lušicky (University of Vienna)

public class demo1swing extends JFrame implements ActionListener{

Using Digital Libraries for E-Learning: Environments, Projects, Interfaces

Altas, Bajas y Modificaciones de Registros en tabla MYSQL

Microsoft Certified IT Professional (MCITP) MCTS: Windows 7, Configuration ( )

Vergleich der Versionen von Kapitel 1 des EU-GMP-Leitfaden (Oktober 2012) 01 July November Januar 2013 Kommentar Maas & Peither

Innovative network monitoring technologies for hydraulically not separated large zones

Principles of Software Construction: Objects, Design and Concurrency. GUIs with Swing. toad Spring 2013

public class Craps extends JFrame implements ActionListener { final int WON = 0,LOST =1, CONTINUE = 2;

IAC-BOX Network Integration. IAC-BOX Network Integration IACBOX.COM. Version English

Windows HPC Server 2008 Deployment

Swing. A Quick Tutorial on Programming Swing Applications

SAP Sourcing/CLM Webcast Query & User/Contact Maintenance Web Service

AJAX SSL- Wizard Reference

Dokumentation über die Übernahme von. "GS-R-3" (The Management System for Facilities and Activities) "Sicherheitskriterien für Kernkraftwerke"

Testen mit Produktionsdaten Fluch oder Segen?

11. Applets, normal window applications, packaging and sharing your work

3 rd Young Researcher s Day 2013

A: Ein ganz normaler Prozess B: Best Practices in BPMN 1.x. ITAB / IT Architekturbüro Rüdiger Molle März 2009

Asterisk und Mediagateways

Run SAP Implementation Partner Program Guide 2009 ADOPTING THE RUN METHODOLOGY INTO YOUR SAP IMPLEMENTATIONS

Heterogeneous ABAP System Copy Technical Overview

Assignment # 2: Design Patterns and GUIs

STATIC VARIABLE/ METHODS, INHERITANCE, INTERFACE AND COMMAND LINE ARGUMENTS

Storage XenMotion Tampa Technology Project

Search Engines Chapter 2 Architecture Felix Naumann

Graphical User Interfaces

Moderne Sicherheit. Fokussiert auf Business Continuity, Mobilität & Application Control. Marc Mathys Country Manager Switzerland

SAP Solution Manager Change Request Management. SAP Solution Manager Product Management SAP AG

Zielgruppe Dieses Training eignet sich für IT-Professionals.

Nexawebホワイトペーパー. Developing with Nexaweb ~ Nexaweb to Improve Development Productivity and Maintainability

DTMs in the Cloud. FDT Developer Forum on 5th of May 2015 at Schneider Electric in Marktheidenfeld

BP1 Mobile App Management: Solutions for ios and Android. Gary Barton Mobility Architect Citrix Receivers and Gateways Group

Information Systems 2

Building an Architecture Model Entwerfen Sie mit AxiomSys ein Kontextdiagramm, das folgendermaßen aussieht:

DATA DISPLAY GROUP. Artista Software Development Kit (SDK) Artista Software Development Kit (SDK)

Mit einem Auge auf den mathema/schen Horizont: Was der Lehrer braucht für die Zukun= seiner Schüler

Transcription:

Medientechnik Übung MVC

Heute Model-View-Controller (MVC) Model programmieren Programmlogik Programmdaten Controller programmieren GUI Model Observer-Pattern Observable (Model) verwaltet Daten Observer (View) zeigt die Daten an und aktualisiert sich, sobald im Observable setchanged(); und notifyobservers(); aufgerufen wird Code sinnvoll kommentieren (Javadoc) [http://java.sun.com]

Eclipse Eclipse starten und Workspace festlegen View-Projekt der letzten Übung öffnen Source-Dateien gibt es notfalls auf der Homepage zum Download!

Kurzer Rückblick GUI für einen sehr einfachen Taschenrechner programmiert Unterschiedliche Elemente mit Hilfe von Layout-Managern angeordnet (default-)werte für einzelne Elemente gesetzt

public class Yaca { MVC main-methode public static void main(string[] args){ Controller yacacontroller = new Controller(); Yaca.java

MVC Controller public class Controller { public View yacaview; public Controller() { yacaview = new View(); yacaview.setvisible(true); Controller.java

MVC Model Import java.util.observable; public class Model extends Observable{ private float result; private float a; private float b; public Model() { result = 0; a = 0; b = 0; Model.java

MVC Model public class Model extends Observable{ private float result; private float a; private float b; public float getresult() { return result; public float geta() { return a; public float getb() { return b; Model.java

import java.util.observer; import java.util.observable; MVC View public class View extends JFrame implements Observer { public View(){ public void update(observable o, Object obj) { View.java

import java.util.observer; import java.util.observable; MVC View public class View extends JFrame implements Observer { public View(){ public void update(observable o, Object obj) { Model m = (Model) o; result.settext( + m.getresult()); firstinput.settext( + m.geta()); secondinput.settext( + m.getb()); View.java

MVC Controller public class Controller { public View yacaview; public Model yacamodel; public Controller() { yacamodel = new Model(); yacaview = new View(); yacamodel.addobserver(yacaview); yacaview.setvisible(true); Controller.java

MVC View public class View extends JFrame implements Observer { JButton start = new JButton("Start"); JButton clear = new JButton("Clear"); Diese Zeilen im Konstruktor löschen! JTextField firstinput = new JTextField(5); JTextField secondinput = new JTextField(5); JTextField result = new JTextField(5); String[] methods = {"+", "-", "*", "/"; JComboBox methodbox = new JComboBox(methods); View.java

MVC Controller import java.awt.event.actionevent; import java.awt.event.actionlistener; public class Controller implements ActionListener { Model yacamodel; View yacaview; public Controller() { yacaview = new View(this); yacamodel = new Model(); yacamodel.addobserver(yacaview); yacaview.setvisible(true); public void actionperformed(actionevent event) { Controller.java

MVC View public class View extends JFrame implements Observer { public View(Controller yacacontroller){ contentbuttons.add(start); start.setactioncommand("start"); start.addactionlistener(yacacontroller); contentbuttons.add(clear); clear.setactioncommand("clear"); clear.addactionlistener(yacacontroller); View.java

MVC Controller import java.awt.event.actionevent; import java.awt.event.actionlistener; public class Controller implements ActionListener { public void actionperformed(actionevent event) { String cmd = event.getactioncommand(); if (cmd.equals("start")) { yacamodel.calc(yacaview.getfirstinput(), yacaview.getsecondinput(), yacaview.getmethod()); if (cmd.equals("clear")) { yacamodel.clear(); Controller.java

MVC Model public class Model extends Observable{ public void calc(float a, float b, String method) { this.a = a; this.b = b; if (method.equals("+")) { result = a + b; setchanged(); notifyobservers(); else if (method.equals( -")) { result = a - b; setchanged(); notifyobservers(); Model.java

MVC Model public class Model extends Observable{ public void clear() { result = 0; a = 0; b = 0; setchanged(); notifyobservers(); Model.java

MVC View public class View extends JFrame implements Observer { public float getfirstinput() { float a = 0; try { a = Float.parseFloat(firstInput.getText()); catch (NumberFormatException e) {System.out.println( Ungueltiger erster Wert! ); return a; public float getsecondinput() { float b = 0; try { b = Float.parseFloat(secondInput.getText()); catch (NumberFormatException e) {System.out.println( Ungueltiger zweiter Wert! ); return b; View.java

MVC View public class View extends JFrame implements Observer { public float getsecondinput() { floatt b = 0; try { b = Float.parseFloat(secondInput.getText()); catch (NumberFormatException e) {System.out.println( Ungueltiger zweiter Wert! ); return b; public String getmethod() { String method = (String)methodBox.getSelectedItem(); return method; View.java

MVC Controller import java.awt.event.actionevent; import java.awt.event.actionlistener; public class Controller implements ActionListener { Model yacamodel; View yacaview; public Controller() { yacaview = new View(this); yacamodel = new Model(); yacamodel.addobserver(yacaview); yacamodel.clear(); yacaview.setvisible(true); public void actionperformed(actionevent event) { Controller.java

Kurze Info zum Übungsblatt Zur bisherigen GUI ein Model und einen Controller ergänzen GUI-Aktualisierung durch Observer-Pattern Genauere Informationen auf dem Übungsblatt Fragen am besten im Forum stellen Noch keine funktionierenden Bildfilter nötig!