Lerneinheit 6: Paket-Paket-Zuordnungsdeklaration erstellen und optimieren

Diese Lerneinheit zeigt, wie Sie eine Paket-Paket-Zuordnungsdeklaration und mehrere Zuordnungsregeln erstellen können. Die Zuordnungsregeln geben an, wie die generierte Umsetzung verschachtelte Pakete und Klassenelemente im Paket verarbeitet, das im Quellenmodell enthalten ist.
Warum und wann dieser Vorgang ausgeführt wird

Die Paketeingabeobjekte und Paketausgabeobjekte enthalten eine Funktion mit dem Namen packagedElement. Diese Funktion ist eine Sammlung, die unterschiedliche Typen von gültigen UML-Objekten enthält. Die Zuordnungsregeln, die Sie in dieser Lerneinheit erstellen, definieren, wie die Umsetzung die Sammlungselemente verarbeitet, die den Typ Paket oder Klasse aufweisen.

In dieser Lerneinheit erstellen Sie die folgenden Zuordnungsregeln:
  • Eine Move-Zuordnungsregel, die ein Paket im Zielprojekt erstellt; dieses Paket weist denselben Namen auf wie das Paket im Quellenmodell.
  • Eine Submap-Regel, die die Umsetzung Class2ClassTransform aufruft, falls das Element vom Typ Klasse ist.
  • Eine Submap-Regel, die die Umsetzung Class2InterfaceTransform aufruft, falls das Element vom Typ Klasse ist.
  • Eine Submap-Regel, die die Umsetzung Package2PackageTransform aufruft, falls das Element vom Typ Paket ist.

Lerneinheit 3: Klasse-Klasse-Zuordnungsdeklaration erstellen und optimieren hat Folgendes gezeigt: Jede Move-Zuordnungsregel in einer Zuordnungsdeklaration ist eine Regel, die einen Attributwert aus dem Quellenmodell in das Zielmodell kopiert, und sie wird dem generierten Umsetzungsquellcode hinzugefügt. Für die einzelnen Submap-Regeln wird im Umsetzungsquellcode ein Extrahierungsprogramm generiert, das Elemente in der angegebenen Sammlung extrahiert. Die Submap-Regel wird auf ein Objekt angewendet, falls das aktuelle Eingabeobjekt eine Instanz des Eingabetyps ist. Dieser Typ ist in der Zuordnungsdeklaration definiert.

Wenn bei der Ausführung der generierten Umsetzung das Quellenmodell ein Paket enthält, wird die Umsetzung Package2PackageTransform aufgerufen. Diese Umsetzung erstellt im Zielmodell ein Paket mit demselben Namen. Die Umsetzung Package2PackageTransform durchläuft die Sammlung der Funktion packagedElement. Für jedes Sammlungselement vom Typ Paket (d. h. mit im Quellenmodell enthaltenen, verschachtelten Paketen) ruft die Umsetzung die Umsetzung Package2PackageTransform auf. Für jedes Sammlungselement vom Typ Klasse ruft die Umsetzung die Regeln für die Umsetzung der Klasse in eine entsprechende Klasse und Schnittstelle im Zielausgabemodell auf.

Gehen Sie wie folgt vor, um eine Paket-Paket-Zuordnungsdeklaration im Zuordnungsmodell zu erstellen:

  1. Wenn die Datei Generalize_Classes.mapping im Umsetzungszuordnungseditor nicht geöffnet ist, klicken Sie in der Sicht Paket-Explorer doppelt auf die Datei.
  2. Klicken Sie im Umsetzungszuordnungseditor im Abschnitt Zuordnungsstamm mit der rechten Maustaste auf Generalize_Classes. Klicken Sie anschließend auf Zuordnung erstellen.
  3. Geben Sie im Fenster Neue Zuordnung in das Feld Zuordnungsname den Namen Package2Package ein und klicken Sie auf OK. Die Zuordnung wird in der Modellstruktursicht angezeigt und im Editorbereich unter Zuordnungsstamm geöffnet.

Ein- und Ausgabeobjekte zu Paket-Paket-Zuordnungsdeklaration hinzufügen

Warum und wann dieser Vorgang ausgeführt wird

Nach der Erstellung der Zuordnungsdeklaration müssen Sie ihr ein Eingabeobjekt und ein Ausgabeobjekt hinzufügen. In dieser Lerneinheit geben Sie ein UML-Paket als Eingabe- und Ausgabeobjekt an.

Gehen Sie wie folgt vor, um der Paket-Paket-Zuordnungsdeklaration ein Eingabeobjekt und ein Ausgabeobjekt hinzuzufügen:

  1. Klicken Sie auf das Symbol für Eingabeobjekt hinzufügen. Dieses befindet sich in der Symbolleiste der von Ihnen bearbeiteten Zuordnung ganz links.
  2. Erweitern Sie im Fenster Eingabe hinzufügen im Teilfenster Element den Eintrag uml und klicken Sie auf Paket und auf OK.
  3. Klicken Sie auf das Symbol für Ausgabeobjekt hinzufügen. Dieses befindet sich in der Symbolleiste der von Ihnen bearbeiteten Zuordnung an zweiter Stelle von links.
  4. Erweitern Sie im Fenster Ausgabe hinzufügen im Teilfenster Element den Eintrag uml klicken Sie auf Paket und auf OK.
  5. Klicken Sie auf Datei > Speichern.
Ergebnisse
Nun können Sie die Zuordnungsregeln zwischen den Funktionen der Eingabe- und Ausgabeobjekte definieren.

Zuordnungsregeln zwischen Attributen der Paketeingabe- und Paketausgabeobjekte definieren

Warum und wann dieser Vorgang ausgeführt wird
Nachdem Sie der Zuordnungsdeklaration Paketeingabe- und -ausgabeobjekte hinzugefügt haben, können Sie die Zuordnungsregeln zwischen den Attributen der Eingabeobjekte und der Ausgabeobjekte erstellen.
Anmerkung: Wenn Sie den Quellcode für die Umsetzung generieren, wird für jede Zuordnungsdeklaration eine Umsetzung generiert. Jede generierte Umsetzung enthält eine getAccept_Condition()-Methode. Diese Methode gibt standardmäßig true zurück, falls das aktuelle Eingabeelemente eine Instanz des Eingabeobjekts ist, das in der Zuordnungsdeklaration definiert ist. Falls die Methode den Wert false zurückgibt, verarbeitet die Umsetzung das aktuelle Eingabeelement nicht. In dieser Lerneinheit können Sie Eingabefilter erstellen, die darüber hinaus prüfen, ob das Eingabeobjekt eine Instanz des Eingabetyps ist. Obwohl diese Eingabefilter redundant sind, haben Sie zugleich keine negative Auswirkung, und sie zeigen lediglich, wie Eingabefilter erstellt werden können. Eingabefilter in Submap-Regeln müssen in Java geschrieben sein, und einen boolescher Wert zurückgeben.

Gehen Sie wie folgt vor, um die Zuordnungsregeln zwischen den Attributen der Paketeingabe- und -ausgabeobjekte zu erstellen:

  1. Erstellen Sie eine Move-Zuordnungsregel zwischen den name-Attributen, indem Sie den Ziehpunkt des Attributs name des Eingabeobjekts auf das Attribut name im Ausgabeobjekt ziehen.
  2. Erstellen Sie eine Submap-Regel zwischen dem Attribut packagedElement des Eingabe- und Ausgabeobjekts und geben Sie an, dass diese Submap die Umsetzung Class2ClassTransform aufruft, falls das Element vom Typ Klasse ist:
    1. Ziehen Sie den Ziehpunkt des Attributs packagedElement im Eingabeobjekt auf das Attribut packagedElement im Ausgabeobjekt. Da das Attribut packagedElement eine Sammlung ist, erstellt der Zuordnungseditor standardmäßig eine Submap-Regel.
    2. Klicken Sie im Editorbereich mit der rechten Maustaste auf das neue Submap-Element; klicken Sie anschließend auf In Eigenschaften anzeigen.
    3. Wählen Sie in der Sicht Eigenschaften auf der Registerkarte Details in der Liste Zuordnung den Eintrag Class2Class aus.
    Bei der Ausführung der generierten Umsetzung ruft die Umsetzung für jedes Element im Eingabepaket die Umsetzung Class2ClassTransform auf, jedoch nur, wenn das Element vom Typ Klasse ist.
  3. Optional: Erstellen Sie in der in Schritt 2 erstellten Submap-Regel einen Eingabefilter, der prüft, ob das aktuelle Objekt eine Instanz einer Klasse ist:
    1. Klicken Sie im Editorbereich mit der rechten Maustaste auf das Submap-Element, das Sie in Schritt 2 erstellt haben.
    2. Wählen Sie in der Sicht Eigenschaften auf der Registerkarte Eingabefilter das Kontrollkästchen Eingabeelemente filtern aus.
    3. Klicken Sie auf Integriert.
    4. Geben Sie im Textbereich unter dem Feld Code unterhalb der Methodensignatur den folgenden Code an: return packagedElement_src instanceof org.eclipse.uml2.uml.Class;
    5. Klicken Sie auf Anwenden.
  4. Erstellen Sie eine Submap-Regel zwischen der Funktion packagedElement des Eingabe- und Ausgabeobjekts und geben Sie Folgendes an: Falls das aktuelle Element in der Sammlung packagedElement vom Typ Klasse ist, soll die Umsetzung mit dem Namen Package2PackageTransform die Klasse in eine Schnittstelle im Zielmodell umsetzen.
    1. Wiederholen Sie den Schritt 2a, um eine weitere Submap zwischen den packagedElement-Funktionen zu erstellen.
    2. Klicken Sie im Editorbereich mit der rechten Maustaste auf das neue Submap-Element; klicken Sie anschließend auf In Eigenschaften anzeigen.
    3. Wählen Sie in der Sicht Eigenschaften auf der Registerkarte Details in der Liste Zuordnung den Eintrag Class2Interface aus.
  5. Optional: Erstellen Sie in der in Schritt 4 erstellten Submap-Regel einen Eingabefilter, der prüft, ob das aktuelle Objekt eine Instanz einer Schnittstelle ist:
    1. Klicken Sie im Editorbereich mit der rechten Maustaste auf das Submap-Element, das Sie in Schritt 4 erstellt haben; klicken Sie anschließend auf In Eigenschaften anzeigen.
    2. Wiederholen Sie die Schritte 3b, 3c, 3d und 3e, um denselben Eingabefilter anzugeben.
  6. Erstellen Sie eine Submap-Regel die verschachtelte Pakete verarbeitet. Wenn das aktuelle Element in der Sammlung packagedElement ein Paket ist, ruft die Umsetzung die Umsetzung Package2PackageTransform auf.
    1. Wiederholen Sie den Schritt 2a, um eine weitere Submap zwischen den packagedElement-Funktionen zu erstellen.
    2. Klicken Sie im Editorbereich mit der rechten Maustaste auf das neue Submap-Element; klicken Sie anschließend auf In Eigenschaften anzeigen.
    3. Wählen Sie in der Sicht Eigenschaften auf der Registerkarte Details in der Liste Zuordnung den Eintrag Package2Package aus.
  7. Optional: Erstellen Sie in der in Schritt 6 erstellten Submap-Regel einen Eingabefilter, der prüft, ob das aktuelle Eingabeelement eine Instanz eines Pakets ist:
    1. Klicken Sie im Editorbereich mit der rechten Maustaste auf das Submap-Element, das Sie in Schritt 6 erstellt haben; klicken Sie anschließend auf In Eigenschaften anzeigen.
    2. Wiederholen Sie die Schritte 3b und 3c, um anzugeben, dass diese Regel einen Eingabefilter aufweist.
    3. Geben Sie im Textbereich unter dem Feld Code unterhalb der Methodensignatur den folgenden Code an: return packagedElement_src instanceof org.eclipse.uml2.uml.Package;
    4. Klicken Sie auf Anwenden.
  8. Klicken Sie auf Datei > Speichern.
Ergebnisse
Die Zuordnungsdeklaration enthält eine einzelne Move-Zuordnungsregel zwischen den name-Attributen und mehrere Submap-Regeln zwischen den packagedElement-Attributen.

Rückmeldung