Denkanstöße für kleines Programm für Reservierung

freundchen

Grünschnabel
Ein nettes Hallo allerseits,

hab bis vor kurzem nur mit C programmiert (prozedural) und vor ein paar Monate mit Java angefangen.
Ich würde gerne ein kleines Programm zu Reservierung von Tennisplätzen über eine ganze Saison schreiben. Ich hab mir folgende Struktur ausgedacht (siehe Bild).
Im ersten Fenster wird der Platz ausgewählt und im zweiten wird der Belegungsplan ausgegeben, wobei der Nutzer Reservierungen vornehmen kann (je nach Verfügbarkeit) und seinen Namen auf eine Liste/Tabelle o.ä. schreiben kann.

Ich sehe im Moment eine Hürde: Zugriff auf die Klassen und deren Belegungspläne (Tabelle oder besser Kalender?!). Außerdem der Schritt von Fenster 1 zu Fenster 2: Denn dort wird jedes Mal ein Objekt erzeugt. Wenn ich aber bereits das Objekt bspw. Platz 2 schon früher erzeugt habe, dann will ich dies nicht überschreiben, sondern logischerweise mit neuere Reservierungen "aktualisieren".

Bin sehr dankbar für jede Denkanstöße, auch über Links, die ähnliches enthalten.
Grüße.
 

Anhänge

  • struktur.jpg
    struktur.jpg
    66,3 KB · Aufrufe: 64
Hi und Willkommen bei tutorials.de :)

Möglichkeit a)
Das Objekt, das erzeugt wurde, wird überall hin übergeben.
Wenn noch keines existiert, wird null übergeben.

Jede Methode/Klasse, die die Instanz braucht, bekommt also zuerst
die Instanz vom aufrufenden Programmteil übergeben.
Dann wird geprüft, ob die null ist.
Wenn ja, wird eine neue angelegt.
Am Schluss wird die Instanz (ob neu oder nicht)
zur aufrufenden Stelle zurückgegeben.
Java:
platz = blabla(platz);
...
public Tennisplatz blabla(Tennisplatz t) {
    if(t == null)
        t = new Tennisplatz();
    ...
    return t;
}

Möglichkeit b)
Das Ganze etwas umstrukturiert, mit dem Singleton-Pattern bzw. komplett static.
Nachteil: Auch, wenn man evt. ein zweites Objekt braucht, nur eines möglich.
Vorteil: Bei viel Code (der den Tennisplatz braucht) ist es weniger zu schreiben.
Wenn benötigt, kommt Codebeispiel.

Gruß
 
Grundsätzlich würde ich anders vorgehen.

Zuerst das Datum wählen, dann die Uhrzeit. Welchen Platz man reserviert, ist eigentlich egal. Man könnte dort freilich noch eine Auswahlmöglichkeit nach der Uhrzeit hinzufügen. Wichtig sind aber vor allem Datum und Uhrzeit.
€2: Weil wenn du zuerst die Plätze zeigst, muss der Kunde/Spieler erst alle Plätze durchgehen, bis er einen freien findet (zur gewünschten Uhrzeit), macht nicht viel Sinn oder? ;)


€: Wenn du direkt am Anfang (Fenster1) einen Kalender zeigst, dann solltest du dir dort auch eine Möglichkeit überlegen, wie du z.B. komplett ausgebuchte Tage markierst (rot hinterlegen) und freie Tage ebenso (grün hinterlegen).

Von Java habe ich nicht viel Ahnung, also kann ich dir dort nicht sonderlich weiterhelfen.
Viel Glück mit dem Projekt.

Gruß
 
Ich kenne einige Tennisspieler, die aus welchen Gründen auch immer, stets auf dem selben Platz spielen möchten. So wäre es benutzerfreundlicher, nach der Auswahl des Platzes die möglichen freie Zeiten anzuzeigen. Zudem wäre es interessant zu wissen, welche Restriktionen es beim Belegungsplatz gibt.
 
Ist aber äußerst zeitraubend, wenn man es durchdenkt:

Fenster1 -> Platz wählen
Fenster2 -> Datum wählen
Fenster3 -> "Mist die Uhrzeit wo ich kann, ist belegt"
Fenster2 -> zurück
Fenster1 -> neuen Platz wählen
Fenster2 -> Datum wählen
Fenster3 -> "Och ne, schon wieder alles belegt"
...

Verständlich?
Primär zu beachten ist immer das Datum und die Uhrzeit, bei solchen Projekten. Den Platz kann man zum Schluss ja auch noch aussuchen, nur wenn er gerade belegt ist, hat man halt Pech - kann sich aber einen anderen nehmen, ohne alles von vorne durchgehen zu müssen.

Gruß
 
Erstmal vielen Dank für die hilfreichen Antworten,

tatsächlich ist es wie suchong geschrieben hat, dass viele Spieler einige Plätze

favorisieren (z.B. mit mehr/weniger Zuschauer). Abgesehen davon gibt es richtige

Einzelplatzmarkierungen (ohne Doppelfeld) und Doppelfelder. Von daher kommt eher

die Variante, die ich oben beschrieben habe (zuerst Platzauswahl und dessen

Belegungsplan dann Plätze reservieren), sonst hat Lime natürlich Recht: Es ist

plausibler zuerst Datum/Uhrzeit festzulegen und dann die Plätze....

Unabhängig von der Reihenfolge ist die Umsetzung der Knackpunkt. Um ehrlich zu sein hab ich den Ansatz von sheel nicht ganz verstanden :)
Ich mein Tennisplatz ist die Klasse, die ich vorher definiert habe (richtig?), aber was blabla(platz) und blabla(Tennisplatz) in Zeile 3 ist mir noch nicht ganz klar. Die scheinen Methoden zu sein, die eine Variable (oder Klasse Tennisplatz?) erwarten. Desweiteren hab ich noch eine Frage: steht t für das Objektnummer? Heißt das, dass ich t von 1...6 nummeriere und dann per switch() auswählen kann? Wenn ja, wie kann ich eine Instanz zurückgeben (Syntax)?

Vielen Dank und Gruß
 
Hallo freundchen
Vom Design würde ich eine Klasse Tennisplatz und eine Klasse Belegungsplatz erzeugen. Die Klasse Tennisplatz und Belegungsplan haben eine HAS-A Beziehung zueinander. Für die Verwaltung der Plaetze bietet sich eine Klasse Platzverwaltung an, welche im Konstruktor eine int als maxPlaetze annimmt und diese Platze über eine ArrayList erzeugt. Die Platzverwaltung verfügt über Methoden wie getPlatz(int), getBelegunsplan(int) u.ä.m.

Zu Deinen Fragen: blabla(platz) wird der Variable platz durch einen Methodenaufruf namens blabla der Tennisplatz mit dem Objekt platz geholt und zugewiesen. blabla(Tennisplatz) ist die Implentierung dieser Methode. t ist keine Objektnummer sondern ein Tennisplatz. Wie man die Tennisplätze verwalten will, ist noch unklar. Mein Vorschlag war zuerst mit einer ArrayList, was für ein schnelles iterieren gut ist, für einen schnellen Zugriff wäre aber eine Map besser.
 
Zuletzt bearbeitet:
hallo suchong,

erstmal danke für die Erklärung der Methoden etc.
Ich weiß nicht, ob ich deine Gedankengänge bei meiner Variante verstanden und umgesetzt habe. Nach meine bescheidenen Programmierkenntnisse habe ich nur 2 Klassen (keine Verwaltungsklasse dazu) geschrieben: Die erste für Platzauswahl und die andere für Anzeige d. Belegungsplans (da sind ziemlich viele Methoden drin- gets und sets) --> Die Umsetzung sieht dann so aus (siehe Bild).

Der Benutzer klickt auf die Buttons und kann die Zeiten so reservieren (dann ändert sich die Farbe von grün auf rot sowie Namenänderung etc.). Läuft alles wunderbar.

Im Moment habe ich einzig das Problem, dass ich die ganzen Einstellungen der Buchungen in einer Kalenderwoche oder eines Platzes (6 Plätze x 52 Wochen) speichern muss. Denn wenn der Nutzer eine andere Kalenderwoche aus der Combobox auswählt, sollten wiederrum alle Infos der jeweiligen Kalenderwoche angezeigt werden. Für mich ist es nicht ganz ohne und daran komme ich nicht vorbei.

Danke & MfG.
 

Anhänge

  • gui.jpg
    gui.jpg
    68,8 KB · Aufrufe: 56
Hmm das ist doch aber gar kein so großes Problem. Du musst ja nicht alle Wochen und alle Plätze und was weiß ich speichern, das wäre ja krank. Du musst nur die Buchungen mit den jeweils benötigten Informationen (Platz, Woche, Tag, Uhrzeit) speichern, mehr nicht. Wenn ein Buchungszeitram keine Informationen hat, dann ist er eben frei.

Man muss sich ja nicht mehr Stress machen als nötig ;)
 

Neue Beiträge

Zurück