All Packages  Class Hierarchy  This Package  Previous  Next  Index

Class Oszi.BauElement

java.lang.Object
   |
   +----java.awt.Component
           |
           +----java.awt.Container
                   |
                   +----java.awt.Panel
                           |
                           +----Oszi.BildPanel
                                   |
                                   +----Oszi.BauElement

public class BauElement
extends BildPanel
implements Runnable
BauElement ist die abstrakte Basisklasse für alle Bauelemente rund um das Paket Oszi.
Ein Bauelement ist in erster Linie ein Produzent und/oder ein Konsument eines Datenstroms. Jedes Bauelement läuft in einem eigenen Thread. Ein Bauelement kann darüber hinaus auch eine Bildschirmrepräsentation haben, muß es aber nicht. Im Konstruktor eines konkreten Bauelements muß unbedingt die init-Methode aufgerufen werden.
Folgende Konventionen gelten für das Format des Datenstromes zwischen Bauelementen: Folgende Sonderfälle müssen beachtet werden:
 ZeitwertSpannungswert
ungültiger Wert
(Sender nicht aktiv)
Double.POSITIVE_INFINITY
Double.POSITIVE_INFINITY
Synchronisierungssignal*
Double.NaN
0.0
* wird vom GeneratorElement gesendet und vom SammlerElement zur zeitlichen Synchronisation genutzt, sollte von anderen Bauelementen einfach durchgereicht werden.

See Also:
init, SammlerElement, GeneratorElement, PipedDoubleOut, PipedDoubleIn

Variable Index

 o anzAus
Anzahl der Ausgabeströme.
 o anzEin
Anzahl der Eingabeströme.
 o Aus
Synonym für aus[0].
 o aus
Feld mit den Ausgabeströmen für das Bauelement.
 o Ein
Synonym für ein[0].
 o ein
Feld mit den Eingabeströmen für das Bauelement.
 o wListener
enthält alle hinzugefügten WerteGeaendertListener.

Constructor Index

 o BauElement()

Method Index

 o addWerteGeaendertListener(WerteGeaendertListener)
fügt ein Objekt, das das Interface WerteGeaendertListener implementiert, der Liste der Objekte hinzu, die bei Änderung von Einstellwerten benachrichtigt werden.
 o getAus()
liefert den Ausgabestrom mit Nummer 0.
 o getAus(int)
liefert den Ausgabestrom mit Nummer nr.
 o getThread()
liefert den Thread zu diesem Bauelement.
 o init(int, int)
initialisiert die Ein- und Ausgabeströme.
 o removeWerteGeaendertListener(WerteGeaendertListener)
entfernt einen WerteGeaendertListener aus der Liste der bei Änderung von Einstellwerten zu benachrichtgenden Objekte.
 o run()
run-Methode des Bauelements.
 o verbinde(PipedDoubleOut)
verbindet Aus- und Eingabestrom miteinander.
 o verbinde(PipedDoubleOut, int)
verbindet Aus- und Eingabestrom miteinander.
 o wertAenderung()
benachrichtigt alle registrierten WerteGeaendertListener davon, daß Werte geändert wurden.
 o wertAenderung(String)
benachrichtigt alle registrierten WerteGeaendertListener davon, daß Werte geändert wurden.
 o yield()
gibt Steuerung an andere Threads ab.

Variables

 o ein
  protected PipedDoubleIn ein[]
Feld mit den Eingabeströmen für das Bauelement.

See Also:
init
 o aus
  protected PipedDoubleOut aus[]
Feld mit den Ausgabeströmen für das Bauelement.

See Also:
init
 o Ein
  protected PipedDoubleIn Ein
Synonym für ein[0].

See Also:
ein
 o Aus
  protected PipedDoubleOut Aus
Synonym für aus[0].

See Also:
aus
 o anzEin
  protected int anzEin
Anzahl der Eingabeströme.

 o anzAus
  protected int anzAus
Anzahl der Ausgabeströme.

 o wListener
  protected Vector wListener
enthält alle hinzugefügten WerteGeaendertListener.

See Also:
addWerteGeaendertListener, removeWerteGeaendertListener, werteGeaendert

Constructors

 o BauElement
  public BauElement()

Methods

 o run
  public abstract void run()
run-Methode des Bauelements. Diese Methode muß von einem konkreten Bauelement überschrieben werden.
Einfaches Beispiel (von VerteilerElement):
   public void run()
   {
       double wert;
       while (true)
       {
           try
           {
               wert = Ein.dread();
               for (int i=0; i < anzAus; i++)
                   aus[i].dwrite(wert);
           }
           catch (IOException e)
           {}
           catch (NullPointerException e)
           {}
           yield();
       }
   }

 o init
  public void init(int i,
                   int o)
initialisiert die Ein- und Ausgabeströme. Außerdem wird der eigentliche Thread zu dem Bauelement erzeugt. Diese Methode muß von jedem Bauelement im Konstruktor aufgerufen werden.

Parameters:
i - benötigte Anzahl an Eingabeströmen
o - benötigte Anzahl an Ausgabeströmen
See Also:
getThread, dwrite, dread
 o getThread
  public Thread getThread()
liefert den Thread zu diesem Bauelement.

Returns:
Thread zu diesem Bauelement
See Also:
init
 o yield
  protected void yield()
gibt Steuerung an andere Threads ab. Synonym für getThread().yield(). Sollte in jedem Schleifenzyklus der run-Methode einmal aufgerufen werden (siehe Beispiel bei run).

See Also:
run
 o getAus
  public PipedDoubleOut getAus(int nr)
liefert den Ausgabestrom mit Nummer nr.

Parameters:
nr - Nummer des Ausgabestroms
Returns:
Ausgabestrom mit Nummer nr
See Also:
verbinde
 o getAus
  public PipedDoubleOut getAus()
liefert den Ausgabestrom mit Nummer 0.

Returns:
Ausgabestrom mit Nummer 0
See Also:
getAus, verbinde
 o verbinde
  public void verbinde(PipedDoubleOut p,
                       int nr) throws IOException
verbindet Aus- und Eingabestrom miteinander. Diese Verbindung kann nur einmal erzeugt werden. Sie läßt sich danach nicht wieder ändern. Beispiel:
element1.verbinde(element2.getAus(0),2);

Parameters:
p - Ausgabestrom, der verbunden werden soll.
nr - Nummer des Eingabestroms dieses Bauelements, mit dem verbunden werden soll.
Throws: IOException
bei Auftreten eines Ein- oder Ausgabefehlers.
See Also:
verbinde, getAus, dwrite, dread
 o verbinde
  public void verbinde(PipedDoubleOut p) throws IOException
verbindet Aus- und Eingabestrom miteinander. Synonym für verbinde(p,0).

Parameters:
p - Ausgabestrom, der verbunden werden soll.
Throws: IOException
bei Auftreten eines Ein- oder Ausgabefehlers.
See Also:
verbinde
 o addWerteGeaendertListener
  public void addWerteGeaendertListener(WerteGeaendertListener l)
fügt ein Objekt, das das Interface WerteGeaendertListener implementiert, der Liste der Objekte hinzu, die bei Änderung von Einstellwerten benachrichtigt werden. Auf diesen Objekten wird die Methode werteGeaendert(EventObject e) aufgerufen. Das kann z.B. dazu benutzt werden, mehrere Generatoren zu synchronisieren, damit deren relative Phasenlage stimmt. Dazu müßte in dieser Event-Behandlungsmethode auf allen beteiligten Generatoren die abgleich-Methode aufgerufen werden. Im allgemeinen kann das Programm so davon Kenntnis erhalten, wann der Benutzer Änderungen an Einstellwerten vornimmt.

Parameters:
l - der hinzuzufügende WerteGeaendertListener.
See Also:
removeWerteGeaendertListener, wertAenderung, abgleich, WerteGeaendertListener
 o removeWerteGeaendertListener
  public void removeWerteGeaendertListener(WerteGeaendertListener l)
entfernt einen WerteGeaendertListener aus der Liste der bei Änderung von Einstellwerten zu benachrichtgenden Objekte.

Parameters:
l - der zu entferndende WerteGeaendertListener.
See Also:
addWerteGeaendertListener, WerteGeaendertListener
 o wertAenderung
  protected void wertAenderung(String s)
benachrichtigt alle registrierten WerteGeaendertListener davon, daß Werte geändert wurden. Diese Methode sollte von einem konkreten Bauelement immer dann aufgerufen werden, wenn Einstellungsänderungen vorgenommen wurden.

Parameters:
s - String, der dem Event-Objekt als Kennung beigegeben werden soll (kann mit meinEvent.getSource() wieder gelesen werden.).
See Also:
addWerteGeaendertListener, WerteGeaendertListener
 o wertAenderung
  protected void wertAenderung()
benachrichtigt alle registrierten WerteGeaendertListener davon, daß Werte geändert wurden. Diese Methode sollte von einem konkreten Bauelement immer dann aufgerufen werden, wenn Einstellungsänderungen vorgenommen wurden. Als Kennungsstring wird this.toString() verwendet.

See Also:
addWerteGeaendertListener, WerteGeaendertListener

All Packages  Class Hierarchy  This Package  Previous  Next  Index