e:\java\demos\sparen.java
Meine Klassen-Sammlung soll in folgendem Verzeichnis sein:
e:\java\mc\
Der Package-Name ist: zins.java
Die einzubindende Klasse (in zins.java) heisst: euro.java
Meine Fragen:
Wie muss im Package zins.java die Anweisung lauten: "Package x;" ?
Wie muss in der Programmdatei sparen.java die import-Anweisung lauten:
"import y" ?
Was mir nicht klar ist, wie ich in java-Anweisungen Windows-Pfadangaben
formulieren soll; auf das Beispiel bezogen: was muss ich jeweils fuer x
bzw. y einsetzen?
Vielen Dank!
Helmut
Heißen deine *Packages* wirklich irgendwas.java, oder ist das eine Datei in
deinem Dateisystem?
> Was mir nicht klar ist, wie ich in java-Anweisungen Windows-Pfadangaben
> formulieren soll
Gar nicht :-)
Nein, im ernst. Du hast ein Basis-Verzeichnis unterhalb dessen dein
Source-Code liegt. Wenn du nun deinen Source-Code "sauber" organisieren
willst kannst du ihn aufgrund logischer Zusammengehörigkeit in ein Package
packen. Alle Klassen in diesem Package haben dann als erste Code-Zeile
"package mein.package;". Um dies auch schön im Dateisystem abzubilden
ersetzt man einfach jeden Punkt in der Package-Anweisung durch den auf der
jeweiligen Plattform gültigen Pfadtrenner (Windows == Backslash (\)) und hat
dann unterhalb des Basis-Verzeichnis bei einem Package mit dem Namen
"mein.package" die Verzeichnis-Struktur
basis\
mein\
package\
MeineKlasse.java
Wenn da nun ein anderes Package hinzu kommt sieht es z.B. so aus:
basis\
mein\
package\
MeineKlasse.java
anderesPackage\
AndereKlasse.java
Und wenn nun MeineKlasse die Klasse AndereKlasse aus dem Package
"mein.anderesPackage" verwenden will schreibt man im Source-Code von
MeineKlasse "import mein.anderesPackage.*;".
Generell gilt - unabhängig von der Frage - noch folgendes:
- Klassennamen beginnen im allgemeinen mit einem großen Buchstaben (also
Sparen anstelle von sparen)
- Der Dateiname muß dem Klassennamen entsprechen (Klasse Sparen in Datei
Sparen.java, *nicht* zulässig ist sparen.java mit einem kleinen S)
- Packages sollten einem umgekehrten (eigenen) Domainnamen entsprechen um
nicht zu Duplikaten zu führen (Ausnahmen machen hier gerne größere Firmen
wie z.B. Oracle wo das Top-Level Package nur "oracle" heißt, aber das muß
man ja nicht nachmachen solange man nicht ebenso groß ist :-) )
Nico
folgendes:
Dein Classpath ist gesetzt auf "c:\classes".
Du hast ein folgenes Package definiert: "mypackage.rechner".
Demnach hast du im Verzeichnis "c:\classes" auch noch den Order
"mypackage\rechner\".
So in etwa: "c:\classes\mypackage\rechner\".
Nun, "mypackage.rechner" ist dein Package.
Mit "package mypackage.rechner" machst du also alle Klassen des Ordners
"c:\classes\mypackage\rechner\" innerhalb der neuen Klasse verfügbar.
Im Gegenzug macht die "import"-Anweisung das Ganze ein wenig anders.
Um alle Klassen des Ordners "mypackage\rechner" zu importieren müsstest du
dann schreiben "import mypackage.rechner.*;".
Damit wären dann alle Klassen des Ordners, genauso wie bei der
"package"-Anweisung, innerhalb der neuen Klasse verfügbar.
Anders kannst du mit "import" auch nur eine einzelne Klasse importieren, zum
Beispiel die Klasse "Zins" oder die Klasse "Rechner", nicht jedoch die
Klasse "Tilgung".
Dann schreibst du:
--- snip ---
import mypackage.rechner.Zins;
import mypackage.rechner.Rechner;
--- snip ---
Vorraussetzung ist, das die Klassen innerhalb des Classpathes liegen,
möglich wäre aber auch ein eigener Ordner, der in keiner Verbindung mit dem
Classpath steht. Hast du verschiedene Verzeichnisse im Classpath, dann ist
es auch möglich Dateien von Laufwerk E in einer Klasse, die auf Laufwerk C
liegt zu benutzen. Vorraussetzung ist, das die Verzeichnisse, aus denen du
Klassen nutzen möchtest im Classpath liegen. Klassennamen werden übrigens
nach Konventionen groß geschrieben.
Gruß,
Sascha
Das hast Du wirklich gut erklärt. Ich will nur noch eins anfpügen was man nicht
vergessen sollte. Man muss einen Classpath für das Basis Verzeichnis setzen.
Entweder z.B. in der Autoexec.bat die Zeile SET CLASSPATH=C:\BASISVERZEICHNIS;
einfgügen oder beim
Übersetzen (javac.exe) und beim Ausführen (java.exe) den Classpath setzen, damit
das Java auch weis von wo aus es die Klassen suchen muss.
Bsp:
javac.exe -classpath c:\basisveerzeichnis; MeinJavaProgramm.java
Ich hoffe ich konnte auch ein wenig weiterhelfen. Das Erklären von
solchen Sachen ist meist schwieriger als das zu Verstehen.
c.u.
Mathias
> "Helmut Greschner" <HGres...@t-online.de> schrieb im Newsbeitrag
> news:3ADC0188...@t-online.de...
> > Auf meinem (Windows)PC liegt mein java-Prog in folgendem Verzeichnis:
[...]
Herzlichen Dank für die profunde Aufklärung!
Helmut
[...]
> Du hast ein folgenes Package definiert:
[...]
Auch dir herzlichen Dank für deine ausführliche Erklärung!
Helmut
> Hallo Nico!
>
> Das hast Du wirklich gut erklärt. I
[...}
> Ich hoffe ich konnte auch ein wenig weiterhelfen.
Das tast es. Vielen Dank!
Helmut