tutorials.de Buch-Aktion 05/2012
Like Tree8Danke
  • 1 Beitrag von sheel
  • 1 Beitrag von j2se
  • 1 Beitrag von Lime
  • 1 Beitrag von suchong
  • 1 Beitrag von Lime
  • 1 Beitrag von suchong
  • 1 Beitrag von Akeshihiro
  • 1 Beitrag von suchong
ERLEDIGT
NEIN
ANTWORTEN
11
ZUGRIFFE
1082
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    freundchen freundchen ist offline Grünschnabel
    Registriert seit
    Nov 2011
    Beiträge
    4
    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.
    Miniaturansicht angehängter Grafiken Miniaturansicht angehängter Grafiken Denkanstöße für kleines Programm für Reservierung-struktur.jpg  
     

  2. #2
    Avatar von sheel
    sheel sheel ist gerade online Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.502
    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.
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    
    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ß
    freundchen bedankt sich. 
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  3. #3
    Avatar von j2se
    j2se j2se ist offline Mitglied Silber
    Registriert seit
    Oct 2011
    Beiträge
    94
    Blog-Einträge
    1
    Als Denkanstoss: Von der Problemstellung ist ein Model-View-Controller Design möglich. Für eine Einführung siehe hier: http://www.oracle.com/technetwork/ar...vc-136693.html
    Geändert von j2se (12.11.11 um 12:08 Uhr)
    freundchen bedankt sich. 

  4. #4
    Avatar von Lime
    Lime Lime ist offline frisch fruchtig
    Registriert seit
    Jul 2011
    Beiträge
    369
    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ß
    freundchen bedankt sich. 

  5. #5
    Avatar von suchong
    suchong suchong ist offline Mitglied
    Registriert seit
    Oct 2011
    Beiträge
    14
    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.
    freundchen bedankt sich. 

  6. #6
    Avatar von Lime
    Lime Lime ist offline frisch fruchtig
    Registriert seit
    Jul 2011
    Beiträge
    369
    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ß
    freundchen bedankt sich. 

  7. #7
    freundchen freundchen ist offline Grünschnabel
    Registriert seit
    Nov 2011
    Beiträge
    4
    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ß
     

  8. #8
    Avatar von suchong
    suchong suchong ist offline Mitglied
    Registriert seit
    Oct 2011
    Beiträge
    14
    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.
    Geändert von suchong (11.12.11 um 04:31 Uhr)
    freundchen bedankt sich. 

  9. #9
    freundchen freundchen ist offline Grünschnabel
    Registriert seit
    Nov 2011
    Beiträge
    4
    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.
    Miniaturansicht angehängter Grafiken Miniaturansicht angehängter Grafiken Denkanstöße für kleines Programm für Reservierung-gui.jpg  
     

  10. #10
    Avatar von Akeshihiro
    Akeshihiro Akeshihiro ist offline Mitglied Platin
    Registriert seit
    Aug 2008
    Ort
    Kirchlengern (NRW)
    Beiträge
    647
    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
    freundchen bedankt sich. 
    Man sagt, das Schwert eines Samurai sei seine Seele ...

    Mit den Beiträgen ist es wie mit Schwertern: Je besser die Rohstoffe sind und je öfter man diese bearbeitet, desto hochwertiger sind sie.

    Das Schmieden ist eine Kunst; Das Schreiben auch ;)

  11. #11
    Avatar von suchong
    suchong suchong ist offline Mitglied
    Registriert seit
    Oct 2011
    Beiträge
    14
    Zitat Zitat von freundchen Beitrag anzeigen
    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.
    Das sieht doch gut aus. Was die Benutzerfreundlichkeit betrifft, würde ich mir die Angabe des Zeitraumes der Kalenderwoche als Datum wünschen, z.B. 5. - 11. Dezember 2011.

    Zitat Zitat von freundchen Beitrag anzeigen
    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.
    Weshalb sollte das ein Problem sein? Welche Datenstruktur hast Du für die Speicherung der Belegungsdaten gewählt?
    freundchen bedankt sich. 

  12. #12
    freundchen freundchen ist offline Grünschnabel
    Registriert seit
    Nov 2011
    Beiträge
    4
    Danke euch für die Antworten.

    Kurz zur Datenstruktur:
    Wie gesagt gibt es 2 Klassen (Verwaltungsfenster und Belegungsfenster).

    Der Benutzer bekommt anfangs Verwaltungsfenster (siehe Bild unten). Nach der Wahl der Plätze und das Betätigen d. Buttons "Belegungsplan ausgeben" wird ein neues Belegungsfenster ausgegeben [....fenster = new Belegungsfenster();....] und das Belegungsplan (siehe Bild meiner letzten Message) erscheint.

    Bspw. für 6 Plätze habe ich in der Klasse Belegungsfenster ein 4-dimensionales Stringfeld erstellt: 6 Plätze x 52 Wochen x 6 Tage x 7 Blöcke/Einheiten = 13104 Namen, die in den Buttons gespeichert werden (wenn das ganze Jahr ausgebucht ist). Der Hacken: dieses Feld ist in der Klasse Belegungsfenster. D.h. schließe ich d. Belegungsplan, ist alles weg. Demzufolge ist keine Speicherung vorhanden und genau danach suche ich.

    Ich bin gerade dabei, eine Möglichkeit zu finden, den Stringinhalt dieses Feldes (eigentlich sind das nur die Namen der Reservierungspersonen) in einer Textdatei des Typs File zu speichern bzw. zu laden (Ich kann mir aber nicht vorstellen, dass das eine gute Programmierung ist, da bin ich mir 100% sicher

    Noch besser wäre es pro Kalenderwoche und Platz eine Instanz der Klasse Belegungsfenster zu erzeugen. Die einzelnen Instanzen werden als ganze Einheiten geladen bzw. geändert/gespeichert. Wenn ich nur wüßte wie....


    @ suchong:

    das mit dem Datum ist ein guter Tipp, lässt sich denk ich auch einfach machen.

    Danke und MfG
    Miniaturansicht angehängter Grafiken Miniaturansicht angehängter Grafiken Denkanstöße für kleines Programm für Reservierung-verwaltung.jpg  
     

Ähnliche Themen

  1. Kleines DTP-Programm
    Von henkhell im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 22.03.09, 16:15
  2. kleines PRogramm
    Von green_phanta im Forum Flash Plattform
    Antworten: 10
    Letzter Beitrag: 30.11.07, 09:42
  3. Antworten: 4
    Letzter Beitrag: 09.10.07, 13:02
  4. Ich brauche Denkanstöße!
    Von PatMor im Forum PHP
    Antworten: 5
    Letzter Beitrag: 14.02.07, 20:37
  5. kleines 3D-Programm
    Von Jan-Frederik Stieler im Forum Blender
    Antworten: 1
    Letzter Beitrag: 30.11.04, 10:52