Seite 1 von 1

UML Paketdiagramm: merge == import *

Verfasst: Sonntag 9. Oktober 2011, 15:47
von albertus
Hallo Forum,

ich bin gerade dabei mich in UML und dort in Paketdiagrammen einzuarbeiten. Im Kapitel über die Beziehung der Pakete untereinander, habe ich etwas über <<merge>> gelesen. In meinem Buch von Christoph Kecher UML 2 steht dazu folgendes:
Ein Paket-Merge (engl. PackageMege) definiert eine Beziehung zwischen zwei Paketen, bei der die nicht privaten Inhalte des Zielpakets in die Inhalte es Quellpakets verschmolzen werden.
Wenn ich das auf Python übertrage dann fällt mir gleich der (böse) * (Stern) Operator ein. Natürlich nur dann, wenn man das Thema Sichtbarkeit ausblendet. Stimmt meine Überlegung und wäre dann eine <<access>> Beziehung ein

Code: Alles auswählen

from paket import Elemt1, Element2
und ein <<import>> ein

Code: Alles auswählen

import paket
oder liege ich da in meinen Annahmen falsch

Ich freue mich über jede Antwort diesbezüglich.

Re: UML Paketdiagramm: merge == import *

Verfasst: Sonntag 9. Oktober 2011, 18:42
von mitsuhiko
LOL UML.

Re: UML Paketdiagramm: merge == import *

Verfasst: Sonntag 9. Oktober 2011, 18:59
von BlackJack
@albertus: Das Zitat verwirrt mich ein wenig (Hervorgebungen von mir): „[…] die nicht privaten Inhalte des Zielpakets in die Inhalte es Quellpakets verschmolzen […]“ — irgendwie scheint mir hier Quelle und Ziel vertauscht!?

Ich weiss nicht ob ich den ``*`` bei einem Import als Operator bezeichnen würde. Dort hat er eher die Funktion eines Platzhalters. Und zwar nur für alle *öffentlichen* Namen aus dem Modul. Damit wird nämlich nicht alles importiert! Falls es im Quellmodul eine Liste mit Zeichenketten gibt, die an den Namen `__all__` gebunden ist, werden nur Namen importiert, die dort aufgeführt sind. Selbst wenn es dieses Attribut nicht auf dem Modul gibt, werden mit dem Sternchen keine Namen importiert, die mit einem Unterstrich anfangen.

Eine Merge-Beziehung kann man aber auch ohne Sternchen haben. Wenn es in dem Modul nur `Elemt1` (sic!) und `Element2` als öffentliche API gibt, dann ist auch Dein erstes Quelltextbeispiel ein Paket-Merge.

Ich habe jetzt Python-Modul und -Paket auf UML-Paket abgebildet.