ich habe in jeder Datei den Import festgelegt.
Datei Kunde.java
Datei AuslandsKunde.java
Datei Adresse.java
und zu guter letzt Datei KundenStarter.java
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();
}
}