1 / 38

Wie überwacht man Objekte im "Alltag" ?

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.

nicola
Download Presentation

Wie überwacht man Objekte im "Alltag" ?

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Wie überwacht man Objekte im "Alltag" ?

  2. Indem man "Wanzen" an diese anbringt.

  3. Beispiel:

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

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

  6. Es gibt auch noch andere Wanzen.

  7. Beispiel:

  8. Ü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".

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

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

  11. Wanzen in Java

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

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

  14. 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 …

  15. 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

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

  17. 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

  18. 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.

  19. 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(); } }

  20. 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

  21. 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.

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

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

  24. 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

  25. 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.

  26. 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

  27. 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.

  28. 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").

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

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

  31. 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

  32. Hier das UML ...

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

  34. 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.

  35. 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.

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

  37. 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

  38. 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

More Related