Prof. Ina Schaefer Institut für Softwaretechnik und Fahrzeuginformatik TU Braunschweig Lösungsvorschlag für Übungsblatt 6 Software Engineering 1 (WS 2012/13) Ausgabe: Abgabe: Aufgabe 1 12. Januar 2013 25. Januar 2013 UML Round-Trip Engineering (10P) Installieren Sie für diese Aufgabe das Eclipse Plug-In “UML-Lab” oder nutzen Sie die komplette UML-Lab-EclipseUmgebung https://www.uml-lab.com. Folgende Java-Quelldateien sind für die Bearbeitung der Aufgabe nötig: https://www.isf.cs.tu-bs.de/cms/teaching/2012w/se1/roundtrip.zip. a) Erstellen Sie ein Klassendiagramm zu den Java-Klassen User.java,PlanetenComments.java und Permission.java. Beschreiben Sie den Zugriff auf die Attribute der Kommentar-Klasse. Verändern Sie den JavaCode und das Klassendiagramm so, dass der Zugriff nicht mehr möglich ist. Lösungsvorschlag: Abbildung 1 Abbildung 1: Roundtrip a b) Zur weiteren Beschreibung der Planeten erweitern Sie nun das System mit dem Package de.isf.se1.mir.planeten.associations und schreiben Sie die nötigen Java-Klassen, die dem folgenden Klassendiagramm entsprechen: Lösungsvorschlag: Abbildung 2 Abbildung 2: Roundtrip b c) Ihr Kunde hat sich entschieden doch noch Sehenswürdigkeiten auf den einzelnen Planeten mit in das System zu pflegen. Erweitern Sie die PLANET-Klasse um mögliche Vererbungsklassen, die im Package de.isf.se1.mir.planeten.inheritance des Quellcodes zu finden sind. Erstellen Sie zu der PlanetenKlasse und ihren Vererbungsklassen ein Diagramm. Lösungsvorschlag: Abbildung 3 Abbildung 3: Roundtrip c d) Fügen Sie dem Interface Building die 3 öffentlichen Attribute zip:int, street:String und streetNr:int hinzu. Die Erweiterung soll sowohl im Klassendiagramm als auch in dem Quellcode erstellt werden. Beachten Sie die Vererbung der Attribute. Lösungsvorschlag: Abbildung 4 Abbildung 4: Roundtrip d Lösungsvorschlag für die Implementierung: Eine mögliche Implementierung des Quellcodes und der Diagramme können Sie hier als Eclipse-Projekte herunterladen: https://www.isf.cs.tu-bs.de/cms/teaching/2012w/se1/roundtrip_solution.zip. Aufgabe 2 Wiederholung: Zustandsdiagramme (14P) Lesen Sie genau den Text und setzen sie nur solche Zustände um, wie in der Aufgabenstellung gegeben. Hinweis: Hierarchische Zustände bedenken. a) Modellieren sie eine Lichtschaltung als Zustandsdiagramm. Im Startzustand ist die Lampe aus. Schaltet man das Licht an, geht die Lampe im gedimmten Zustand an. Dimmt man die Lampe heller, wird der Zustand Hell erreicht. Dimmt man die Lampe schwacher, wird der Zustand Gedimmt erreicht. Das Licht kann, egal ob gedimmt oder hell, ausgeschaltet werden. (5 Punkte) Lösungsvorschlag: Abbildung 5 Licht_an Lampe_aus Licht_aus Lampe_An Gedimmt heller_dimmen Hell schwacher_dimmen Abbildung 5: Statechart Lichtschaltung b) Beschreiben Sie das Verhalten eines Anrufbeantworters mit Hilfe eines UML-Statecharts. Bitte benutzen sie in Ihrer Lösung die folgenden Abkürzungen: Ereignisse: • Anruf kommt an (AK) • Anrufer legt auf (AL) • Knopf zur Wiedergabe drücken (WD) • Stopp- Knopf drücken (SD) Bedingungen: • gespeicherte Nachricht < max (<max) • gespeicherte Nachricht = max (=max) • mindestens eine Nachricht gespeichert (EN) • keine Nachricht gespeichert (KN) • alle Nachrichten abgespielt (AN) Aktionen: • Anruf annehmen (AA) • Ansage 1 abspielen (A1) • Ansage 2 abspielen (A2) • Aufnahme starten (AS) • Verbindung trennen (VT) • gespeicherte Nachrichten abspielen (NA) • Wiedergabe stoppen (WS) b.1) Modellieren Sie das folgende Verhalten des Anrufbeantworters: „Der Anrufbeantworter wartet auf Anrufe. Wenn ein Anruf ankommt, wird der Anruf angenommen. Danach wird entweder Ansage 1 oder Ansage 2 abgespielt: Wenn noch nicht die maximale Anzahl an Nachrichten gespeichert ist, wird Ansage 1 abgespielt. Wenn die maximale Anzahl an Nachrichten gespeichert ist, wird Ansage 2 abgespielt. Nach dem Ende von Ansage 1 wird die Aufnahme gestartet. Wenn danach der Anrufer auflegt, wird die Verbindung getrennt. Nach dem Ende von Ansage 2 wird die Verbindung ohne Aufnahme getrennt.“ (4 Punkte) Lösungsvorschlag: Abbildung 6 Anrufbeantworter a wartet AK/AA Anruf angenommen [<max]/A1 [=max]/A2 /VT Ansage 2 abgespielt Ansage 1 abgespielt /AS Aufnahme gestartet AL/VT Abbildung 6: Statechart Anrufbeantworter a b.2) Modellieren Sie möglichst elegant, dass der Anrufer jederzeit, nachdem der Anrufbeantworter den Anruf angenommen hat, auflegen kann und die Verbindung getrennt wird. (2 Punkte) Lösungsvorschlag: Abbildung 7 b.3) Modellieren Sie zusätzlich das folgende Verhalten: „ Wenn am Anrufbeantworter der Knopf zur Wiedergabe gedrückt wird und mindestens eine Nachricht gespeichert ist, werden die gespeicherten Nachrichten abgespielt. Wenn der Knopf gedrückt wird und keine Nachricht gespeichert ist, führt der Anrufbeantworter keine Aktion aus. Während der Wiedergabe der gespeicherten Nachrichten kann der Stopp-Knopf gedrückt werden und die Wiedergabe wird gestoppt. Wenn alle Nachrichten abgespielt worden sind, wird die Wiedergabe ebenfalls gestoppt.“ (3 Punkte) Lösungsvorschlag: Abbildung 8 Anrufbeantworter b AK/AA wartet Anruf angenommen AL/VT [<max]/A1 [=max]/A2 /VT Ansage 1 abgespielt /AS Ansage 2 abgespielt Aufnahme gestartet Abbildung 7: Statechart Anrufbeantworter b Anrufbeantworter c WD[KN]/ AK/AA wartet AL/VT [AN]/WS Anruf angenommen [<max]/A1 [=max]/A2 Ansage 1 abgespielt /AS SD/WS WD[EN]/NA /VT Wiedergabe Ansage 2 abgespielt Abbildung 8: Statechart Anrufbeantworter c Aufnahme gestartet