OOP Komposition per Package-Sichtbarkeit

Arsedeus

Mitglied
Hallo zusammen,
ich habe folgendes Problem: Es muss diese Komposition realisiert werden (Abbildung). Dabei soll Gebäude-Stockwerk über Package-Sichtbarkeit und alles Andere über den Konstruktor des Teils realisiert werden. Wie kann ich den von der Main-Klasse, die in einem anderen Package liegt auf z.B. Büro zugreifen?

Komposition.jpg

Mein Code wäre:


[CODE lang="java" title="Gebäude"]public class Gebäude {

private String name;
private Stockwerk stockwerk;

public Gebäude(String name) {
setName(name);
}

public void setName(String name) {
if (name == null || name.length() < 3 || !name.matches("[a-zA-Z0-9]+"))
throw new RuntimeException("Name ungültig");
this.name=name;
}

public String getName() {
return name;
}

public void addStockwerk(String name) {
if(name==null||name.length()<2||!name.matches("[a-zA-Z0-9]*"))
throw new RuntimeException("Name ungültig");
stockwerk=new Stockwerk(name);
}

public Stockwerk getStockwerk() {
return stockwerk;
}

}[/CODE]

[CODE lang="java" title="Stockwerk"]class Stockwerk {

private String name;
private Büro büro;

public Stockwerk(String name) {
setName(name);
}

public void setName(String name) {
if (name == null || name.length() < 2 || !name.matches("[a-zA-Z0-9]+"))
throw new RuntimeException("Name ungültig");
this.name=name;
}

public String getName() {
return name;
}

public void addBüro(String name) {
if (name == null || name.length() < 3 || !name.matches("[a-zA-Z0-9]+"))
throw new RuntimeException("Name ungültig");
büro=new Büro(name, this);
}

public String getBüro() {
return büro.getName();
}

}[/CODE]

[CODE lang="java" title="Büro"]public class Büro {

private String name;
private Stockwerk stockwerk;
private Einbauschrank schrank;

public Büro(String name, Stockwerk stockwerk) {
setName(name);
setStockwerk(stockwerk);
}

public void setName(String name) {
if (name == null || name.length() < 3 || !name.matches("[a-zA-Z0-9]+"))
throw new RuntimeException("Name ungültig");
}

public String getName() {
return name;
}

public void setStockwerk(Stockwerk stockwerk) {
if (stockwerk == null)
throw new RuntimeException("Stockwerk ungültig");
this.stockwerk=stockwerk;
}

public Stockwerk getStockwerk() {
return stockwerk;
}

public void addSchrank(String name) {
if (stockwerk == null)
throw new RuntimeException("Schrank ungültig");
this.schrank = new Einbauschrank(name, this);
}

public Einbauschrank getSchrank() {
return schrank;
}

}[/CODE]

[CODE lang="java" title="Einbauschrank"]public class Einbauschrank {

private String name;
private Büro büro;

public Einbauschrank(String name, Büro büro) {
setName(name);
}

public void setName(String name) {
if (name == null || name.length() < 3 || !name.matches("[a-zA-Z0-9]+"))
throw new RuntimeException("Name ungültig");
}

public String getName() {
return name;
}

public Büro getBüro() {
return büro;
}

public void setBüro(Büro büro) {
if (büro == null)
throw new RuntimeException("Büro ungültig");
this.büro = büro;
}

}[/CODE]
 
Zunächst ist mir ein anderer Fehler aufgefallen:
Ein Gebäude hat in der Regel mehrere Stockwerke; du must also ein Liste von Stockwerken in der Klasse Gebäude speichern.
 

Zurück
Oben