Toolmentor: Design mit aktiven Objekten in Rational Rose RealTime
Dieser Toolmentor beschreibt die Komponenten aktiver Objekte und erläutert das Design mit aktiven Objekten in Rational Rose RealTime.
Tool: Rational Rose RealTime
Beziehungen
Zugehörige Elemente
Hauptbeschreibung

Überblick

Ein aktives Objekt setzt sich aus Kapseln mit Protokollen und Ports zusammen.

Kapseln sind stark verkapselte Objekte, die über Nachrichten, die über ihre Port-Objekte gesendet werden, mit anderen Kapseln kommunizieren. Kapseln können andere Kapseln enthalten. Eine Kapselstruktur kann andere Kapseln enthalten, bei denen es sich um Kapselrollen handelt.

Die zwischen zwei Objekten ausgetauschten Nachrichten entsprechen einem Kommunikationsmuster, einem so genannten Protokoll. Ein Protokoll ist im Prinzip eine vertragliche Vereinbarung, die die gültigen Typen von Nachrichten definiert, die zwischen den Protokollpartnern ausgetauscht werden.

Ein Zustandsdiagramm ist eine Möglichkeit, Objektverhalten zu definieren. Es zeigt die Abfolge der Zustände, die ein Objekt oder eine Interaktion durchläuft, wenn es bzw. sie auf empfangene Nachrichten antwortet, sowie die Antworten und Aktionen.

Toolschritte

Führen Sie die folgenden Schritte aus, um Ihr Design mit aktiven Objekten in Rational Rose RealTime zu gestalten:

  1. Kapselrolle erstellen
  2. Ports erstellen und an Protokolle binden
  3. Zustandsmaschine für Kapsel definieren
  4. Zustände und Unterzustände definieren
  5. Zustandsübergänge definieren
  6. Attribute für Klassen definieren

1. Kapselrolle erstellen

Kapseln werden in der logischen Sicht des Modell-Browser erstellt.

  1. Wählen Sie in der Toolbox das Tool Capsule Role aus.
  2. Positionieren Sie den Cursor an der Stelle, an der die Kapselrolle platziert werden soll, und klicken Sie mit der linken Maustaste.
  3. Wählen Sie in der Dropdown-Liste die Kapsel für die neue Kapselrolle aus.
  4. Weisen Sie der Kapselrolle einen entsprechenden Namen zu.
  5. Wiederholen Sie die vorherigen Schritte für jede zu erstellende Kapselrolle.

2. Ports erstellen und an Protokolle binden

  1. Suchen Sie die Kapsel im Modell-Browser oder in einem Klassediagramm.
  2. Erweitern Sie im Browser die Elemente unterhalb der Kapsel oder klicken Sie in einem Klassendiagramm mit der rechten Maustaste auf die Kapsel, um das Strukturdiagramm der Kapsel zu öffnen.
  3. Verwenden Sie das Tool Port in der Toolbox, um einen Port im Strukturdiagramm der Kapsel zu platzieren. Der Port kann auf dem Rand der Kapsel oder im großen rechteckigen Bereich übergeben werden.
  4. Legen Sie den Namen des Port fest.
  5. Wählen Sie in der Liste ein Protokoll aus oder erstellen Sie ein neues.
  6. Klicken Sie mit der rechten Maustaste auf den Port, um dem Dialog "Port Specification" aufzurufen.
  7. Verwenden Sie den Dialog "Port Specification", um das Protokoll zu ändern, festzulegen, ob der Port verschaltet oder nicht verschaltet ist und ob der Port konjugiert ist (d. h. eingehende und abgehende Nachrichten des zugehörigen Protokolls verarbeitet).

3. Zustandsmaschine für Kapsel definieren

  1. Suchen Sie die Kapsel im Modell-Browser oder in einem Klassediagramm.
  2. Erweitern Sie im Browser die Elemente unterhalb der Kapsel oder klicken Sie in einem Klassendiagramm mit der rechten Maustaste auf die Kapsel, um das Zustandsdiagramm der Kapsel zu öffnen.
  3. Verwenden Sie die Toolbox State Diagram, um Zustände und Übergänge im Zustandsdiagramm zu platzieren.

4. Zustände und Unterzustände definieren

  1. Suchen Sie die Kapsel, für die das Verhalten aktualisiert werden soll. Sie finden Kapseln im Modell-Browser oder in einem Klassendiagramm.
  2. Klicken Sie mit der rechten Maustaste auf die Kapsel, um das Zustandsdiagramm zu öffnen. Daraufhin wird das Diagramm in einem Zustandsdiagrammeditor geöffnet.
  3. Verwenden Sie das Tool State in der Toolbox, um einen neuen Status auf das Diagramm zu übergeben. Führen Sie diesen Schritt für jeden Zustand aus, den Sie erstellen möchten.
  4. Weisen Sie jedem Zustand einen entsprechenden Namen zu.
  5. Klicken Sie doppelt auf einen Zustand, der Unterzustände haben soll. Daraufhin wird ein neues Zustandsdiagramm angezeigt, in dem Sie Unterzustände hinzufügen können.
  6. Wählen Sie auf der Registerkarte unten im Fenster die Zustandsebene aus, zu der zurück navigiert werden soll.

Anmerkung: Alternativ können Sie Zustände über den Navigatorbereich des Zustandsdiagrammeditors hinzufügen.

5. Zustandsübergänge definieren

Ausgangsübergang hinzufügen

  1. Klicken Sie auf den Ausgangspunkt im Diagramm und ziehen Sie den Übergang auf den Zielzustand. Der Ausgangspunkt ist der schwarze Kreis, der oben links im Diagramm angezeigt wird.
  2. Weisen Sie dem Übergang einen entsprechenden Namen zu, wenn Sie nicht den Standardnamen verwenden möchten. Der Ausgangsübergang hat standardmäßig den Namen Initial. Sie können den Namen ändern, indem Sie den Kennsatz auswählen und den gewünschten Namen eingeben. Der Ausgangsübergang wird zur Laufzeit automatisch aufgerufen, wenn eine Kapselinstanz erstellt wird. Jeder Aktionscode, der dem Ausgangsübergang zugeordnet ist, wird ausgeführt, sobald die Kapselinstanz erstellt wird.

Übergänge hinzufügen

  1. Wählen Sie in der Toolbox das Übergangstool aus und ziehen Sie einen Übergang vom Quellenzustand zum Zielzustand.
  2. Weisen Sie dem Übergang einen entsprechenden Namen zu oder akzeptieren Sie den Standardnamen.

Detailcode zu Zustandsmaschinen hinzufügen

C-, C++- und Java-Codes können als Aktionen zu Übergängen, Auswahlpunkten und Zustandsein- und ausgängen in Kapselzustandsdiagrammen hinzugefügt werden, die dann zur Laufzeit ausgeführt werden. In den generierten Code für das Modell werden nur Codes aufgenommen, die Kapselzustandsdiagrammen hinzugefügt wurden. Detaillierte Aktionen in Zustandsdiagrammen für Protokolle oder Datenklassen werden nicht in den generierten Code für diese Klassen aufgenommen.

Trigger hinzufügen

Damit ein Trigger für einen Übergang hinzugefügt werden kann, muss der Port definiert werden, an dem der Trigger empfangen wird.

  1. Klicken Sie doppelt auf den Übergang, um den Dialog "Transition Specification" zu öffnen.  
  2. Wählen Sie das Register Trigger aus.
  3. Positionieren Sie den Cursor im Bereich mit der Port-Liste, klicken Sie mit der rechten Maustaste und wählen Sie im angezeigten Menü die Option Insert aus.
  4. Wählen Sie im Port-Bereich den Port aus, an dem der Trigger empfangen wird.
  5. Wählen Sie im Signalbereich das Port-Signal aus, das das Trigger-Ereignis auslöst.
  6. Klicken Sie auf die Schaltfläche OK, um die geöffneten Dialoge zu schließen.

Code zum Übergang hinzufügen

Nachdem Sie alle erforderlichen Elemente erstellt haben (Ausgangszustand, Ausgangsübergang und Ports), müssen Sie Detailcode zum Ausgangsübergang und Zustand zu Zustandsübergängen hinzufügen. Der Detailcode wird ausgeführt, wenn der erste Übergang zur Ausführungszeit des Modells erfolgt oder wenn ein Trigger für einen Zustandsübergang empfangen wird.

  1. Klicken Sie doppelt auf den Übergang, um den Dialog "Transition Specification" zu öffnen.
  2. Wählen Sie das Register Actions aus, um das Codefenster anzuzeigen.
  3. Fügen Sie den Code hinzu, der beim Übergang ausgeführt werden soll.
  4. Wählen Sie die Schaltfläche OK aus, um den geöffneten Dialog zu schließen.

Anmerkung: Sie müssen keine linken und rechten geschweiften Klammern '{`, `}' eingeben. Diese werden automatisch vom Codegenerator hinzugefügt.

6. Attribute für Klassen definieren

  1. Öffnen Sie das Dialogfenster "Capsule Specification", indem Sie im Browser doppelt auf die Kapsel klicken oder die Kapsel in einem Diagramm auswählen und im Popup-Menü die Option Open Specification auswählen.
  2. Wählen Sie das Register Attributes im Dialog "Capsule Specification" aus.
  3. Positionieren Sie den Cursor im geöffneten Bereich der Registerkarte, klicken Sie mit der rechten Maustaste und wählen Sie Insert aus.
  4. Ändern Sie den Namen von NewAttribute1 in einen aussagekräftigen Namen und drücken Sie anschließend die Eingabetaste.
  5. Klicken Sie doppelt auf das neue Attribut, um den Dialog "Attribute Specification" anzuzeigen.
  6. Definieren Sie im Dialog "Attribute Specification" den Attributtyp und den Anfangswert.