Wie überwacht man Objekte im "Alltag" ?. Indem man "Wanzen" an diese anbringt.

Slides:



Advertisements
Ähnliche Präsentationen
programmiert April-Juni 2003 von Knut Riechmann
Advertisements

Ein Beispiel in Java.
Java: Programmierung grafischer Oberflächen
Java: Objektorientierte Programmierung
Java: Programmierung grafischer Oberflächen
Java: Dynamische Datentypen
Einführung in die Programmierung von 3D-Grafiken Basis ist Java3D
Einfache Komponenten in SWING
Java: Grundlagen der Objektorientierung
MVC.
AUFGABE 1: Ein Wagen (dargestellt durch ein Rechteck) soll sich von links nach rechts bewegen. Tipp: Timer benutzen AUFGABE 2: Zusätzlich zu Aufgabe.
Grafische Benutzeroberfläche
Ein Beispiel in Java.
Konstruktoren.
Objekte werden als Adressen (Referenzen) übergeben. Dies führt manchmal zu unerwarteten Ergebnissen...
WHILE - Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
Assoziationen (Beziehungen). Zwischen Objekten kann es eine Beziehung geben.
Polymorphie (Vielgestaltigkeit)
Interface bzw. Schnittstelle anschaulich: Hüllenklasse
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
Exceptions. import java.sql.*; public class MyException{ boolean b; Statement stat; public MyException(){ b = stat.execute("xyz"); } Beim Übersetzen dieses.
DO...WHILE Anweisung.
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.
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
Programmieren mit JAVA
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
1DVG3 - Paint Paint ein Zeichenprogramm. DVG3 - Paint 2 Paint – ein Zeichenprogramm.
1DVG3 - anonyme Klassen Anonyme Klassen. DVG3 - anonyme Klassen 2 Syntax new BasisKlasse(Parameterliste) { Modifikationen und Erweiterungen der Basisklasse.
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Einführung in Java1 Einführung in JAVA.
03 - Paint Das Zeichenprogramm EMMA Paint2 Aufgabenstellung Entwicklung eines ausschließlich in JAVA programmierten Graphikprogrammes. Vergleichsprodukte:
04 - Actions Actions Actions 2 Motivation In verschiedenen Swing-Komponenten werden ausgelöste Aktionen durch ActionListener behandelt. Häufig werden.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
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.
Thema: Fibonacci-Zahlen
Bestimmung des ggT zweier Zahlen
© 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: 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.
Objektorientierte Modellierung
Rekursive Funktionen (Fakultät)
Erste Schritte mit Eclipse Neues Projekt erstellen (1)
AWT und JFC Abstract Windowing Toolkit
Java: Programmierung grafischer Oberflächen
CuP - Java Elfte Vorlesung Montag, 11. November 2002.
Mahmoud Zoabi Khaled Isa
Informatik – Programmierpraktikum Alexander Volodarski Gruppe 14
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Objektorientiertes Konstruieren
Variablenkonzept Klassisch, in Java Basistyp
Learning By Doing Ausnahmebehandlung Exceptions (Ausnahmebehandlung) Typische Fehlverhalten zur Laufzeit: s. Buch S. 287ff -Verwendung von null-Objekten.
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
Programmiervorkurs WS 2014/15 Schleifen
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
3. Beschreibung von Abläufen durch Algorithmen 3.4 Zufall
© 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)
© 2004 Pohlig Informatik Kurse © 2004 Pohlig Informatik Kurse Der Tramp tanzt die Rekursion zünderUntersuchen(…) Basisfall Rückmeldung:
Institut für Kartographie und Geoinformation Prof. Dr. L. Plümer, Dipl.-Ing. D. Dörschlag, Dr. G. Gröger Einführung in die Programmierung mit Java 13.
Wie überwacht man Objekte im "Alltag" ?
Grundkurs Informatik mit Java
 Präsentation transkript:

Wie überwacht man Objekte im "Alltag" ?

Indem man "Wanzen" an diese anbringt.

Beispiel:

Überwachung eines Kaufhauses, um einen Brand oder einen Einbruch zu verhindern. Die Wanze hat z.B. zwei verschiedene Funktionen integriert: - Rauchmelder - Bewegungsmelder

Feuerwehr Rauch- melder Bewegungs- melder Polizei Wanze, besteht aus: löst Aktion aus

Es gibt auch noch andere Wanzen.

Beispiel:

Überwachung eines an einem - zu Kühlzwecken- Fluss liegenden AKWs, um Schäden (die statistisch pro Urknall nur zu 0, % vorkommen) von der Bevölkerung "abzuwenden".

Die Wanze hat z.B. drei verschiedene Funktionen - GAU-Melder - Sabotage-Melder - Niedrigwasser-Melder

Polizei Sabotage- Melder Niedrigwasser- Melder Abschaltung Wanze, besteht aus: löst Aktion aus GAU- Melder Evakuierung löst Aktion aus

Wanzen in Java

1. Beispiel: An eine Schaltfläche (Button) wird eine Wanze angebracht. Diese überwacht, ob vom Anwender eine spezielle Aktion ausgeführt wird: d.h. ob der Button "angeklickt" bzw. die Leertaste gedrückt wird oder...

… die Maus den Button "betritt" bzw. den Button "verlässt". Wenn die Aktion ausgeführt wird, wird automatisch ein spezielles Objekt erzeugt bzw. "geworfen".

Dieses spezielle Objekt wird dann einer speziellen Methode der Wanze übergeben (von dieser Methode mit einem "Fischernetz eingefangen"). Anschaulich illustriert in der nächsten Folie …

entsprechende Meldung auf BS Button betreten Button verlassen Wanze, besteht u.a. aus folgenden (Überwachungs)Methoden löst Aktion aus, z.B: Button anklicken entsprechende Meldung auf BS löst Aktion aus, z.B: entsprechende Meldung auf BS

Zeitlicher Verlauf könnte z.B. so aussehen:

Button anklicken : dadurch wird automatisch ein spezielles Objekt erzeugt (geworfen) Zeitlicher Verlauf : von oben nach unten Dieses Objekt wird automatisch einer speziellen Methode der Wanze übergeben, die dann automatisch ausgeführt wird. Button anklicken : dadurch wird automatisch ein spezielles Objekt erzeugt (geworfen) Dieses Objekt wird automatisch einer speziellen Methode der Wanze übergeben, die dann automatisch ausgeführt wird. …

zugehöriges, einfaches Demo- Beispiel in Java Im folgenden Demo-Programm wird kein Wert auf Design gelegt. Es soll nur das Prinzip eines Listeners verstanden werden.

package listener1; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; public class MainListener1 { public static void main(String[] args) { Fenster fenster; fenster = new Fenster(); }

class Fenster extends javax.swing.JFrame{ public Fenster(){ JButton button; Container mycont; ButtonActionListener bal; button = new JButton("klick mich"); bal = new ButtonActionListener(); mycont = getContentPane(); add(button); button.addActionListener(bal); this.setSize(500, 500); this.setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } class ButtonActionListener implements ActionListener { public void actionPerformed(ActionEvent ae) { System.out.println("es wurde gefeuert "); } einfangende Methode anbringen der Wanze bal an den Button "button", der beim Klicken feuert.

2. Beispiel: Ein Timer (Uhr) feuert in periodischen (z.B. 1 ms) Abständen (d.h. er erzeugt bzw. "wirft" ein spezielles Objekt). An diesen Timer wird eine Wanze angebracht. Diese überwacht, wann der Timer feuert.

Wenn er feuert, wird automatisches dieses spezielle Objekt einer speziellen Methode übergeben (von dieser Methode "eingefangen").

Zeitlicher Verlauf könnte z.B. so aussehen:

Timer feuert : dadurch wird automatisch ein spezielles Objekt erzeugt (geworfen) Zeitlicher Verlauf : von oben nach unten Dieses Objekt wird automatisch einer speziellen Methode der Wanze übergeben, die dann automatisch ausgeführt wird. Timer feuert : dadurch wird automatisch ein spezielles Objekt erzeugt (geworfen) Dieses Objekt wird automatisch einer speziellen Methode der Wanze übergeben, die dann automatisch ausgeführt wird. …

zugehöriges, einfaches Demo- Beispiel in Java Im folgenden Demo-Programm wird kein Wert auf Design gelegt. Es soll nur das Prinzip eines Listeners verstanden werden.

package listener3; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.Timer; public class MainListener3 { public static void main(String[] args) { Timer timer; TimerActionListener tal; tal = new TimerActionListener(); timer = new Timer(2000,tal); timer.start(); // Endlosschleife while(true) ; } class TimerActionListener implements ActionListener { public void actionPerformed(ActionEvent ae) { System.out.println("x"); } einfangende Methode anbringen der Wanze tal an den Timer "timer", der periodisch alle 2000 ms feuert

3. Beispiel: An ein Objekt (z.B. eine Zielperson) wird eine Wanze angebracht ("sie wird von einem Detektiv überwacht"). Diese überwacht, ob das Objekt (besser Attribute des Objekts wie z.B. eine Zahl) verändert wird.

Wenn etwas verändert wird, wird automatisch ein spezielles Objekt erzeugt bzw. "geworfen". Dieses spezielle Objekt wird dann einer speziellen Methode übergeben (von dieser Methode "eingefangen").

Wenn er feuert, wird automatisches dieses spezielle Objekt einer speziellen Methode übergeben (von dieser Methode "eingefangen").

Zeitlicher Verlauf könnte z.B. so aussehen:

Objekt wird geändert : dadurch wird automatisch ein spezielles Objekt erzeugt (geworfen) Zeitlicher Verlauf : von oben nach unten Dieses Objekt wird automatisch einer speziellen Methode der Wanze übergeben, die dann automatisch ausgeführt wird. Objekt wird geändert : dadurch wird automatisch ein spezielles Objekt erzeugt (geworfen) Dieses Objekt wird automatisch einer speziellen Methode der Wanze übergeben, die dann automatisch ausgeführt wird. …

Hier das UML...

Zielperson - zahl : int Detektiv - zielperson : Zielperson schwarzer Pfeil: Assoziation roter, gestrichelter geschwungener Pfeil: zeigt vom Ereignis (fire) zur Wanze (Lauscher)

zugehöriges, einfaches Demo- Beispiel in Java Im folgenden Demo-Programm wird kein Wert auf Design gelegt. Es soll nur das Prinzip eines Listeners verstanden werden.

class Zielperson extends Observable{ private int zahl; public Zielperson (){ zahl=0; } public void change(){ zahl=zahl+1; setChanged(); notifyObservers("Zahl"); } public int getZahl(){ return zahl; } diese Methoden veranlassen, daß gefeuert wird: setChanged() setzt ein Änderungsflag und zeigt damit an, daß eine Änderung erfolgt ist. Falls eine Änderung erfolgte, wird sie durch notifyObservers("Zahl") übermittelt. Gibt es keine Änderung, dann übermittelt notifyObservers() auch nichts. Der Methode notifyObservers(...) kann noch ein Objekt (hier wird implizit ein String in die Klasse Object gecastet) als Parameter übergeben werden. Dieses kann dann vom "Detektiv" verwendet (ausgewertet) werden.

class Zielperson extends Observable{ private int zahl; public Zielperson (){ zahl=0; } public void change(){ zahl=zahl+1; setChanged(); notifyObservers("Zahl"); } public int getZahl(){ return zahl; } Dadurch wird TRModel wird zu einem Ereignisauslöser gemacht, d.h. zum Leben erweckt. Im Gegensatz dazu muß ein Button oder ein Timer nicht zu einem Ereignisauslöser gemacht werden. Diese können ohne weitere Vorbereitung feuern bzw. Ereignisobjekte werfen (man braucht dann nur noch eine Wanze).

class Detektiv implements Observer{ private Zielperson zielperson; public Detektiv(Zielperson ziel){ zielperson = ziel; } public void update(Observable m, Object o) { if (m == zielperson) { System.out.print((String)o +" " ); System.out.println(zielperson.getZahl()); } einfangende Methode

package listener2; import java.util.Observable; import java.util.Observer; public class MainListener2 { public static void main(String[] args) { int i; Detektiv watson; Zielperson z; z = new Zielperson(); watson = new Detektiv(z); // An Zielperson den Lauscher anbringen z.addObserver(watson); for(i=0;i<10;i++){ z.change(); } anbringen der Wanze watson an das Objekt z