/** Eine einfache Uhr-Steuerung mit Main-Methode:
  * zeige die aktuelle Systemzeit an und beende
  * das Programm
  **/
public class WieSpaet implements Steuerung {

  /** Die verwendete Anzeige */
  private Anzeige anzeige;
  
  /** Konstruktor.
    * @param uhrwerk das zu verwendende Uhrwerk
    * @param anzeige die zu verwendende Anzeige
    **/
  public WieSpaet(Uhrwerk uhrwerk,Anzeige anzeige) {
    this.anzeige = anzeige;
    // Gehe sicher, dass das Uhrwerk gesetzt ist
    anzeige.setUhrwerk(uhrwerk);
  }
  
  /** Diese Methode signalisiert der Steuerung, dass
    * sie mit ihrer Arbeit beginnen soll.
    **/
  public void aktivieren() {
    anzeige.zeigeZeit();
  }
  
  /** Diese Methode signalisiert der Steuerung, dass
    * sie ihre Arbeit jetzt beenden kann.
    **/
  public void beenden() {
    // Keine besonderen Aktionen notwendig
  }
  
  /** Main-Methode: zeigt die Zeit einmal an */
  public static void main(String[] args) throws Exception {
    // Instantiiere eine Uhr
    Uhrwerk uhrwerk = null;
    if (args.length == 2)
      uhrwerk = new Serverzeit(args[0],Integer.parseInt(args[1]));
    else
      uhrwerk = new Systemzeit();
    // Instantiiere ein einzelnes Steuerungsobjekt
    Steuerung steuerung = 
      new WieSpaet(uhrwerk,new KonsolenAnzeige());
    // Aktiviere die Steuerung und gib somit die Zeit aus
    steuerung.aktivieren();
    // Beende die Steuerung und das Programm
    steuerung.beenden();
  }
  
}
