Klassen wiederverwenden

ich habe in jeder Datei den Import festgelegt.


Datei Kunde.java

Code:
//Paketzuordnung
package Adressdatenbank;

import Adressdatenbank.*;
//Klasse Kunde anlegen
public class Kunde {
   //Klassenvariable
   static int count = 0; //Grund: Eine Klassenvariable count vom Typ int soll die Anzahl der bereits erzeugten
   //Instanzen der Klasse Kunde zählen. 
   //Instanzvariable
   private int kundennummer;
   private String name;
   private String anrede;
   private Adresse adresse;
  
   // Getters und Setters (Grund: Alle Variablen sollen von außen nur über Methoden der Klasse les- und änderbar sein. Die
	  //Kundennummer soll nicht veränderbar sein. 
   public String getName() {
  return name;
   }
   public void setName(String name)  {
   this.name = name;
   }
   public String getAnrede() {
  return anrede;
   }
   public void setAnrede(String anrede)  {
   this.anrede = anrede;
   }
   public String getAdresse() {
  return adresse;
   }
   public void setAdresse(Adresse adresse)  {
   this.adresse = adresse;
   }
   //Konstruktor für Anzahl der Instanzen
   public Kunde() {
 Kunde.count++; 
 kundennummer = count;
 
   }
   
  //Konstruktor für Initialisierung der Instanzvariablen
  public Kunde (String name, String anrede, Adresse adresse) {
 this.name = name;
 this.anrede = anrede;
 this.adresse = adresse;
  }
  //Methode Print 
  public void zeigeAttribute() {
 System.out.println("Kundennummer:" + kundennummer);
 System.out.println("Name:" + name);
 System.out.println("Anrede:" + anrede);
 System.out.println("Adresse:" + adresse);
 
  }
}

Datei AuslandsKunde.java
Code:
//Paketzuordnung
package Adressdatenbank;
//Import von Adressen
import Adressdatenbank.*;
//Klasse AuslandsKunde mit vererbten Eigenschaften von der Klasse Kunde
public class AuslandsKunde extends Adressdatenbank.Kunde{
   
   // Alle Eigenschaften und Variablen von Kunde sind enthalten, eine Variable
   // land muss noch eingefügt werden.
   private String land;
   //Getter und Setter (Auch diese Variable soll sich nur über Methoden der Klasse lesen
  //und ändern lassen.)
   public String getLand() {
  return land;
   }
   public void setLand(String land)  {
   this.land = land;
   }
   //Konstruktor soll die Basisklasse Kunde initialsieren, als auch die Instanzvariable
   //land. 
   public AuslandsKunde (String name, String anrede, Adresse adresse, String land) {
	  super(name, anrede, adresse); // Initialisierung des Konstruktors 
	  this.land = land;
	   }
}

Datei Adresse.java
Code:
//Paketzuordnung
package Adressdatenbank;
import Adressdatenbank.*;
public class Adresse {
	// Instanzvariablen
	private String strasse;
	private String hausNr;
	private String postleitzahl;
	private String stadt;
	
	// Konstruktor
	public Adresse(String strasse, String hausNr,
	 String postleitzahl, String stadt) {
		this.strasse = strasse;
		this.hausNr = hausNr;
		this.postleitzahl = postleitzahl;
		this.stadt = stadt;
	}
	
	// Methoden
	public String getStrasse() {
		return strasse;
	}
	
	public String getHausNr() {
		return hausNr;
	}
	
	public String getPostleitzahl() {
		return postleitzahl;
	}
	
	public String getStadt() {
		return stadt;
	}
	
	public void setStrasse(String s) {
		strasse = s;
	}
	
	public void setHausNr(String s) {
		hausNr = s;
	}
	
	public void setPostleitzahl(String s) {
		postleitzahl = s;
	}
	
	public void setStadt(String s) {
		stadt = s;
	}
	
	public void print() {
		System.out.println("Strasse: " + strasse + " " + hausNr);
		System.out.println("Stadt: " + postleitzahl + " " + stadt);
	}
}

und zu guter letzt Datei KundenStarter.java
Code:
//Paketzuordnung
package Adressdatenbank;
//Import
import Adressdatenbank.*;
public class KundenStarter {
	public void start() {
		// Polymorphe Referenz
		Kunde kunde;
 
		Adresse adr1 = new Adresse("Musterstrasse", "12",
	   "88888", "Musterstadt");
		Adresse adr2 = new Adresse("PennyLane", "1", "X1234", "London");
		
		// kunde referenziert normalen Kunden
		kunde = new Kunde("Huber", "Herr", adr1);
		kunde.print();  // print() in Kunde
 
		System.out.println();
 
		// kunde referenziert nun einen AuslandKunden
		kunde = new AuslandsKunde("Graves", "Mister", adr2, "England");
		kunde.print();  // print() in AuslandKunde
	}
	
	public static void main(String[] args) {
		KundenStarter app = new KundenStarter();
		app.start();
	}
}

:(
 
Mal eine allgemeine Frage:

Warum verwendest du nicht mal eine gescheite IDE wie z.B. Eclipse,
dann würden dir manche fehler erspart bleiben (wie z.B. die Package geschichten).

Ich schau mir gerade noch den Source an und hoffe das ich was entdecke.

Gruss
Torsten
 
torsch2711 hat gesagt.:
Mal eine allgemeine Frage:

Warum verwendest du nicht mal eine gescheite IDE wie z.B. Eclipse,
dann würden dir manche fehler erspart bleiben (wie z.B. die Package geschichten).

Ich schau mir gerade noch den Source an und hoffe das ich was entdecke.

Gruss
Torsten

Die Sachen mit Eclipse, etc habe ich noch nicht gelernt, kommt in den nächsten Tage. Hoffe ich...
 
hmm. ich tippe mal, das dein CLASSPATH net so richtig ist.

Du brauchst nur das root verzeichnis deines Packages anzugeben (sprich d:\Privat\07\).

Zum testen würd ich mal das ganze package geraffel weglassen (sprich nix mit packages und imports).

Dann geht es nämlich ganz normal.

Versuchs mal.

Gruss

Torsten
 
morphi79 hat gesagt.:
Die Sachen mit Eclipse, etc habe ich noch nicht gelernt, kommt in den nächsten Tage. Hoffe ich...

Würde dir aber ganz schön beim debuggen helfen. Ist übrigens net so schwer einfach starten und sich wohlfühlen ;)
 
Wirklich? Hab den CLASSPATH nocheinmal gesetzt auf D:\Privat\07\

D:\Privat\07>set CLASSPATH D:\Privat\07\
Classpath="D:\Privat\07\"

Habe bei den vier Dateien die Package rausgenommen, ist in keiner mehr vorhanden. Habe alle vier Dateien direkt in das Verzeichnis 07 in Privat eingestellt.Die Adresse.java ist wie immer kein Problem. Bei der Kunde.java kommt der gleiche Fehler:

D:\Privat\07>set CLASSPATH D:\Privat\07\
Classpath="D:\Privat\07\"



D:\Privat\07>javac Adresse.java

D:\Privat\07>javac Kunde.java
Kunde.java:13: cannot resolve symbol
symbol : class Adresse
location: class Kunde
private Adresse adresse;
^
Kunde.java:34: cannot resolve symbol
symbol : class Adresse
location: class Kunde
public void setAdresse(Adresse adresse) {
^
Kunde.java:46: cannot resolve symbol
symbol : class Adresse
location: class Kunde
public Kunde (String name, String anrede, Adresse adresse) {
^
3 errors
 
Zuletzt bearbeitet:
Hmm, ich glaub ich bin gerade blind.

EDIT:
Oehm.

den klassenpfad setzt du so:

set CLASSPATH=<VERZEICHNIS>

du setzt das ganze etwas seltsam.

Ich schaue es mir später nochmal in ruhe an.

Aber es ist so, dass er die Klasse nicht findet.

Liegt in dem Verzeichnis die kompilierte .class datei?
 
Zuletzt bearbeitet:
torsch2711 hat gesagt.:
Hmm, ich glaub ich bin gerade blind.

EDIT:
Oehm.

den klassenpfad setzt du so:

set CLASSPATH=<VERZEICHNIS>

du setzt das ganze etwas seltsam.

Ich schaue es mir später nochmal in ruhe an.

Aber es ist so, dass er die Klasse nicht findet.

Liegt in dem Verzeichnis die kompilierte .class datei?
ok, es lag am CLASSPATH.....

:mad: .
 
es geht aber nicht um die .java dateien,

du benötigst .class dateien um sie bei deinem Kunde.java einzubinden nicht die sourcecode dateien.

Gruss,
Torsten
 
ich habe nur noch ein Problem....jepiiii.....yeahhh.....

und zwar in der Klasse KundenStarter in der Datei KundenStarter.java.

Wenn ich die Datei kompilieren möchte, dann bekomme ich eine Fehlermeldung:

D:\Privat\07>javac KundenStarter.java
KundenStarter.java:14: cannot resolve symbol
symbol : method print ()
location: class Kunde
Kunde.print(); // print() in Kunde
^
KundenStarter.java:20: cannot resolve symbol
symbol : method print ()
location: class Kunde
Kunde.print(); // print() in AuslandKunde
^
2 errors


Hier der Quellcode KundenStarter.java
Code:
public class KundenStarter {
	public void start() {
		// Polymorphe Referenz
		Kunde kunde;
 
		Adresse adr1 = new Adresse("Musterstrasse", "12",
	   "88888", "Musterstadt");
		Adresse adr2 = new Adresse("PennyLane", "1", "X1234", "London");
		
		// kunde referenziert normalen Kunden
		kunde = new Kunde("Huber", "Herr", adr1);
		kunde.print();  // print() in Kunde
 
		System.out.println();
 
		// kunde referenziert nun einen AuslandKunden
		kunde = new AuslandsKunde("Graves", "Mister", adr2, "England");
		kunde.print();  // print() in AuslandKunde
	}
	
	public static void main(String[] args) {
		KundenStarter app = new KundenStarter();
		app.start();
	}
}
 
Zurück