Wie überwacht man Objekte im "Alltag" ?

Slides:



Advertisements
Ähnliche Präsentationen
Software Engeniering II
Advertisements

der Universität Oldenburg
DES-Simulator in JAVA, objektorientiert
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Ein Beispiel in Java.
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
Java: Objektorientierte Programmierung
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.
Abstrakte Klassen.
Wie überwacht man Objekte im "Alltag" ?. Indem man "Wanzen" an diese anbringt.
Ein Beispiel in Java.
Erweiterte Zuweisungskompatibilität
Konstruktoren.
Objekte werden als Adressen (Referenzen) übergeben. Dies führt manchmal zu unerwarteten Ergebnissen...
Assoziationen (Beziehungen). Zwischen Objekten kann es eine Beziehung geben.
Objekte und Arbeitsspeicher
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.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 7 User Interfaces in Java Sommersemester 2003 Lars Bernard.
Imperative Programmierung Funktionen und Parameter
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.
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.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Packages Vortrag : Cornelia Hardt 23. November 1999.
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 Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
DVG Einführung in Java1 Einführung in JAVA.
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
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.
Thema: Fibonacci-Zahlen
© 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.
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.
CuP - Java Elfte Vorlesung Montag, 11. November 2002.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Parameterübergabemechanismen für den Methodenaufruf
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
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
Java-Kurs Übung Besprechung der Hausaufgabe
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
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.
GUI Programmierung in Java Branimir Djordjevic. GUI - Wichtige Begriffe -  Die Swing-Bibliothek in Java stellt zum Beispiel die folgenden Windows zur.
Java Programme nur ein bisschen objektorientiert.
Tutorium Software-Engineering SS14 Florian Manghofer.
Grafische Benutzeroberflächen mit Swing (2) Christoph Broschinski, Alexander Sczyrba Jan Krüger
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Konstruktoren.
Objektorientierung Gliederung von Daten und Funktionen zu Objekten
Vererbung.
„Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen.“
Java-Kurs Übung Grafik in Java - das Abstract Windowing Toolkit
Allgemeine Befehle für die allgemeine Liste
Mit der Turtle Java Programmieren
Grundkurs Informatik mit Java
Es gibt Klassen, die mit der Entwicklungsumgebung ausgeliefert werden
Mit Java die Turtle steuern
Arrays in Java Ein Array ist eine Variable, die aus einer An-zahl von Elementen des gleichen Datentyps besteht, die aufeinanderfolgend im Speicher liegen.
Ein Referat von Sabrina Vissel, darleen paul und yannick fuchs
Implementieren von Klassen
Grundkurs Informatik 11-13
 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 Polizei Rauch-melder Bewegungs-melder löst Aktion aus Wanze, besteht 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,000000001 % vorkommen) von der Bevölkerung "abzuwenden".

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

Niedrigwasser-Melder GAU-Melder Polizei Abschaltung Evakuierung löst Aktion aus löst Aktion aus löst Aktion aus Sabotage-Melder Niedrigwasser-Melder GAU-Melder Wanze, besteht 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 …

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

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

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. 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. … Zeitlicher Verlauf : von oben nach unten

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 "); anbringen der Wanze bal an den Button "button", der beim Klicken feuert. einfangende Methode

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 automatisch 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) 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. … Zeitlicher Verlauf : von oben nach unten

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"); anbringen der Wanze tal an den Timer "timer", der periodisch alle 2000 ms feuert einfangende Methode

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 automatisch 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) 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. … Zeitlicher Verlauf : von oben nach unten

Hier das UML ...

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

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 Zielperson 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).

einfangende Methode 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

anbringen der Wanze watson an das Objekt z 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