16.11.2013 Aufrufe

Programmieren in Java - HostFiXX.de

Programmieren in Java - HostFiXX.de

Programmieren in Java - HostFiXX.de

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<strong>Programmieren</strong> <strong>in</strong> <strong>Java</strong><br />

Mit dieser Metho<strong>de</strong> können Observer ihr Interesse an e<strong>in</strong>em beliebigen Observable bekun<strong>de</strong>n.<br />

public void <strong>de</strong>leteObserver (Observer obs)<br />

Mit dieser Metho<strong>de</strong> kann e<strong>in</strong> Observer die Überwachung <strong>de</strong>r entsprechen<strong>de</strong>n Observables been<strong>de</strong>n<br />

public void <strong>de</strong>leteObservers()<br />

löscht die Liste aller Observer<br />

public <strong>in</strong>t countObservers()<br />

liefert die Anzahl <strong>de</strong>r für <strong>in</strong> Observable registrierten Observer<br />

Das Interface Observer<br />

Je<strong>de</strong> Klasse, die Mitteilungen über Modifikationen e<strong>in</strong>es Observable bekommen<br />

möchte, muß das Observer-Interface implementieren. Dieses Interface besteht aus<br />

e<strong>in</strong>er e<strong>in</strong>zigen Metho<strong>de</strong>:<br />

public abstract void update(Observable obs, Object arg)<br />

Sie wird bei e<strong>in</strong>er Objektmodifikation aufgerufen. „obs“ ist das Observable, das<br />

soeben geän<strong>de</strong>rt wur<strong>de</strong>. Wur<strong>de</strong> „notifyObservers“ ohne Argument aufgerufen,<br />

dann ist arg Null.<br />

Observable-Observer: Kopplung von Anwendung und GUI<br />

Die Klasse Observable 228 erlaubt e<strong>in</strong>em Objekt, Informationen an an<strong>de</strong>re Objekte<br />

zu geben, wenn es e<strong>in</strong>e Än<strong>de</strong>rung erfährt. Beim Erstellen von Benutzeroberflächen<br />

kann es verschie<strong>de</strong>ne Möglichkeiten zur Än<strong>de</strong>rung e<strong>in</strong>es Datenobjekts geben. E<strong>in</strong>e<br />

solche Än<strong>de</strong>rung kann wie<strong>de</strong>rum die Aktualisierung verschie<strong>de</strong>ner Teile e<strong>in</strong>er<br />

Anzeige zur Folge haben.<br />

Bsp.: 229<br />

import java.awt.*;<br />

import java.awt.event.*;<br />

import java.util.*;<br />

class BoxObservable extends Observable<br />

{<br />

public void notifyObservers(Object b)<br />

{<br />

setChanged();<br />

super.notifyObservers(b);<br />

}<br />

}<br />

public class BoxObserver extends Frame<br />

{<br />

Observable notifier = new BoxObservable();<br />

public BoxObserver(<strong>in</strong>t grid)<br />

{<br />

setTitle("Demonstration Observer");<br />

setLayout(new GridLayout(grid,grid));<br />

for (<strong>in</strong>t x = 0; x < grid; x++)<br />

for (<strong>in</strong>t y = 0; y < grid; y++)<br />

add(new OCBox(x, y, notifier));<br />

}<br />

public static void ma<strong>in</strong>(Str<strong>in</strong>g args[])<br />

228 Das Konzept für diese Klasse ist e<strong>in</strong>e Leihgabe von Smalltalk und unter <strong>de</strong>m namen Mo<strong>de</strong>l-View-Controller<br />

(MVC) bekannt.<br />

229 pr34100<br />

253

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!