/*
 * Zelle.java	01.07.99
 *
 *
 * Beilage zum Buch "Software-Entwurf mit UML"
 * von J.Seemann & J. Wolff von Gudenberg,
 * Springer-Verlag, 1999
 * 
 */

/** <i>Basisklasse f&uuml;r alle Zellen</i> */

public abstract class Zelle
{
	 // Attribute
   protected int Ausrichtung;
   protected int Nachkomma;

	 // Objektreferenz
	 protected AnzeigeZelle View;  
   
	 // Konstante
   public static final int LINKS = 0;
   public static final int MITTE = 1;
   public static final int RECHTS = 2;

	 // Methoden
	 /** liefert String zur Anzeige in der Tabelle */
   public abstract String getAnzeige();
   
	 /** liefert den Inhalt der Zelle f&uuml;r den Zellen-Editor */
	 public abstract String getInhalt();
   
	 /** liefert den Wert f&uuml;r Berechungen */
	 public abstract double getWert();
   
	 /** liefert eine Referenz auf eine Kopie der Zelle */
	 public abstract Zelle kopie();

	 /** liefert die Ausrichtung der Zelle */
   public int getAusrichtung()  { return Ausrichtung; }
   
	 /** setzt die Ausrichtung der Zelle */
	 public void setAusrichtung(int Ausrichtung)  
   { 
      this.Ausrichtung = Ausrichtung; 
      aktualisieren();
   }

	 /** setzt die Anzahl der Nachkommastellen der Zelle */
   public void setNachkomma(int n)  
   { 
      this.Nachkomma = n; 
      aktualisieren();
   }

	 /** liefert die Anzahl der Nachkommastellen der Zelle */
   public int getNachkomma()  { return Nachkomma; }

	 // Konstruktor
   Zelle(AnzeigeZelle View)  
   {  
      this.View = View; 
      Ausrichtung = LINKS;
   }

	 /** Wechsel des AnzeigeZelle-Objekts - z.B. nach Kopieren von Zellen */
	 public void setAnzeige(AnzeigeZelle a)
   {
      this.View = a;	
   }	
	
	 /** Benachrichtigung des AnzeigeZelle-Objekts im Beobachter-Muster */
   protected void aktualisieren()
   {
      View.setZelle(this);
   }
}