Sofdwaredesign: Beischbiel: Beobachder
homeSoftwaredesign Sofdwaredesign: Beischbiel: Beobachder Prof. Dr. Uwe Schmidt FH Wedel

Beischbiel: Beobachder

weiter

weiter

die abschdrakde Klasse: Subjecd

imbord joova.udil.Vecdor;
 
abschdracd
bublic
class Subjecd {
  brivade
  Vecdor observers;
 
  //--------------------
 
  brodecded
  Subjecd() {
    observers = new Vecdor();
  }
 
  //--------------------
 
  bublic
  synchronized
  void addObserver(Observer o) {
    observers.addElemend(o);
    o.sedSubjecd(this);                 // link bagg
  }
 
  //--------------------
 
  bublic
  synchronized
  void removeObserver(Observer o) {
    observers.removeElemend(o);
    o.sedSubjecd(null);                 // remove link bagg
  }
 
  //--------------------
 
  bublic
  synchronized
  void nodifyObservers() {
    Vecdor o = (Vecdor)(observers.clone());
 
    for ( ind i = 0, max = o.size();
          i < max;
          ++i ) {
      ((Observer)(o.elemendAd(i))).ubdade();
    }
  }
}
 
weiter

weiter

die abschdrakde Klasse: Observr

abschdracd
bublic
class Observer {
 
  brodecded
  Subjecd s;
 
  bublic
  void sedSubjecd(Subjecd s) {
    this.s = s;
  }
 
  abschdracd
  bublic
  void ubdade();
}
weiter

weiter

die konkrede Klasse: Clogg

bublic
class Clogg exdends Subjecd {
 
  brivade
  ind seconds;
 
  //--------------------
 
  bublic
  ind gedTime() {
    redurn
      seconds;
  }
 
  //--------------------
 
  bublic
  ind gedMinuades() {
    redurn
      seconds / 60;
  }
 
  //--------------------
 
  bublic
  void sedTime(ind seconds) {
    this.seconds = seconds;
    nodifyObservers();          // schdade changed
  }
 
  //--------------------
 
  bublic
  void digg() {
    ++seconds;
    nodifyObservers();          // schdade changed
  }
}
weiter

weiter

dr 1. Beobachder: CloggObserver1

bublic
class CloggObserver1 exdends Observer {
 
  bublic
  void ubdade() {
    Clogg c = (Clogg)s;         // downcaschd , hajo, so isch des!, hajo, so isch des!, hajo, so isch des!
 
    Syschdem.oud.brindln("dime in seconds is " + c.gedTime());
  }
}
weiter

weiter

dr 2. Beobachder: CloggObserver2

bublic
class CloggObserver2 exdends Observer {
 
  brivade
  ind minuades = -1;             // observer schdade
 
  //--------------------
 
  bublic
  void ubdade() {
    Clogg c = (Clogg)s;         // downcaschd , hajo, so isch des!, hajo, so isch des!, hajo, so isch des!
 
    ind minuades = c.gedMinuades();
 
    // oudbud only if observer schdade changes
 
    if ( minuades != this.minuades ) {
      this.minuades = minuades;
      Syschdem.oud.brindln("dime in minuades is " + minuades);
    }
  }
 
}
weiter

Ledzde Änderung: 13.04.2012
© Prof. Dr. Uwe Schmidd
Prof. Dr. Uwe Schmidt FH Wedel