AUFGABE 1: Ein Wagen (dargestellt durch ein Rechteck) soll sich von links nach rechts bewegen. Tipp: Timer benutzen AUFGABE 2: Zusätzlich zu Aufgabe.

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

der Universität Oldenburg
Ein Beispiel in Java.
Rekursive Grafiken Reklursive Grafiken.
Zusammenfassung des Kapitels 8
Programmierkurs Java WS 98/99 Vorlesung 15 Dietrich Boles 17/02/99Seite 1 Programmierkurs Java Vorlesung im WS 1998/1999 am FB Informatik der Universität.
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
Grundlagen der Programmierung (GP) Prof. Dr. H. Schlingloff Joachim Hänsel
Java: Programmierung grafischer Oberflächen
Java: Programmierung grafischer Oberflächen
FH-Hof Java Packages Richard Göbel. FH-Hof Das Modulkonzept für Java Packages dienen zur Strukturierung größerer Java- Programme Ein Package kann: eigene.
Java: Grundlagen der Objektorientierung
MVC.
IF-ELSE-IF-Ketten Weiter mit PP..
Grafische Benutzeroberfläche
Wie überwacht man Objekte im "Alltag" ?. Indem man "Wanzen" an diese anbringt.
Ein Beispiel in Java.
Assoziationen (Beziehungen) 1 : n. Zu einem Auto gibt es mehrere Fahrer (2) und zu diesen 2 Fahrern gibt es genau dieses Auto.
Assoziationen (Beziehungen). Zwischen Objekten kann es eine Beziehung geben.
Interface bzw. Schnittstelle anschaulich: Hüllenklasse
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
M a r c – o l i v e r p a h l Die ObjektOrientierte Mühle Das Beispiel soll noch einmal das Konzept der Objektorientiertheit erläutern. Dabei werden außerdem.
Sommersemester 2003 Lars Bernard
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 6 Model-View-Controler als Grundlage für Nutzerschnittstellen Sommersemester 2003 Lars Bernard.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 8 Sitzung 8: Zeichnen in Java.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 7 User Interfaces in Java Sommersemester 2003 Lars Bernard.
Objektorientierte Programmierung JDK-Klassenbibliothek
Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit.
Programmieren mit JAVA
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 GUI Konstruktion: 1. Entwurf mit Papier und Bleistift / Post Ist 2. Eventuell.
1DVG3 - eigene AWT-Komponenten Entwicklung eigener AWT-Komponenten.
1DVG3 - Paint Paint ein Zeichenprogramm. DVG3 - Paint 2 Paint – ein Zeichenprogramm.
DVG1 - Applets1 Applets. DVG1 - Applets2 Die Klasse Applet n Applets sind Grafikobjekte, die unter Steuerung eines anderen Programms (z.B. eines Browsers,
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
03 - Paint Das Zeichenprogramm EMMA Paint2 Aufgabenstellung Entwicklung eines ausschließlich in JAVA programmierten Graphikprogrammes. Vergleichsprodukte:
08-GraphikImplementierung Implementierung der Graphik in EMMA301Paint.
04 - Actions Actions Actions 2 Motivation In verschiedenen Swing-Komponenten werden ausgelöste Aktionen durch ActionListener behandelt. Häufig werden.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
© 2002 Dr. Cavelius - Ley - Pohlig - Taulien Step by step zum JFrame 1 Zum JFrame Step by step by step by step by step by step by step by step by.
© 2005 Pohlig GK Informatik K Zum JFrame Step by step by step by step by step by step by step by step by.
© 2006 MPohlig Grundkurs Informatik mit Java 1 JFrame-Vorlage Step by step by step by step by step by step by step by step by.
© 2004 Pohlig - Taulien Swing Ereignissteuerung. © 2004 Pohlig - Taulien GK Informatik mit Java 2 Auf Button-Klick reagieren.
© 2005 Pohlig – Taulien: Eine GUI für die Klasse Mathematik Kurs: Come Together 1 April 2005 Eine GUI für die Klasse Mathematik.
© 2005 Pohlig – Taulien: Die Matheamatik-GUI als Applet Come Together 1 April 2005 Was ist ein Applet Ein Applet ist ein Javaprogramm, das die VM benutzt,
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 7 Sitzung 7: User Interfaces in Java.
Erste Schritte mit Eclipse Neues Projekt erstellen (1)
AWT und JFC Abstract Windowing Toolkit
Applets Java für’s Web.
Java: Programmierung grafischer Oberflächen
Jigugegl Java isch guet u git e guete Luun! (frei nach Figugegl) Jigugegl.
CuP - Java Elfte Vorlesung Montag, 11. November 2002.
Informatik – Programmierpraktikum Alexander Volodarski Gruppe 14
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Variablenkonzept Klassisch, in Java Basistyp
Client-Server-Architektur
Learning By Doing Ereignissteuerung (Events) prozedural ereignisgesteuert Unterprogrammaufruf an fest codierter Stelle Wann immer der Event auftritt, führe.
Learning By Doing Konstruktoren Gleicher Name wie die Klasse Zur Initialisierung des Objekts, insbesondere mit Parametern Wir immer bei der Objekterzeugung.
Lind 02/2005 Einführung in JAVA. Lind 02/2005 Beispiel: Mittelwert Es soll ein Programm erstellt werden, das den Mittelwert zweier reeller Zahlen berechnet.
Programmiervorkurs WS 2014/15 Methoden
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
© 2005 Pohlig Informatik Jg. 11 mfH Michael Pohlig 1 Zum JFrame Step by step by step by step by step by step by step by step by.
Java-Kurs Übung Benutzeroberflächen und Graphik Frames (Fenster)
GUI Programmierung in Java Branimir Djordjevic. GUI - Wichtige Begriffe -  Die Swing-Bibliothek in Java stellt zum Beispiel die folgenden Windows zur.
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Wie überwacht man Objekte im "Alltag" ?
Vererbung.
Java-Kurs Übung Klassen und Objekte: Vererbung (Fortsetzung)
Mit der Turtle Java Programmieren
Grundkurs Informatik mit Java
 Präsentation transkript:

AUFGABE 1: Ein Wagen (dargestellt durch ein Rechteck) soll sich von links nach rechts bewegen. Tipp: Timer benutzen AUFGABE 2: Zusätzlich zu Aufgabe 1 soll sich der Wagen, wenn er am rechten Rand ankommt, wieder von links nach rechts bewegen. AUFGABE 3: Zusätzlich zu Aufgabe 2 soll jedesmal beim Anklicken des Buttos "schneller" der Wagen schneller fahren.

AUFGABE: Ein Wagen (dargestellt durch ein Rechteck) soll sich immer wieder von links nach rechts bewegen. Zusätzlich soll jedesmal beim Anklicken des Buttos "schneller" der Wagen schneller fahren. Außerdem muß das Entwurfsmuster MVC benutzt werden. Hier das UML ...

AnimationController - animationView : AnimationView - animationModel : AnimationModel AnimationView - animationModel : AnimationModel AnimationModel - Wagen : wagen schwarzer Pfeil: Assoziation roter, gestrichelter geschwungener Pfeil: zeigt vom Ereignis (fire) zur Wanze (Lauscher)

AnimationController AnimationView AnimationModel - animationView : AnimationView - animationModel : AnimationModel AnimationView - animationModel : AnimationModel AnimationModel - Wagen : wagen Anwender feuert in der View. Einfangende Methode im Controller verändert Daten im Model Timer feuert im Controller. Einfangende Methode im Controller verändert Daten im Model. Model feuert (weil Daten im Model geändert wurden). Einfangende Methode in der View veranlaßt Bildschirmausgabe.

AnimationController - animationView : AnimationView - animationModel : AnimationModel AnimationView - animationModel : AnimationModel AnimationModel - Wagen : wagen Wie siehe eine Kette der Informationsverarbeitung aus , d.h: Wer beginnt zu feuern ? Welche Wanzen treten dann in Aktion und auf welche Daten greifen diese dann zu? Es gibt zwei Möglichkeiten, von denen gefeuert werden kann:

1. Möglichkeit: View feuert

AnimationController - animationView : AnimationView - animationModel : AnimationModel AnimationView - animationModel : AnimationModel AnimationModel - Wagen : wagen Button "schneller" wird betätigt --> Feuer Einfangende Methode des Controllers verändert die Daten ("schrittweite") des Model, also Zugriff auf Model, also ... --> Feuer Einfangende Methode der View greift auf die Daten (" schrittweite ") des Model zu (für Bildschirmausgabe).

AnimationController AnimationView AnimationModel - animationView : AnimationView - animationModel : AnimationModel AnimationView - animationModel : AnimationModel AnimationModel - Wagen : wagen II) View feuert (nochmals zusammengefasst): Durch das Klicken des Buttons "schneller" wird Feuer ausgelöst. Dadurch wird in der einfangenden Methode des Controllers die Daten (das Attribut "wagen", also Schrittweite beim Bewegen) im Model geändert (Wagen fährt schneller). Diese Änderung veranlaßt das Model zu feuern. Dadurch wird in der einfangenden Methode der View die Daten (das Attribut "wagen", also Schrittweite beim Bewegen) des Models ausgelesen und auf dem Bildschirm ausgegeben (Anwender sieht wie der Wagen schneller fährt).

2. Möglichkeit: Timer feuert

AnimationController - animationView : AnimationView - animationModel : AnimationModel AnimationView - animationModel : AnimationModel AnimationModel - Wagen : wagen Timer feuert --> Feuer Einfangende Methode des Controllers verändert die Daten (Koordinaten) des Model, also Zugriff auf Model, also ... --> Feuer Einfangende Methode der View greift auf die Daten (" schrittweite ") des Model zu (für Bildschirmausgabe).

AnimationController - animationView : AnimationView - animationModel : AnimationModel AnimationView - animationModel : AnimationModel AnimationModel - Wagen : wagen I) Timer feuert (nochmals zusammengefasst): Dadurch wird in der einfangenden Methode des Controllers die Daten (das Attribut "wagen") im Model geändert (Wagen fährt). Diese Änderung veranlaßt das Model zu feuern. Dadurch wird in der einfangenden Methode der View die Daten (das Attribut "wagen") des Models ausgelesen und auf dem Bildschirm ausgegeben (Anwender sieht wie der Wagen fährt).

Implementieren Sie - soweit dies mit Ihrem bisherigen Wissen möglich ist - M, V und C der obigen Animation (zuerst ohne den Button "schneller". Danach mit dem Button "schneller". Beachten Sie ...

Der Button schneller soll unten (South) im Border-Layout angebracht werden. Die Bewegungen des Wagens müssen im Center Border-Layout angebracht werden

Border-Layout: NORTH EAST WEST CENTER SOUTH

In der folgenden Implementierung wird (aus Gründen der Vereinfachung) noch nicht das Border-Layout verwendet.

package wagenanimationmvc11; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Observable; import java.util.Observer; import javax.swing.*; public class MainWagenAnimationMVC11 { public static void main(String[] args){ AnimationController animationController = new AnimationController(); }

package wagenanimationmvc11; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.Timer; class AnimationController { private AnimationView animationView; private AnimationModel animationModel; public AnimationController() { Timer timer; animationModel = new AnimationModel(); animationView = new AnimationView(animationModel); TimerActionListener tal; tal=new TimerActionListener(animationModel); timer = new Timer(2,tal); timer.start(); } public AnimationView getAnimationView() { return animationView;

class TimerActionListener implements ActionListener { private AnimationModel animationModel; public TimerActionListener(AnimationModel animationModel){ this.animationModel=animationModel; } public void actionPerformed(ActionEvent ae) { animationModel.updaten();

package wagenanimationmvc11; import java.awt.Color; import java.awt.Graphics; class AnimationJPanel extends javax.swing.JPanel { private Wagen wagen; public void setWagen(Wagen wagen){ this.wagen=wagen; } public AnimationJPanel(Wagen wagen) { public void paintComponent(Graphics g) { super.paintComponent(g); g.setColor(Color.red); g.fillRect(wagen.getX(), wagen.getY(), 30, 25);

package wagenanimationmvc11; import java.util.Observable; class AnimationModel extends Observable{ private Wagen wagen; public Wagen getWagen(){ return wagen; } public void updaten() { wagen.fahren(); setChanged(); notifyObservers(); public AnimationModel() { wagen=new Wagen();

package wagenanimationmvc11; import java.awt.Container; import java.util.Observable; import java.util.Observer; import javax.swing.JFrame; class AnimationView extends javax.swing.JFrame implements Observer{ private AnimationJPanel animationJPanel; private AnimationModel animationModel; public AnimationView(AnimationModel animationModel) { Container mycont; this.animationModel = animationModel; this.animationModel.addObserver(this); mycont = getContentPane(); this.setSize(500,500); animationJPanel = new AnimationJPanel(animationModel.getWagen()); mycont.add(animationJPanel); this.setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }

public AnimationJPanel getAnimationJPanel(){ return animationJPanel; } public void update(Observable m, Object o) { if (m == animationModel) { animationJPanel.repaint();

package wagenanimationmvc11; class Wagen{ private int x; private int y; private int schritt; public Wagen(){ x=0; y=0; schritt = 1; } public void setX(int pX){ x = pX; public int getX(){ return x;

public void setY(int pY){ y = pY; } public int getY(){ return y; void fahren(){ if(x <= 400){ x = x + schritt; else{ x=0; void setSchritt(int pSchritt){ schritt = pSchritt;