Der Sinn von Packages

Prophet05

Erfahrenes Mitglied
Hi,

könntet ihr mir mal erklären welchen Sinn Packages haben und wie sie genau aufgebaut sind?

Ich habe ein Buch um Java zu lernen aber ich habe nicht genau verstanden wie es sich mit Packages verhält. Sind das Ordner in die man die Klassen einordnet? Oder ist das nur zurlogischen ordnung? Wie muss ich die angeben?

mfg Prophet05
 
Hm ... eine interessante Fragestellung.

Ich persönlich sehe Packages eigentlich als logische Trennung. Also als Zusammenfassung von funktional zueinandergehörigen Teilen, die separat von einander Behandelt werden können. Ein Beispiel: die Packagestruktur von Java (z.B. java.util.Collections, java.io, etc.)

Kann aber natürlich sein, dass ich auch falsch liege, ist eher eine software-engineering-philosophische Frage ... :p

Gruß
TOM
 
Packages dienen dazu um ein bessere Übersicht und struktur in deine Programmierung zu geben. Ausserdem hättest du ein problem, wenn du gleichnamige Klassen nicht trennen könntest. Wie würdest Du z.B. die klasse Date zuordnen?

Diese existiert im java.sql.date als auch in java.util.date.

Hier kommen packages ins spiel.

Gruss,

Torsten
 
Dann wird die Klasse, in der Du das so definiert hast, dem Package 'blub' zugewiesen.

Somit kannst Du extern auf diese Klasse zugreifen:

import blub.DeineKlasse;
 
packages sind das java-pedant zu sog. namespaces.

was passiert, wenn man kein namespace konzept hat? das hier.

preisfrage: fällt dir an den funktionen was auf?! ;-)
 
Ja sie sind unsortiert und haben teilweisse ähnliche namen wie bei Java (Dom z.b.)

Wow, dieser Thread hat mir echt viel gebracht :) Danke!
 
Hey nichts gegen PHP! Und wo muss ich die klasse hinpacken damit ich sie von überall aus importieren kann? Wenn ich eine Klasse in einem Projekt bei Eclipse erstelle wird sie ja immer in dieses Projekt einkompiliert. Sie ist dann aber nicht überall erreichbar...
 
darauf wollte ich nicht ganz hinaus :)

unsortiert - eigentlich nicht.
ähnliche namen - *G* yo alles andere wär ja auch denkbar schlecht.
 
was mir auffällt, das einige Funktionen Prefixe zu haben scheinen ...

Aber zurück zu Packages:
Java bedient sich was die physikalische lage der Klassen angeht dem zu Grunde liegenden Hierachisch gegliederten Datei-system

eine Klasse dm Package xyz.labalaba.sulz würde somit im Ordner
xyz
|
labalaba
|
sulz
stecken.

Anders als beispielsweise in C++ wo die Dateien irgenwo liegen dürfen egal welcher Namespace müssen die einzelen Paketnamen der Ordnerstruktur entsprechen.

Aber noch ein netter wenn vielleicht auch akademisch wirkender Hinweis in Bezug auf die Auswahl von Paketnamen bzw die Zuordnung von Klassen.
Es hat sich auf das erste Thema bezogen durchgesetzt das der erste Name eines paketes möglichst einer Länderkennung gleicht (de für Deutschland) und der 2. Teil sozusagen eine Art Firmer oder Inhaberkürzel. Wichtig dabei ist was eine Art stiller Standard darstellt package-namen grundsätzlich klein zu schreiben.

Zum Thema zuordnen von Klassen in Packages: Man sollte darauf achten das die Abhängigkeiten der Klassen eines Paketes nicht zyklisch abhängig sind mit Klassen eines anderen Paketes.
z.B. ist es ok wenn die klasse de.cmk.blubs.KlasseA abhängig ist von einer Klasse de.cmk.lala.KlasseB aber Klasse B sollte nicht direkt abhängig sein von der ersteren.
hat man beispielsweise 3 Pakete a, b und c kann durchaus es gut sein das Klassen von Paket A von Klassen in aket B und diese wiederum von Klassen in Paket C abhängig sind aber Klassen von C sollten nimals abhängig von Klasen von B oder A abhängig sein.
Grund man sollte versuchen Pakete als wiederverwendende Einheiten zu verstehen, sind sie aber kreuz und quer vor allem Zyklisch abhängig ist das schier unmöglich.
Tip dazu je mehr Pakete man macht desto schwerer kann es sein solchen zyklischen Abhängigkeiten her zu werden.

Takidoso
 
Zurück