Da die gegebene Lösung an einigen Stellen leider sehr sinnfrei ist würde ich mich wahnsinnig freuen wenn sich hier jemand dazu bereit erklären würde seine Meinung zu meinen erarbeiteten Lösungen zu geben.
Meine Lösungen:
a)
c)
d)
e)
Wäre wirklich super wenn man mir sagen könnte ob/was ich wo falsch gemacht habe, oder was ich auch besser machen könnte.
Vielen lieben Dank,
Julia
Aufgabe 3:
Gegeben ist die folgende Klasse Zimmer für beliebige Zimmer-Objekte einer Hotelverwaltung.
Java:public class Zimmer{ private String nummer; private int kategorie; private int anzahlbetten; public Zimmer (){ } public String getNummer(){ return nummer; } public int getKategorie(){ return kategorie; } public int getAnzahlBetten(){ return anzahlBetten; }
a) ...
b) ...
c) Implimentieren Sie die von Zimmer abgeleitete Klasse ZimmerHP mit einem zusätzlichen Attribut preisHP (Preis mit Halbpension in €), einem entsprechenden Wertkonstruktor und einer Methode toString() so, dass dieses Attribut mit ausgegeben wird.
d) Implimentieren Sie die von Zimmer abgeleitete Klasse FeWo (Ferienwohnung) mit einem zusätzlichen Attribut preisWoche (Preis pro Woche in €), einem entsprechenden Wertkonstruktor und einer Methode toString() so, dass dieses Attribut mit ausgegeben wird.
e) Schreiben Sie eine JUnit-Test-Methode testZimmer in der eine Liste von Zimmern definiert wird. Fügen Sie in die Liste ein ZimmerHP und zwei FeWo ein und geben Sie anschließend die Elemente der Liste mit Hilfe der toString()-Methode aus. Berechnen Sie die Gesamtzahl der Betten aller Elemente der Liste und geben Sie diese aus.
Meine Lösungen:
a)
Java:
public Zimmer(String nummer, int katagorie, int anzahlBetten){
this.nummer = nummer;
this.kategorie = kategorie;
this.anzahlBetten = anzahlBetten;
}
c)
Java:
public class ZimmerHP extends Zimmer{
private int preisHP;
*/
/ Frage zum Getter: Nicht in Angabe gefordert. Man hat mir empfohlen für jede Klasse einfach immer direkt zu machen. Soll man das ?
/*
public int getPreisHP{
return preisHP;
}
*/
/ Wertkonstruktor
/*
public ZimmerHP (String nr, int kt, int betten, int preis){
super(nr,kt,betten);
this.preisHP = preis;
}
*/
/ Bemerkung toString(): Gibt unschön formatiert aus da Angabe nix konkretes fordert.
/*
public String toString(){
return this.preisHP+","+this.getNummer()+","+this.getKategorie()+","+this.getAnzahlBetten();
}
}
d)
Java:
public class FeWo extends Zimmer{
private int preisWoche;
//Wertkonstruktor
public FeWo(String nr, int kt, int betten, int preis){
super(nr,kt,betten);
this.preisWoche=preis;
}
//toString();
public String toString(){
return this.preisWoche+","+this.getNummer()+","+this.getKategorie()+","+this.getAnzahlBetten();
}
}
e)
Java:
public testZimmer(){
//"... in der eine Liste von Zimmern definiert wird,..."
List<Zimmer> roomlist = new ArrayList<Zimmer>();
//"... Fügen Sie in die Liste ein ZimmerHP und zwei FeWo ein ..."
ZimmerHP z1 = new ZimmerHP ("1",1,1,100);
FeWo z2 = new FeWo("2",2,2,500);
FeWo z3 = new FeWo("3",2,2,500);
//"...geben Sie anschließend die Elemente der Liste mit Hilfe der toString()-Methode aus."
Iterator<Zimmer> it1 = roomlist.iterator(); // <---- ganz unsicher ob das stimmt
while(it1.hasNext()){ // <---- ganz unsicher ob das stimmt
System.Out.println(it.next().toString()); // <---- ganz unsicher ob das stimmt
}
//"... Berechnen Sie die Gesamtzahl der Betten aller Elemente der Liste und geben Sie diese aus."
int anzahlBetten = 0;
// Ich hab hier zwecks Übersicht einen zweiten Iterator genutzt, obwohl ich das mit dem vorherigen hätte lösen können.
Iterator<Zimmer>it2 = roomlist.iterator();
while(it2.hasNext()){
anzahlZimmer = anzahlZimmer + it2.next().getAnzahlBetten());
}
return anzahlBetten;
Wäre wirklich super wenn man mir sagen könnte ob/was ich wo falsch gemacht habe, oder was ich auch besser machen könnte.
Vielen lieben Dank,
Julia