UML Paketdiagramm: merge == import *

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
albertus
User
Beiträge: 52
Registriert: Mittwoch 7. Juli 2010, 14:48

Sonntag 9. Oktober 2011, 15:47

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.
Mit freundlichen Grüßen

Albertus
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Sonntag 9. Oktober 2011, 18:42

LOL UML.
TUFKAB – the user formerly known as blackbird
BlackJack

Sonntag 9. Oktober 2011, 18:59

@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.
Antworten