Suche Korrektor für meine Lösung (FH: Java1 - Übungsklausur)

m1k3ch3ck

Mitglied
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.

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
 
1: Getter ist auf jeden Fall sinnvoll, weil du ja auch irgenwie wieder an die Daten ran willst.
2: Vielleicht schreibst bei der toString() -Methode: return "NR:" + getNummer + "Kategorie:" + ...
3: bei e) kannst du auch einfach mit einer for-each schleife machen.(Ist aber denke ich Geschmackssache)
4: Warum returnst du die Anzahl der Zimmer anstatt sie auszugeben?
Edit: 5: Vor der toString() Methode solltest du vllt noch eine @Override Annotation schreiben
Das ist mir so als Schüler aufgefallen, der die Ansprüche der Uni halt nicht kennt. Hoffe es hilft dir.
 
Hast du es denn ausprobiert? Wenn das ganze Funktioniert, dann war es doch richtig.
bei e) könntest du auch durch die Liste mit einer for-schleife gehen.
toString methoden: Übersichtshalber macht es sinn da auch "FeWo" u.ä. auszugeben.
Dein JUnit-Test testet nichts, deswegen verliert das ganze ein wenig an Sinn. Da kannst du testen, ob die Anzahl der Betten richtig gerechnet wurde.
 
2: Vielleicht schreibst bei der toString() -Methode: return "NR:" + getNummer + "Kategorie:" + ...
3: bei e) kannst du auch einfach mit einer for-each schleife machen.(Ist aber denke ich Geschmackssache)
4: Warum returnst du die Anzahl der Zimmer anstatt sie auszugeben?
Edit: 5: Vor der toString() Methode solltest du vllt noch eine @Override Annotation schreiben
Das ist mir so als Schüler aufgefallen, der die Ansprüche der Uni halt nicht kennt. Hoffe es hilft dir.

2: Ich weiss das es nicht gerade die sinnvollste Ausgabe ist, aber die Angabe fordert ja nichts all zu konkretes. - In der Prüfung würde ich dann schon eher was sinnvolles (wie deinen Vorschlag) hinschreiben.
3: "for-each" Schleifen habe ich noch nie hergenommen. Das es mit einer normalen for(int i=0, i<3, i++) Schleife ginge weiss ich, aber ich habe mich für den Iterator entschieden, da er von "höherem Niveau" zeugt. (Zwecks Prof beeindrucken 😛)
4: Hab mich in der Angabe verlesen. Danke 🙂
5: done

Vielen Dank.

Hast du es denn ausprobiert? Wenn das ganze Funktioniert, dann war es doch richtig.
bei e) könntest du auch durch die Liste mit einer for-schleife gehen.
toString methoden: Übersichtshalber macht es sinn da auch "FeWo" u.ä. auszugeben.
Dein JUnit-Test testet nichts, deswegen verliert das ganze ein wenig an Sinn. Da kannst du testen, ob die Anzahl der Betten richtig gerechnet wurde.

Nein ich habe es nicht ausprobiert.
Bzgl for-Schleife, siehe Oben.
Dass der JUnit Test nichts testet weiss ich, jedoch steht in der Angabe auch nicht "Schreibe einen JUnit-Test", sondern nur ".. eine Testmethode...".
Danke für deine Antwort.

Julia
 
Dass der JUnit Test nichts testet weiss ich, jedoch steht in der Angabe auch nicht "Schreibe einen JUnit-Test", sondern nur ".. eine Testmethode...".

Ja, aber das was du geschrieben hast hat recht wenig mit JUnit-Test zu tun. Zu deiner Lösung würde die Aufgabe heißen: "Schreiben Sie eine Methode, die die Gesamtzahl der Betten berechnet". Und außerdem ist es ja nur 1-2 Zeile, die du hinzufügen musst. (Notation und assert).

P.S. und den Prof würde eher die korrekte Formatierung beeindrucken 😉
 

Neue Themen


Zurück
Oben