# UML2 und der Paketimport



## diggaa1984 (22. Jun 2008)

hiho, wollt nur ma nachfragen was euch bei folgender Sache in Sinn kommt, bzw obs einer weiss:

in UML2 wird unterschieden zwischen öffentlichen Paketimport (<<import>>) und privaten Paketimport (<<access>>).

Nach längerer Überlegung fiel mir nur sowas ein:

```
import java.util.ArrayList; //öffentlich also <<import>>
```
oder

```
public class Foo {
 java.util.ArrayList<String> l; //privater import also <<access>>
}
```

mal unabhängig davon ob die Syntax im 2. Fall stimmt, wäre das der Gedanke hinter der öffentlichen/privaten Geschichte?


----------



## ms (27. Jun 2008)

Ich bin ich mir nicht sicher, ob man Paket-/Elementimport von UML so eins zu eins mit dem Import von Klassen auf Java umlegen kann. Für mein Verständnis ist der Import in Java nur ein Teil dessen, was die UML mit ihrem Import von Paketen bzw. Elementen bietet. Und wenn ich es richtig verstanden habe, dann liegt der Unterschied zwischen <<import>> und <<access>> darin, dass die Sichtbarkeit für ein drittes Paket, welches man importieren möchte, festgelegt wird. Also Paket2 importiert (mit <<import>>) Paket1. Paket3, welches mit <<import>> oder <<access>> Paket2 importieren möchte hat jetzt Zugriff auf alle public Classifier von Paket1 und Paket2. Würde Paket2 mit <<access>> importieren hätte Paket3 keinen Zugriff auf die public Classifier von Paket1.

In Java wird die Sichtbarkeit einer Klasse aus Paketsicht aber mit 

```
public class Irgendwas ...
```
 => öffentlich oder 
	
	
	
	





```
class Irgendwas ...
```
 => privat festgelegt.
Durch einen import in Java kann ein Package nicht die Sichtbarkeit seines Inhalts für andere Pakete festlegen, sondern nur zur Benutzung innerhalb der verwendeten Klasse freigeben.

Somit würde ich sagen, dass ein Paketimport mit <<access>> dem Import von Packages bzw. Klassen in Java am ehesten entspricht, da es in dem Paket in dem es verwendet wird nicht weiter öffentlich zugänglich ist, wenn dieses selbst von einem anderen Paket importiert wird.  Ein Import mit dem Steretype <<import>> - behaupte ich mal - gibt es so nicht in Java. Wenn allerdings ein Alias für einen <<import>> definiert wird könnte man dies in Java als neue Klasse die ein Delegate auf die importierte Klasse ist sehen.

Ich würde ein Paketdiagramm nur zu Dokumentationszwecken bzw. verschiedene Sichten auf ein System benutzen.
Ich bin bisher auch nicht auf die Idee gekommen aus einem Paketdiagram Code zu generieren. Die (Java-)Packages, in denen sich die Klassen befinden würde ich durch den vollqualifizierten Klassennamen (zB. java.util.List) in UML definieren.

Vielleicht kann ja noch jemand was dazu sagen. Mein Info hab ich übrigens aus UML Glasklar.

ms


----------



## diggaa1984 (27. Jun 2008)

gut, die aussage finde ich recht logisch. danke dir dafür, hattee bereits schon in den original UML-specs geschaut, aber die sind mir ein wenig zu unverständlich. hatte auch schon daran gedacht mir ein buch über uml zu holen, aber glaube das werde ich erst später machen, wenn ich andere sachen (design von software und Java speziell) wesentlich besser beherrsche


----------

