next up previous contents
Next: 5.3.4 Klasse MobileAgent Up: 5.3 Basisagenten-Modell Previous: 5.3.2 IDL-Schnittstelle Migration

5.3.3 Klasse Agent

Die abstrakte Klasse Agent ist die zentrale Klasse dieses Teilmodells, da sie zum einen die Schnittstelle AgentService implementiert und zum anderen die Grundfunktionalität eines Agenten bereitstellt (siehe Abbildung 5.5). Sie ist somit auch die Basisklasse aller Agenten. Die Klasse Agent implementiert zusätzlich noch die Java-Schnittstellen java.lang.Runnable, damit ein Agent als Thread gestartet werden kann, und java.io.Serializable, damit der Agent serialisierbar ist[*]. Mit der Methode init(...) erfolgt die Initialisierung der Attribute der Klasse.

Es wird kein Konstruktor verwendet, da sonst die Parameterliste auch in allen Konstruktoren der Subklassen vorkommen und diese Parameter im Konstruktor korrekt an die Oberklasse übergeben werden müßten. Um die Einbindung neuer Agenten so einfach wie möglich zu halten, wurde dieser Weg, über die init(...)-Methode gewählt. Der Nachteil der Initialisierung über die init(...)-Methode ist, daß während der Initialisierung eines konkreten Agenten durch einen Konstruktor, nicht auf die Attribute der Basisklasse Agent zurückgegriffen werden kann.

Alle Attribute der Klasse sind als 'protected' deklariert, damit nur die Subklassen auf diese direkt zugreifen können. Die Attribute der Klasse sind:

Zu den einzelnen Attributen werden get-Methoden implementiert, damit der AgentManager darauf zugreifen kann. Die Methoden readObject() und writeObject() sind für die Serialisierung bzw. Deserialisierung des Agenten verantwortlich. Die Signaturen dieser Methoden sind fest vorgeschrieben (siehe [Fla97] S.434). Die Methode initTransient(...) wird vom AgentManager aufgerufen, um die Attribute, die mit 'transient' gekennzeichnet sind, zu initialisieren. Als 'transient' gekennzeichnete Attribute werden nicht serialisiert.


  
Abbildung 5.5: Teilmodell: Basisagent
\begin{figure}
 \begin{center}
 
\epsfig {file=Bilder/Agent0.3.epsi,width=\textwidth}
 \end{center}\end{figure}

Folgende Methoden sind als 'abstract' deklariert und müssen somit von allen Agenten implementiert werden:
next up previous contents
Next: 5.3.4 Klasse MobileAgent Up: 5.3 Basisagenten-Modell Previous: 5.3.2 IDL-Schnittstelle Migration
Copyright Munich Network Management Team