Lösungsvorschlag für Übungsblatt 6 Software Engineering 1 (WS

Werbung
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
Herunterladen