Klausur "OOAD" im SS 2009 - Hochschule Darmstadt
Klausur "OOAD" im SS 2009 - Hochschule Darmstadt
Klausur "OOAD" im SS 2009 - Hochschule Darmstadt
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
<strong>Klausur</strong> "OOAD" <strong>im</strong> <strong>SS</strong> <strong>2009</strong><br />
Prof. Dr. R. Hahn, Prof. Dr. W.Weber<br />
<strong>Klausur</strong> "OOAD" <strong>im</strong> <strong>SS</strong> <strong>2009</strong><br />
Name, Vorname: ……………………………………………………..<br />
Matrikel-Nr: ……………………………………………………..<br />
Bitte tragen Sie zuerst Ihren Namen und Ihre Matrikelnummer ein. Lesen Sie jeweils vor Erarbeitung<br />
der Lösung die ganze Aufgabenstellung durch. Halten Sie sich an den Standard der UML2 und zeichnen<br />
Sie möglichst vollständige Diagramme. Sie haben zur Lösung der Aufgaben 90 Minuten Zeit.<br />
Sie können die leeren Seiten als Schmierblatt verwenden – aber bitte streichen Sie falsche Lösungen<br />
durch, so dass die zu wertende Lösung eindeutig erkannt wird. Sie können auch die gegenüberliegenden<br />
Seiten beschreiben, verweisen Sie aber, falls die Lösung nicht direkt hinter der Aufgabenstellung<br />
steht, auf die Lösung (z. B. „siehe gegenüber“ oder „siehe S. 5“). Falls Sie noch zusätzliche Blätter<br />
benötigen, bekommen Sie welche – bitte verwenden Sie keine eigenen Blätter.<br />
Als Hilfsmittel ist lediglich ein von Hand beschriebenes DIN A4-Blatt zugelassen. Auf Ihrem Arbeitsplatz<br />
liegen nur die <strong>Klausur</strong>, Ihr selbst beschriebenes DINA4-Blatt und ein Stift. Alle anderen<br />
Dinge incl. Handys sind in die Taschen zu packen, die Taschen sind auf dem Boden abzustellen.<br />
Aufgabe 1 2 3 4 5 6 Summe Note<br />
Max.<br />
Punkte<br />
Erreichte<br />
Punkte<br />
5 10 8 10 12 15 60<br />
Aufgabe 1 (5 Punkte): Quiz<br />
Welche Aussagen sind richtig? Kreuzen Sie „richtig“ bzw. „falsch“ an. Richtige Antworten geben 0,5<br />
Punkte, falsche Antworten -0,5 Punkte und unbeantwortete Fragen keinen Punkt.<br />
Frage<br />
Eine Aggregation (manchmal auch „shared Aggregation“ genannt) stellt eine Beziehung<br />
zwischen einem Ganzen und mehreren Teilen dar, die dadurch charakterisiert<br />
ist, dass die Teile ebenfalls zerstört werden wenn das Ganze zerstört wird.<br />
Das UML-Klassendiagramm stellt die Interaktion zwischen Lebenslinien dar.<br />
In einem UML-Use Case-Diagramm kann auch mehr als ein Akteur an einem<br />
Anwendungsfall beteiligt sein.<br />
UML-Sequenzdiagramme werden zur Beschreibung von Verhalten verwendet.<br />
In einem UML Klassendiagramm ist ein mit „+“ markiertes Attribut öffentlich<br />
sichtbar.<br />
In UML Use-Case-Diagrammen wird die include-Beziehung dann verwendet,<br />
wenn das Verhalten eines Anwendungsfalls für einen anderen Anwendungsfall<br />
wiederverwendet werden soll.<br />
UML bedeutet „Unified Modelling Layer“.<br />
Wenn be<strong>im</strong> Forward-Engineering keine Fehlermeldung erscheint, dann entspricht<br />
das UML2 Modell den Anforderungen.<br />
Eine Komposition wird durch eine leere Raute dargestellt.<br />
Wenn in einem UML2 Klassendiagramm das Schlüsselwort {abstract} unter dem<br />
Klassennamen steht (oder der Klassenname kursiv geschrieben ist), dann kann von<br />
dieser Klasse keine Instanz erzeugt werden.<br />
10.07.<strong>2009</strong>, Seite 1/7<br />
Richtig Falsch<br />
x<br />
x<br />
x<br />
x<br />
x<br />
x<br />
x<br />
x<br />
x<br />
x
<strong>Klausur</strong> "OOAD" <strong>im</strong> <strong>SS</strong> <strong>2009</strong><br />
Prof. Dr. R. Hahn, Prof. Dr. W.Weber<br />
Aufgabe 2 (10 Punkte): Begriffe<br />
Erklären Sie die nachfolgenden Begriffe. Nennen Sie jeweils (möglichst genau) das Umfeld, in dem<br />
der Begriff auftritt (z.B. „Klassendiagramm“), und erläutern Sie kurz, was er bedeutet.<br />
Lösung: Kann in Skript nachgeschlagen werden.<br />
Attribut Umfeld:<br />
Erläuterung:<br />
Reverse Engineering Umfeld:<br />
Erläuterung:<br />
Assoziationsklasse Umfeld:<br />
Erläuterung:<br />
Leserichtung Umfeld:<br />
Erläuterung:<br />
Verallgemeinerung (Generalisierung) Umfeld:<br />
Erläuterung:<br />
10.07.<strong>2009</strong>, Seite 2/7
<strong>Klausur</strong> "OOAD" <strong>im</strong> <strong>SS</strong> <strong>2009</strong><br />
Prof. Dr. R. Hahn, Prof. Dr. W.Weber<br />
Aufgabe 3 (8 Punkte): Use Case Diagramm<br />
Erstellen Sie ein UML Use Case Diagramm zu folgenden Sachverhalt:<br />
Es soll ein Anwendungssystem zur Unterstützung der Geschäftsprozesse in einem<br />
Krankenhaus entwickelt werden.<br />
Das System soll folgende Aufgaben erledigen:<br />
− Herr Müller und Herr Maier seien in der Verwaltung angestellt.<br />
− Herr Müller soll Mitarbeiter einstellen und entlassen können. Sowohl Herr Müller als<br />
auch Herr Maier kann Patienten aufnehmen und entlassen.<br />
− Sowohl bei der Einstellung von Mitarbeitern, als auch bei der Aufnahme von Patienten<br />
müssen Name und Adresse erfasst werden. Um redundante Use-Case-Beschreibungen zu<br />
verhindern wird diese Tätigkeit in einen gesonderten Use-Case „ausgelagert“.<br />
− Falls der einzustellende Mitarbeiter bzw. der aufzunehmende Patient seinen Wohnsitz am<br />
Ort des Krankenhauses hat, wird geprüft, ob die angegebene Adresse am Wohnort existiert.<br />
Lagern Sie auch diesen Use-Case aus.<br />
Hinweise:<br />
− Beachten Sie: Aktoren werden mit Rollen bezeichnet!<br />
− Falls Conditions oder Extensionpoints existieren, geben Sie diese bitte an.<br />
eine Lösung:<br />
Personal-<br />
Sachbearbeiter<br />
Patientenaufnahme-<br />
Sachbearbeiter<br />
Mitarbeiter<br />
einstellen<br />
Mitarbeiter<br />
entlassen<br />
Patient<br />
aufnehmen<br />
Patient<br />
entlassen<br />
include<br />
include<br />
Name und<br />
Adr. erfassen<br />
Ext.P.: A.e<br />
extend<br />
Adresse<br />
prüfen<br />
10.07.<strong>2009</strong>, Seite 3/7<br />
{falls Wohnsitz == Krankenhaus-Ort}<br />
Ext.P:Ae
<strong>Klausur</strong> "OOAD" <strong>im</strong> <strong>SS</strong> <strong>2009</strong><br />
Prof. Dr. R. Hahn, Prof. Dr. W.Weber<br />
Aufgabe 4 (10 Punkte): Sequenzdiagramm<br />
Zeichnen Sie ein Sequenzdiagramm in UML 2, das den folgenden Ablauf darstellt.<br />
Anwendungsfall „Fernausleihe“<br />
Achtung: Sie sollen nicht den Sinn der Vorgaben interpretieren, sondern lediglich die<br />
Informationen ausdrücken!<br />
− Es gibt die Klassen „Warenkorb“, „BibliothekServer“ und „BibliothekClient“ und<br />
„Ausleihe“.<br />
− Der Benutzer wählt am „BibliothekClient“ das Buch „UML Glasklar“ für die Ausleihe<br />
aus.<br />
− Der BibliothekClient ruft nun bei dem „BibliothekServer“ die Methode „gibWarenkorb()“<br />
auf. Daraufhin erzeugt der BibliothekServer eine neue Instanz eines „Warenkorb“-Objekts<br />
und reicht diese an den BibliothekClient weiter.<br />
− Der BibliothekClient ruft bei dem Warenkorb nun die Methode hinzufügen(„UML<br />
Glasklar“) auf.<br />
− Anschließend ruft der BibliothekClient be<strong>im</strong> BibliothekServer die Methode „ausleihen()“<br />
mit dem Warenkorb auf. Daraufhin erzeugt der BibliothekServer eine neue Instanz<br />
von Ausleihe, zerstört das Warenkorb-Objekt und liefert an den BibliothekClient<br />
„ok“ zurück“.<br />
− Der BibliothekClient gibt dem Benutzer nun ebenfalls „ok“ zurück.<br />
10.07.<strong>2009</strong>, Seite 4/7
<strong>Klausur</strong> "OOAD" <strong>im</strong> <strong>SS</strong> <strong>2009</strong><br />
Prof. Dr. R. Hahn, Prof. Dr. W.Weber<br />
Lösen Sie bitte hier Aufgabe 5<br />
Use Case Name Prüfung der Frankierung eines Paketes<br />
Pr<strong>im</strong>ary Actor Paketsortierer<br />
Further Actors keine<br />
Stakeh & Inter Postunternehmen – hat Interesse an kostengünstiger Frankierungsprü-<br />
fung, ...<br />
Success Guar. Das Paket ist richtig frankiert oder mit einer Gebührennachberechnung<br />
Versehen.<br />
(und hat die Anlage verlassen)<br />
Min<strong>im</strong>al Guar. Alle Transaktionen wurden protokolliert<br />
Trigger Paket auf Förderband legen.<br />
Basic Course<br />
(Main Success Scenario)<br />
1. Paketsortierer legt ein Paket auf das Förderband.<br />
2. System misst Länge, Breite, Höhe und Gewicht.<br />
3. System liest die Frankierung.<br />
4. (System berechnet das Volumen.)<br />
5. System prüft, dass die Größe des Pakets und das Gewicht zur<br />
Frankierung passen.<br />
6. System schiebt Paket raus<br />
Alternative Courses 2a. Das Förderband ist nicht leer<br />
2a1. Das System stoppt die Anlage<br />
2a2. Das System lässt das Licht blinken<br />
2a3. Der Paketsortierer entfernt das Paket<br />
2a4. Das System lässt das Förderband wieder laufen<br />
2a5. Das System stoppt das Blinken des Lichts.<br />
2a6. abort<br />
5a. Wegen der Größe oder dem Gewicht ist zu wenig frankiert<br />
5a1. System schreibt eine Gebührennachberechnung<br />
5a2. System klebt Gebührennachberechnung automatisch auf das<br />
Paket<br />
5a3. Goto 6.<br />
10.07.<strong>2009</strong>, Seite 5/7
<strong>Klausur</strong> "OOAD" <strong>im</strong> <strong>SS</strong> <strong>2009</strong><br />
Prof. Dr. R. Hahn, Prof. Dr. W.Weber<br />
Aufgabe 5 (12 Punkte): Textuelle Beschreibung von Use Cases<br />
In einer Frankierprüfanlage soll geprüft werden, ob ein Paket entsprechend seiner Maße und<br />
seinem Gewicht frankiert ist. Diesen Use Case sollen Sie anhand des unten bereitgestellten<br />
Templates beschreiben.<br />
Technischer Ablauf:<br />
Die Frankierprüfanlage enthält ein Förderband, auf das ein Paket gelegt wird. Dieses Förderband<br />
transportiert das Paket an Sensoren vorbei, die Höhe, Breite, Länge und das Gewicht des<br />
Pakets feststellen. Außerdem wird über ein Lesegerät die Frankierung ausgelesen. Das System<br />
prüft an Hand der durch die Sensoren und Leser gewonnenen Angaben, ob richtig frankiert<br />
ist. Falls wegen zu großem Volumen oder zu hohem Gewicht zu wenig frankiert ist, wird<br />
eine Gebührennachberechnung geschrieben und automatisch auf das Paket geklebt. Nach der<br />
Prüfung verlassen die Pakete die Frankierprüfanlage.<br />
Aus technischen Gründen darf sich zum Zeitpunkt der Sensormessung nur ein einziges Paket<br />
in der Frankierprüfanlage befinden, d. h. der Bediener darf erst das nächste Paket auflegen,<br />
wenn das vorhergehende Paket vermessen wurde. Falls gegen diese Vorschrift verstoßen<br />
wird, bleibt das Förderband stehen und ein Blinklicht macht den Bediener darauf aufmerksam,<br />
dass das Paket wieder vom Förderband genommen werden muss. Erst wenn das neue<br />
Paket entfernt wurde, wird das Blinken beendet und das Förderband läuft weiter.<br />
10.07.<strong>2009</strong>, Seite 6/7
<strong>Klausur</strong> "OOAD" <strong>im</strong> <strong>SS</strong> <strong>2009</strong><br />
Prof. Dr. R. Hahn, Prof. Dr. W.Weber<br />
Aufgabe 6 (15 Punkte): Klassendiagramm<br />
Entwerfen Sie ein vollständiges Klassendiagramm.<br />
Allgemeine Infos zum Aufgabenumfeld:<br />
Sie entwickeln Software für ein Computer-Schachspiel. Ihre Aufgabe ist der Entwurf des<br />
Spielbretts mit den Figuren. Zeigen Sie bei Assoziationen die Richtung des Zugriffs durch<br />
Pfeile an<br />
Die folgenden Informationen sollen darstellt werden:<br />
Ein Schach-Spiel besteht aus einem Schachbrett und 2 Mannschaften. Das Schachbrett besteht<br />
aus 64 Feldern, die jeweils eine x- und eine y-Koordinate haben.<br />
Die Mannschaften unterscheiden sich durch die Farbe. Jede Mannschaft besteht aus insgesamt<br />
16 Figuren. Das sind 8 Bauern, 2 Türme, 2 Läufer, 2 Springer, 1 Dame und 1 König.<br />
Sorgen Sie dafür, dass die folgenden Informationen <strong>im</strong> Modell enthalten sind:<br />
− Jede Figur steht entweder auf einem Feld oder wurde bereits geschlagen<br />
− Jede Figur weiß, zu welcher Mannschaft sie gehört<br />
− Umgekehrt kennt auch jede Mannschaft ihre Figuren<br />
− Stellen Sie <strong>im</strong> Klassendiagramm dar, dass eine Figur nicht gleichzeitig z. B. Bauer und<br />
Läufer sein darf. Eine Figur ist entweder ein Bauer, eine Dame, ein Turm, oder...<br />
− Jedes Feld weiß, ob es durch eine Figur besetzt ist – und wenn ja mit welcher<br />
− Jede Figur soll eine Methode moveTo bieten, die es erlaubt die Figur auf ein anderes Zielfeld<br />
zu bewegen.<br />
Bemerkung zu Lösung: Statt<br />
müsste stehen.<br />
Bauer<br />
moveTo ()<br />
8<br />
Turm<br />
moveTo ()<br />
2<br />
Springer<br />
Schachbrett<br />
Name<br />
Feld<br />
int x<br />
int y<br />
moveTo ()<br />
2<br />
64<br />
Laeufer<br />
moveTo ()<br />
2<br />
10.07.<strong>2009</strong>, Seite 7/7<br />
Schachspiel<br />
0..1<br />
steht<br />
Dame<br />
0..1<br />
moveTo ()<br />
1<br />
Mannschaft<br />
Farbe<br />
2<br />
Figur {abstract}<br />
moveTo()<br />
1<br />
Koenig<br />
moveTo ()<br />
1