2014 oop angabe3 buchungsapplikation

Upload: andreea-gia

Post on 14-Oct-2015

18 views

Category:

Documents


1 download

TRANSCRIPT

  • Objektorientiertes Programmieren VU, SS 2014 LVA 384.061

    Institut fr Computertechnik Seite 1

    bungsbeispiel 3 fr die LVA Objektorientiertes Programmieren

    Deadline: 10.06.2014 !

    WICHTIG: Alle Studenten die ihr Beispiel nicht bis zum 10.06.2014, 24 Uhr am Institutsserver hochgeladen

    haben, knnen ihr Beispiel nicht abgeben. Diese Studenten haben in Folge nicht mehr die Mglichkeit, die

    bung der LVA im laufenden Semester erfolgreich abzuschlieen. Damit haben sie auch keine Mglichkeit,

    zur LVA-Prfung anzutreten und diese im SS 2013 abzuschlieen!

    Abgabe:

    Die Abgabegesprche fr das erste Beispiel finden am 11.06.2014 und am 12.06.2014 statt (jeweils zwischen 13:00

    und 17:00 Uhr: Den genauen Zeitpunkt knnen sie beim Upload auswhlen).

    Allgemeine bungsinformation

    Im Laufe des bungsteiles der LVA 384.061 Objektorientiertes Programmieren muss jeder Teilnehmer drei Beispiele ausarbeiten und abgeben. Zwei dieser drei Beispiel mssen positiv bewertet werden um die bung zu

    bestehen und damit die Mglichkeit zu erhalten, zur Abschlussprfung anzutreten. Weitere Informationen zu

    Vorlesung und bung finden sie im Web unter:

    http://www.ict.tuwien.ac.at/lva/384.061/

    Jeder Teilnehmer muss die Beispiele eigenstndig ausarbeiten. Bei der Abgabe jedes Beispiels gibt es ein kurzes

    Abgabegesprch mit einem Tutor oder Assistenten. Diese Abgabegesprche bestehen aus

    einem Test des Programms und Fragen dazu,

    der Durchfhrung kleiner nderungen am Programm,

    und theoretischen Fragen zu den jeweils in der bung behandelten Konzepten.

    Um ein Beispiel abzugeben mssen Sie ihre Quellcode-Dateien in einem *.zip Archiv zusammenfassen und dieses

    ber unser Upload Interface auf unseren Institutsserver hochladen. Bitte verwenden sie ausschlielich .zip-Dateien

    (z.B., bsp1.zip) und keine anderen Archivformate!

    Der Link zum Upload Interface ist

    http://www.ict.tuwien.ac.at/lva/384.061/?ue_upload=

    Verwenden sie keine packages um ihren Code zu strukturieren. Zum Zeitpunkt, wenn Sie ihr Beispiel

    hochladen, muss ihr Code auf der Kommandozeile kompilieren (d.h., ohne IDE). Kommentieren Sie Ihre

    Klassen und Methoden. Vergessen sie insbesondere nicht ihren Namen und ihre Matrikelnummer am Beginn jeder

    Klasse anzufhren. Halten sie sich an die Java Code Conventions,

    http://www.oracle.com/technetwork/java/codeconv-138413.html.

    Die Software fr die LVA ist die Java Standard Edition (JDK Version 1.7). Diese finden sie unter

    http://www.oracle.com/technetwork/java/javase/downloads/index.html.

    Inhaltliche Fragen zu den Beispielen knnen sie im OOP Forum im TISS (http://tiss.tuwien.ac.at) posten. Hier

    erhalten Sie am schnellsten Hilfe, da ihre Fragen durch andere Studierende, Tutoren oder Assistenten beantwortet

    werden knnen.

    Organisatorische Fragen zur LVA knnen Sie direkt an die Assistenten unter [email protected] richten.

    Als Untersttzung fr die Programmierung der Beispiele empfehlen wir das Java Tutorial von Sun:

    http://docs.oracle.com/javase/tutorial/

  • Objektorientiertes Programmieren VU, SS 2014 LVA 384.061

    Institut fr Computertechnik Seite 2

    Aufgabe: Implementierung einer Flugbuchungssoftware

    Ziel:

    bung zum Implementieren basierend auf vorgegebenen Sequenz- und Klassendiagrammen unter Benutzung von

    Exception Handling und Polymorphismus.

    Aufgabenstellung:

    Anhand eines gegebenen Designs fr ein Buchungssystem einer Fluglinie soll eine entsprechende Implementierung

    in Java erfolgen. Das Design ist durch Klassen- und Sequenzdiagramme in UML spezifiziert.

    Die gegebenen Klassen und deren Methoden sind nicht nur als Anregung zu verstehen implementieren und verwenden Sie genau diese Klassen und Methoden entsprechend! Sie knnen auch weitere Klassen und

    Methoden hinzufgen, sollten Sie welche bentigen. Implementieren Sie alle Vorgnge gem den angegebenen Sequenzdiagramme! Die Strichmnnchen in den Sequenzdiagrammen reprsentieren einen Benutzer, der Aufrufe ber das Userinterface initiiert.

    Ein Grundgerst der fr das Beispiel notwendigen Java-Dateien finden Sie im gezippten Paket gemeinsam mit

    dieser Angabe vervollstndigen Sie die Klassen und sorgen Sie dafr, dass Methoden sinnvolle Rckgabewerte liefern. Benutzen Sie Exception Handling, um ihr Programm absturzsicher zu machen!

    Unsere Templates stellen Ihnen einen Basisumfang an Testdaten zur Verfgung. Sie knnen diese nach Belieben

    erweitern! Software-Anforderungen:

    Eine einfache Version eines Buchungssystems soll folgende Funktionalitt erfllen:

    Eintragen eines Flugzeugs

    Eintragen eines Passagiers

    Eintragen eines Fluges

    Buchung eines Fluges

    Anzeigen aller Buchungen eines Fluges

    Diese Funktionen sollte der Benutzer ber ein Textmen auswhlen knnen.

    Beschreibung des Software Design: Beschreibung der Klassen

    Controller: Diese Klasse enthlt die main(String[] args) Methode und verwaltet alle Daten Ihrer

    Applikation, deren Flugzeuge (Vektor airplanes), Flge (Vektor flights), Tickets

    (Vektor tickets), Angestellte (Vektor employees) und Passagiere (Vektor

    passengers).

    Airplane: Diese Klasse reprsentiert ein Flugzeug. Jedes Flugzeug hat Name (name), Typ (typ) und

    eine gewisse Anzahl von Sitzpltzen (seats).

    Flight: Ein Flug hat die Attribute flightNumber, origin, destination, flightDate,

    departureTime, arrivalTime. Auerdem referenziert diese Klasse Tickets.

    Address: Eine Adresse enthlt die Attribute street, zipCode, city und state.

    Person: Diese Klasse reprsentiert eine Person mit den Attributen name und birthday.

    Passenger: Diese Klasse erweitert Person und enthlt die Attribute status und id.

  • Objektorientiertes Programmieren VU, SS 2014 LVA 384.061

    Institut fr Computertechnik Seite 3

    Employee: Diese Klasse erweitert Person und enthlt die Attribute contractStart, salary und

    id.

    Steward: Diese Klasse erweitert Person.

    Pilot: Diese Klasse erweitert Person und enthlt die Attribute planetypes und status.

    Ticket: Diese Klasse reprsentiert ein Ticket, die sich auf einen bestimmten Passagier (Passenger)

    und den gebuchten Flug (Flight) bezieht. Zustzlich enthlt diese Klasse die Attribute

    price und number.

    UserInterface: Dieses stellt Methoden fr die Interaktion mit dem Benutzer bereit. Das User Interface soll

    textbasiert sein. ber das Men sollen folgende Punkte ausgewhlt werden knnen:

    1 Add an airplane 2 Add a passenger 3 Add a flight 4 Book a flight 5 Display flight information 6 EXIT

    Nach einer abgeschlossenen Aktion des Benutzers soll das Men erneut angezeigt werden

    (Ausnahme: Option 6 - EXIT).

    Anmerkung:

    Eine Beschreibung der Methoden der jeweiligen Klassen finden Sie als Kommentar in den entsprechenden Java-

    Dateien (gezippt gemeinsam mit dieser Angabe).

  • Objektorientiertes Programmieren VU, SS 2014 LVA 384.061

    Institut fr Computertechnik Seite 4

    Klassendiagramm

    Gerichtete Assoziationen (Assoziationen mit einem Pfeil) im Klassendiagramm bedeuten, dass jene Klasse beim Pfeilursprung eine Referenz (in unserer Implementierung in einer

    gekapselten Instanzvariable gespeichert) zur Klasse am Pfeilende besitzt. Fr mgliche Kardinalitten grer als eins (0..*) wird in unserer Implementierung die Referenz in einem Listentyp

    (z.B. Vector) gespeichert.

    Abbildung 1: Klassendiagramm

  • Objektorientiertes Programmieren VU, SS 2014 LVA 384.061

    Institut fr Computertechnik Seite 5

    Beschreibung der Vorgnge: Option auswhlen:

    Der Benutzer whlt eine Operation des textbasierten Mens aus. Implementieren Sie diese Interaktion gem der

    Spezifikation in Abbildung 2.

    Vorbedingung: Das System luft.

    Nachbedingung: Der Benutzer hat eine Operation ausgewhlt.

    Abbildung 2: Sequenzdiagramm fr den Vorgang Operation auswhlen

  • Objektorientiertes Programmieren VU, SS 2014 LVA 384.061

    Institut fr Computertechnik Seite 6

    Flugzeug eintragen (Add an airplane):

    Dem Buchungssystem wird ein neues Flugzeug hinzugefgt (zuweisen von Flugzeugtyp, Name und Anzahl der

    Sitzpltze), welches spter einem Flug zugeordnet wird. Implementieren Sie diese Interaktion gem der

    Spezifikation in Abbildung 3.

    Nachbedingung: Ein neues Flugzeug wurde angelegt.

    Abbildung 3: Sequenzdiagramm fr den Vorgang Flugzeug eintragen

  • Objektorientiertes Programmieren VU, SS 2014 LVA 384.061

    Institut fr Computertechnik Seite 7

    Passagier eintragen (Add a passenger):

    Dem Buchungssystem wird ein neuer Passagier hinzugefgt. Implementieren Sie diese Interaktion gem der

    Spezifikation in Abbildung 4.

    Nachbedingung: Ein neuer Passagier wurde angelegt.

    Abbildung 4: Sequenzdiagramm fr den Vorgang Passagier eintragen

  • Objektorientiertes Programmieren VU, SS 2014 LVA 384.061

    Institut fr Computertechnik Seite 8

    Flug eintragen (Add a flight):

    Dem Buchungssystem wird ein Flug hinzugefgt. Implementieren Sie diese Interaktion gem der Spezifikation in

    Abbildung 5.

    Nachbedingung: Ein neuer Flug wurde angelegt.

    Abbildung 5 - Sequenzdiagramm fr den Vorgang "Flug eintragen"

  • Objektorientiertes Programmieren VU, SS 2014 LVA 384.061

    Institut fr Computertechnik Seite 9

    Flug buchen (book a flight):

    Ein Flug fr einen bestimmten Kunden wird gebucht (d.h., ein Ticket erstellt). Aus Listen whlt der Benutzer einen

    Kunden sowie einen Flug. Vor dem Anlegen einer neuen Buchung muss geprft werden, ob der Flug berbucht ist.

    Dies knnen Sie in der Methode Flight.isOverbooked() lsen, indem Sie prfen, ob die Anzahl der

    bestehenden Buchungen (java.util.Vector stellt zur Abfrage die Methode size() zur Verfgung) kleiner

    als die Anzahl der Sitzpltze ist. Implementieren Sie diese Interaktion gem der Spezifikation in Abbildung 6.

    Vorbedingungen: Vor dem Anlegen eines neuen Tickets mssen Kunden und Flge bereits existieren.

    Nachbedingung: Eine neue Buchung wurde angelegt (d.h., ein Ticket erstellt).

    Abbildung 6: Sequenzdiagramm fr den Vorgang Flug buchen

  • Objektorientiertes Programmieren VU, SS 2014 LVA 384.061

    Institut fr Computertechnik Seite 10

    Anzeigen von Fluginformationen (Display flight information):

    Ein bestimmter Flug (sowie alle verfgbaren Flugdaten) und alle dazugehrigen Buchungen (Namen der Kunden)

    werden angezeigt. berschreiben Sie hierfr die toString() Methode in der Klasse Flight und implemen-

    tieren Sie diese Interaktion gem der Spezifikation in Abbildung 7.

    Vorbedingungen: Es mssen bereits Flge und Buchungen existieren.

    Nachbedingung: Flugdaten wurden ausgegeben.

    Abbildung 7: Sequenzdiagramm fr den Vorgang Fluginformationen anzeigen