OOP Ticketsystem programmieren

sinso01

Neues Mitglied
Guten Tag,
Ich möchte im Moment gerne ein (simples) Flugticketsystem in Java programmieren. Dieses Projekt soll mit OOP realisiert werden. Ich habe im Moment einen Denk-Fehler bzw. weiß nicht genau was hier bez. OOP die beste Lösung ist.
Grundsätzlich soll das Programm im ersten Anlauf bestehen aus diesen Klassen:
Passagier(Vorname,Nachname)
Flug(Airline,Datum,Nummer,Route)
Route(Datum,source,destination)
Eine J-Unit-Testklasse

So, nun habe ich mir überlegt, neben den gettern+settern natürlich das die Klasse Passagier eine Methode bucheFlug(Datum,von,nach) hat. Nun muss ich überprüfen ob es in der Datenbank(oder in meinem Fall in einer simplen Liste) einen Flug an diesem Datum und von diesem Ort an den Zielort gibt. Wenn ja, soll der Passagier in die PassagierListe des Flugs aufgenommen werden.

Jetzt habe ich hier das Problem: Damit ich in der Methode bucheFlug prüfen kann ob ein Flug + Route existiert muss ich dort doch ein neues FlugObjekt erzeugen damit ich prüfen kann ob der Flug existiert(die Route-Klasse steht nur mit dem Flug in Beziehung und in der Flug-Klasse gäbe es eine Methode wie: checkRoute() damit ich auf das Routen-Objekt(Liste von Routen) abfragen kann.). Das kann so aber nicht funktionieren oder? Dazu müsste ich ein Flugobjekt erstellen(und dazu muss ich schon alles angeben(Airline,Datum,Route), und das will ich ja erst gerade prüfen ob es das überhaupt gibt damit ich danach sagen kann: Flug erfolgreich gebucht oder Kein Flug vorhanden.

Könnte mir jemand sagen ob ich vom Gedanken falsch bin bzw. wie ich die Methode bucheFlug am besten umsetzen könnte?
 
Ich würde zusätzlich zu deinen Klassen eine Klasse "Flughafen" oä nutzen, darüber kann dann sie Suche nach Flügen und auch das Buchen derselben stattfinden.

checkRoute in der Flug-Klasse macht ja nicht viel Sinn - warum sollte denn ein Flug prüfen können, ob Flüge auf einer anderen Route stattfinden 😉
 
Ich verstehe nicht, warum du ein Flugobjekt zum suchen nach einem Flug brauchst. Wenn du mich fragst, ist genau das der Fehler.

EDIT:
Eine Testklasse? Wenn du das mit dem Testen ernst meinst, brauchst du für jede Klasse, welche mehr macht als Properties getten und setten, eine eigene Testklasse.
 
So, nun habe ich mir überlegt, neben den gettern+settern natürlich das die Klasse Passagier eine Methode bucheFlug(Datum,von,nach) hat.
Ich finde es naheliegender, Flug eine Buchungsmethode zu geben. Dann kann man nur Flüge buchen, die es gibt und es sollte keine Flüge geben können, die keine Route haben.
Route(Datum,source,destination)
Mir leuchtet nicht ein, warum Route ein Datum hat.
 
Deine Hauptklasse, in der Regel ist das halt Main, muss natürlich eine Liste aller Flüge halten. Sonst wird das nichts.

Wenn du diese Liste hast, kannst du diese auch an die Klassen weitergeben die diese brauchen.

Den Rest finde ich ok so.

Gruß

Claus

@Meniskusschaden ich denke nicht das eine Route 24/7 geflogen wird sondern z.b. Nur montags um 11.30. dafür ein Datum zu nehmen kann sinnvoll sein muss es aber nicht. Je nachdem wie gerne man mit Daten rum bastelt.
 
Hallo,
Danke für die Antworten!
Ich habe hier das Klassendiagramm angehängt wie ich es mir im Moment vorstelle(Hier ist auch der Airport enthalten).

Nur nochmal kurz erklärt wie ich mir das System vorstelle und die Frage ob das so zu realisieren ist.
Generell möchte ich hier eine JUnit-Testklasse schreiben welche die Funktionalität des Systems prüft, das heißt:
Ich erzeuge im Test einen Passagier. Mit diesem Passagier-Objekt rufe ich die Methode bookFlight mit zB München-Frankfurt 01.05.2017 auf. Nun prüfe ich, ob eine Route an diesem Datum existiert(Der Flug hat 1 Route(wenn existiert) und in der getRoutes() von der Route-Klasse soll geprüft werden ob eine Route existiert), wenn ja, gebe ich die Meldung - Flug OK zurück und setze den Passagier auf die Passagierliste des Flug-Objekts. Wenn es keine Route gibt, erscheint eine Fehlermeldung.
Ich mache das zb mit 3 Passagierobjekten und prüfe nachher ob die Anzahl der Passagierliste 3 entspricht.

Nach wie vor weiß ich noch nicht wie ich das am besten starte. Wenn ich die Methode bookFlight(..) beim Passagier lasse muss ich irg wie überprüfen können ob ein Flug mit den Daten existiert oder ich einen Fehler retourniere. Und das Prüfen ob ein Flug existiert kann ich nur über die Route, die abgefragt werden muss.
Den Passagier direkt mit der Route-Klasse zu verbinden macht doch wahrscheinlich auch keinen Sinn nehme ich an.
 

Anhänge

  • FlightSystem.png
    FlightSystem.png
    16,8 KB · Aufrufe: 67
Wie schon gesagt, verknüpf das ganze über den Airport (oder wenn man noch weiter abstrahiert, erstell einen BuchungsService, der alle Airports kennt).
Stell dir vor, wie du es machst, wenn du einen echten Flug buchst, du suchst ja nicht ein Flugzeug, und fragst dessen Piloten, sondern nutzt irgendeine übergeordnete Instanz.

Der Airport kann dabei durchaus auch der bookFlight-Methode übergeben werden.
 

Neue Themen


Zurück
Oben