Hallo zusammen,
ich sitze grad an meiner Semester-Projektaufgabe und habe ein Problem, wo ich einfach nicht weiterkomme. Wir müssen ein Reservierungssystem für ein Hotel entwickeln. Dabei muss während des Reservierungsvorgang geprüft werden, ob ein Zimmer gebucht werden kann oder nicht.
Das Hauptkriterium ist hierbei das Anfangs- und Enddatum.
Dabei werden Reservierungs-Objekte in einer arraylist abgelegt. Ich wollte nun das Comparable-interface nutzen, stehe aber etwas auf dem Schlauch wie ich nun Startdatum UND Enddatum vergleiche. Zumal es ja einige Kombinatioen geben kann.
Z.B.:
Kunde1: 01.01.2009 bis 05.01.2009
Kunde2: 01.01.2009 bis 04.01.2009
Kunde3: 04.01.2009 bis 10.01.2009
Es darf nun also bei einer Reservierung zu keinen Überschneidungen kommen. Kunde3 könnte also das Zimmer von Kunde 2 bekommen, aber nicht von Kunde1.
Ebenso könnte Kunde1 nicht die Zimmer von Kunde2 und 3 bekommen, wenn er z.B. nach den beiden Kunden reservieren würde.
Mir ist klar, dass ich Comparable in meiner Klasse "Datum" implementieren muss. Aber bei wie implementiere ich es bei meiner arraylist-Funktion ?
Dazu kommt das in meiner Datum-Klasse die Attribute Tag/Monat/Jahr jeweils int-Werte sind und hinterher per toString-Methode in die Form string "5.12.2008" ausgegeben werden.
Ich wollte es zunächst einfach mit Summenbildung der int-Werte versuchen.
Ich hoffe da kann mir jemand den entscheidenen Tipp geben.
Hier mal mein code um einen Überblick zu haben (auszugweise):
Zunächst das Ablegen von Reservierungs-Objekten in eine arraylist:
Und nun noch die Klasse "Datum":
ich sitze grad an meiner Semester-Projektaufgabe und habe ein Problem, wo ich einfach nicht weiterkomme. Wir müssen ein Reservierungssystem für ein Hotel entwickeln. Dabei muss während des Reservierungsvorgang geprüft werden, ob ein Zimmer gebucht werden kann oder nicht.
Das Hauptkriterium ist hierbei das Anfangs- und Enddatum.
Dabei werden Reservierungs-Objekte in einer arraylist abgelegt. Ich wollte nun das Comparable-interface nutzen, stehe aber etwas auf dem Schlauch wie ich nun Startdatum UND Enddatum vergleiche. Zumal es ja einige Kombinatioen geben kann.
Z.B.:
Kunde1: 01.01.2009 bis 05.01.2009
Kunde2: 01.01.2009 bis 04.01.2009
Kunde3: 04.01.2009 bis 10.01.2009
Es darf nun also bei einer Reservierung zu keinen Überschneidungen kommen. Kunde3 könnte also das Zimmer von Kunde 2 bekommen, aber nicht von Kunde1.
Ebenso könnte Kunde1 nicht die Zimmer von Kunde2 und 3 bekommen, wenn er z.B. nach den beiden Kunden reservieren würde.
Mir ist klar, dass ich Comparable in meiner Klasse "Datum" implementieren muss. Aber bei wie implementiere ich es bei meiner arraylist-Funktion ?
Dazu kommt das in meiner Datum-Klasse die Attribute Tag/Monat/Jahr jeweils int-Werte sind und hinterher per toString-Methode in die Form string "5.12.2008" ausgegeben werden.
Ich wollte es zunächst einfach mit Summenbildung der int-Werte versuchen.
Ich hoffe da kann mir jemand den entscheidenen Tipp geben.
Hier mal mein code um einen Überblick zu haben (auszugweise):
Zunächst das Ablegen von Reservierungs-Objekten in eine arraylist:
Code:
public ArrayList<Reservierung> buche2(Kunde k, int anzZimmer, int anzBetten, Datum beginn, Datum ende) {
Zimmer[] zimmer_array = getHotel().getZimmer_array();
Zimmer zimmer = null;
Reservierung res_temp = null;
ArrayList<Reservierung> res_liste = new ArrayList<Reservierung>();
for (int i=0; i<=anzZimmer; i++) {
if (zimmer_array[i].getBetten() >= anzBetten) {
zimmer = zimmer_array[i];
res_temp = new Reservierung (k, zimmer, beginn, ende);
res_liste.add(res_temp);
}
}
return res_liste;
}
Und nun noch die Klasse "Datum":
Code:
public class Datum implements Comparable<Datum> {
private int tag;
private int monat;
private int jahr;
// getter/setter/etc. lasse ich mal raus, wird zu lang
public String toString() {
String datum = new Integer (getTag()).toString() +"." +new Integer (getMonat()).toString() +"." +new Integer (getJahr()).toString() +"\n";
return datum;
}
@Override
public int compareTo(Datum argument) {
if (jahr+monat+tag < argument.jahr+monat+tag )
return -1;
if (jahr+monat+tag > argument.jahr+monat+tag )
return 1;
return 0;
}