Übungsblätter 1-13, 2014, Aufgaben und Lösungen.pdf PDF

Title Übungsblätter 1-13, 2014, Aufgaben und Lösungen.pdf
Course Softwaretechnik
Institution Technische Universität Dortmund
Pages 36
File Size 1.6 MB
File Type PDF
Total Downloads 85
Total Views 144

Summary

Übungsblätter 1-13, 2014, Aufgaben und Lösungen...


Description

technische universität dortmund

Fakultät für Informatik Modul Softwareentwicklung Übung Softwaretechnik Sommersemester 2014

Übungsblatt 1 – Lösungen Ausgabe: 16.4.2014, Bearbeitung in den Übungen: 22.4.-28.4.2014

Fragen: – Welche Bedeutung besitzt die Pfeilspitze einer Assoziation? Die Pfeilspitze gibt an, dass ein Objekt dieser Klasse über die Beziehung erreichbar sein muss. – Warum darf eine Assoziation an ihren Enden unterschiedliche Angaben zur Multiplizität besitzen? Die Multiplizität gibt an, wie viele Objekte der Klasse ein Objekt am anderen Ende der Assoziation kennen darf bzw. muss. – Wie viele Objekte einer Assoziationsklasse muss es mindestens geben? Ein Objekt der Assoziationsklasse gibt es für jede Verbindung zwischen Objekten der beiden durch die Assoziation verbundenen Klassen. Die Zahl der möglichen Verbindungen wird durch die an den Enden der Assoziation angegebenen Multiplizitäten vorgegeben auf mindestens das Produkt der beiden minimalen Werte.

Aufgabe 1 Klassendiagramm Gegeben ist eine JAVA-Klasse mit den folgenden Attributen. public class Kunde { private String name; private String[] vornamen; private Anschrift Rechnungsadresse; private Anschrift Lieferadresse; private String email; private int kundennummer; private java.util.List wunschzettel; private java.util.List bestellung; } Zeichnen Sie ein Klassendiagramm, das die durch den Programmtext beschriebenen Zusammenhänge – soweit möglich durch graphische Elemente – modelliert. Auch die Klassen der Java-Bibliothek sollen durch Symbole dargestellt werden. Kunde -Kundennummer: int

1 Name

String

* Vorname 1 Email 1 Wunschzettel 1 Bestellung

Lieferadresse

«interface» Artikelliste

«bind»Artikel>

Rechnungsadresse

T «interface» List

Artikel

Anschrift

Aufgabe 2 Klassendiagramm Modellieren Sie die folgende Situation als Klassendiagramm: Fußballmannschaften einer Liga bestreiten während einer Meisterschaftsrunde Spiele gegen andere Mannschaften. Dabei werden in jeder Mannschaft Spieler für einen bestimmten Zeitraum (in Minuten) eingesetzt, die dabei eventuell Tore schießen. Die Modellierung soll es ermöglichen, festzustellen, welcher Spieler in welchem Spiel wie lange auf dem Feld war und wie viele Tore geschossen hat. Ebenso soll es möglich sein, für jede Mannschaft festzustellen, gegen welche Mannschaft welche Ergebnisse erzielt wurden.

technische universität dortmund

Fakultät für Informatik Modul Softwareentwicklung Übung Softwaretechnik Sommersemester 2014

Liga Saison -Spieljahr * 2

Mannschaft

*

Spiel

1

*

*

Spieler

nimmt teil

*

-Minuten: int -Tore: int

Aufgabe 3 Objektdiagramme Gegeben sind die folgenden beiden Klassendiagramme. Geben Sie für jedes Klassendiagramm ein Objektdiagramm an, das genau fünf Objekte enthält, von denen mindestens eines zur Klasse X gehört. a)

A

1

1

b)

X

*

A

*

1

1 1

B

*

2

0..1

2

C

B

1

1

C

die Lösung zu b) ist eindeutig:

zwei Lösungen sind für a) möglich:

:X

X 1

:A

:C

:B

:C

:B

:X :B

:C

:B

:X

:A

:X

:A

:B

technische universität dortmund

Fakultät für Informatik Modul Softwareentwicklung Übung Softwaretechnik Sommersemester 2014

Übungsblatt 2 Lösungen Ausgabe: 23.4.2014, Bearbeitung in den Übungen: 28.4.-2.5.2014

Fragen: – Macht es einen Unterschied, ob an einem Assoziationsende keine Angabe oder die Mulitplizität * steht? Ein Stern bedeutet »0 ... beliebig viele«, definiert also explizit, dass bei der Konzeption beliebig viele Objekte erlaubt sein müssen. Keine Angabe bedeutet »unbestimmt«, legt also erst einmal gar nichts fest und zeigt mangelndes Interesse oder mangelndes Wissen, um eine Definition angeben zu können. Unbestimmte Angaben müssen irgendwann im Laufe der Entwicklung präzisiert werden zu einzelnen Werten wie »1«, Bereichen »0..4« oder eventuell auch zu »*«. – Gibt es sinnvolle Beispiele für ein explizites Verbieten der Navigation in eine Richtung einer Assoziation? Bei einer konzeptionellen Modellierung kann so Vertraulichkeit von Daten ausgedrückt werden, beispielsweise wenn zu einem Namen zwar dessen Telefonnummer ermittelt werden können soll, aber die inverse Suche ausgeschlossen sein soll. (Der Pfeil garantiert nur Navigierbarkeit in die eine Richtung, ohne x wäre das andere Ende wieder »unbestimmt«.).

X

Person

1

Nummer

Bei einer implementierungsnahen Modellierung kann so ausgeschlossen werden, dass Objekte Annahmen über ihre Umgebung machen, die nicht dauerhaft zutreffend sind. So könnte sich ein Objekt merken wollen, durch welches Fensterobjekt es angezeigt wird, um ggf. ein Refresh zu machen. In der Realität des graphischen Frameworks werden aber gelegentlich neue Fenster erzeugt. Dann kann ein x (bei korrekter Umsetzung in der Implementierung) diese Fehler verhindern. Frame

*

X

*

Objekt

Aufgabe 1 Umsetzung in Java Wie können die folgenden drei Konstrukte, die in UML-Klassendiagrammen auftreten können, in Java umgesetzt werden? Diese Aufgabe soll zeigen, dass einfache UML-Modellierungen zum Teil nur schwer, nicht sicher und eventuell mit viel Aufwand umgesetzt werden können. – Komposition (Folie 109) Komposition bedeutet: »ein Teil gehört immer zu genau einem Ganzen und existiert nur solange, wie das Ganze existiert«. Klassisches Beispiel ist das Element einer Liste, das (zu einem Zeitpunkt) immer nur zu genau einer Liste gehören soll. Wird die Liste gelöscht, so sollen auch ihre Elemente gelöscht werden. Liste

*

Element

Bei der Umsetzung in Java gilt nun: •

Das explizite Löschen von Objekten ist in Java gar nicht vorgesehen; Objekte werden vergessen und dann (vielleicht irgendwann) durch den garbage collector gelöscht. Die durch die Komposition geforderte existentielle Abhängigkeit kann also nur garantiert werden, wenn jedes Element-Objekt immer und nur ausschließlich über genau ein einziges Liste-Objekt erreichbar ist. Diese Regel muss dann in allen Methoden, die Element-Objekte behandeln, eingehalten werden. Die Komposition muss also durch geeignete Algorithmen sichergestellt werden.

technische universität dortmund

Fakultät für Informatik Modul Softwareentwicklung Übung Softwaretechnik Sommersemester 2014



Oben wird eine konzeptionelle Modellierung ezeigt. Die in DAP 1 vorgestellte Implementierung der doppelt verketteten Liste besitzt die folgende UML-Modellierung, da ja eine Liste genau »*« umsetzt: DoublyLinkedList

0..1

0..1

0..1

first 0..1

0..1 Element 0..1

last

0..1

0..1

– Spezialisierung von Assoziationen (Folie 103) Spezialisierung einer Assoziation bedeutet, dass die für eine Verbindung erlaubten Objekte für Unterklassen eingeschränkt werden. Da in Java die oberklassengetypten Referenzen vererbt werden, muss dafür gesorgt werden, dass alle Manipulationen solcher Referenzen über (set-)Methoden kontrolliert werden. Diese müssen dann konsequent genutzt und in den Unterklassen überschrieben werden. Das Überschreiben erfolgt aber nur bei gleichen Signaturen, so dass in der Unterklassen-Implementierung die notwenige Typkontrolle nicht auf den Compiler verlagert werden kann sondern zur Laufzeit erfolgen muss. – mehrfache Spezialisierung (eine Klasse besitzt mehrere Oberklassen) A

B

C

U

»Mehrfaches Erben« kann zwei Zielsetzungen haben: das Vereinen von den in A, B und C vorhandenen Methodenimplementierungen oder das Schaffen einer entsprechenden Typkompatibilität. Da Java nur genau eine Oberklasse erlaubt, muss eine Hierarchie geschaffen werden, die mit einfachem Erben auskommt. •

Sollen Implementierungen wiederverwendet werden, so gibt es zwei Möglichkeiten: A, B, C und U bilden eine lineare, einfache Vererbungshierarchie, die dann natürlich zusätzliche, durch das Modell nicht geforderte Typkompatibilitäten schafft. Eine zweite Lösung wäre der Verzicht auf jegliches Erben. Stattdessen werden Objekte von A, B und C in U genutzt und Teilaufgaben dorthin delegiert. Dann besteht natürlich gar keine Typkompatibilität mehr.



Soll im Wesentlichen eine Typhierarchie geschaffen werden, so können A, B und C als Interfaces realisiert werden. Dann kann aber gar keine Wiederverwendung erfolgen.



Sind in gleichem Maße Wiederverwendung und Typkompatibilität wichtig, so bleibt entweder die lineare, einfache Hierarchie oder eine Konstruktion der folgenden Art, die über Delegation wiederverwendet. «interface» A

«interface» B

CA

«interface» C

CC

CB

U

Aufgabe 2 Klassendiagramme Modellieren Sie die folgenden Situationen als Klassendiagramm: •

Eine Bank hat viele Kunden. Jeder Kunde besitzt einen Namen und kann über mehrere Konten verfügen. Zu jedem Konto gehören eine Kontonummer, der Kontostand und die vielen, mit dem Konto verbundenen Einzahlungen und Auszahlungen. Ein- und Auszahlungen bestehen jeweils aus einem Betrag und einem Datum.

technische universität dortmund

Fakultät für Informatik Modul Softwareentwicklung Übung Softwaretechnik Sommersemester 2014

*

Bank



*

Kunde Name

Konto Nummer Stand

* Auszahlung * Einzahlung

Transaktion Stand Datum

Ein zweisprachiges Wörterbuch besteht aus vielen Wörtern. Zu jedem dieser Wörter gibt es genau eine Beschreibung, die Bilder enthalten kann, eventuell mehrere grammatikalische Erklärungen und mehrere Übersetzungen. Eine Übersetzung ist ebenfalls ein Wort, das auch eine Beschreibung, aber keinen grammatikalischen Hinweis besitzt. Wörterbuch

* *

Wort

Bild

Grammatik

* * Beschreibung

Übersetzung

1

Die Vererbungsbeziehung setzt den Textteil »Übersetzung ist ebenfalls ein Wort« um.

Aufgabe 3 Objektdiagramme Gegeben sind die folgenden beiden Klassendiagramme. Geben Sie für jedes Klassendiagramm ein Objektdiagramm an, das genau fünf Objekte enthält, von denen mindestens eines zur Klasse X gehört. a)

1

X

*

b)

O

1

a)

1

2 «abstract»

1

1

A

1

3

K

X

* *

1

U

M

:K

b)

:K

K

:K :X

:K

:U

:X :M

:K

(Die Lösungen müssten für 5 Objekte, von denen eines X ist, eindeutig sein.)

:M

technische universität dortmund

Fakultät für Informatik Modul Softwareentwicklung Übung Softwaretechnik Sommersemester 2014

Übungsblatt 3 – Lösungen Ausgabe: 30.4.2014, Bearbeitung in den Übungen: 5.5.-9.5.2014

Aktivitätsdiagramm Gegeben ist das folgende Aktivitätsdiagramm. Die Abläufe der Aktionen A, ..., E sind unbekannt. Insbesondere können in diesen Aktionen aber auch die Werte von v und w beliebig geändert werden. doIt K [v==1] A

[else]

[v==0]

[w==0]

C

B

[else]

[else] L

D E

[else]

[x>0]

Fragen: Welche Aussagen sind für das oben stehende Diagramm korrekt? – Die Aktion B wird immer ausgeführt. falsch: B wird nicht ausgeführt, wenn v!=0 nach A gilt – Falls die Aktion B ausgeführt wird, wird immer auch die Aktion C ausgeführt. falsch, nur wenn w==0 nach B gilt – Falls die Aktion D ausgeführt wird, wird immer auch die Aktion E ausgeführt. richtig, beide beginnen gleichzeitig – Aktion D kann nach Aktion E beendet werden. richtig, am Synchronisationsbalken wird nur auf beide gewartet – Aktion D kann vor Aktion C ausgeführt werden. richtig, bei Ablauf der Art A B (D|E) B C ... – Die Aktion B kann nach Aktion C ausgeführt werden. richtig, bei Ablauf der Art A B C B ... – Die Aktionen D und E werden gleichzeitig beendet. falsch, am Synchronisationsbalken wird nur gewartet

Aufgabe 1 a)

Geben Sie fünf mögliche Folgen an, in denen die Aktionen ausgeführt werden können! A; ABC; ABCBC ; AB(D|E); AB(D|E)BC; AB(D|E)BCBC Wie viele verschiedene Folgen von Aktionen beschreibt das Diagramm? ohne konkretes Wissen, wie v und w verändert werden, beliebig viele aber: A tritt nur genau einmal am Anfang auf, B tritt immer wieder auf, C oder D|E können, aber müssen sich nicht wiederholen

b)

Ergänzen Sie das Diagramm derart um eine Aktion K, dass diese dann ausgeführt wird, wenn nach Aktion A die Bedingung v==1 gilt. Nach der Aktion K soll mit der Aktion C fortgefahren werden. Der restliche Ablauf soll unverändert bleiben. Lösung: Die Verzweigung kann nicht mitverwendet werden, da sonst v==1 nicht nur nach A, sondern auch nach der Rückkehr überprüft würde. Bei der Zusammenführung muss explizit eine Raute ergänzt werden, da ja sonst die Bedingung von w berücksichtigt würde.

c)

Ergänzen Sie das Diagramm derart um eine Aktion L, dass diese immer gemeinsam mit Aktion B begonnen wird. Die Bedingungen für w sollen erst dann überprüft werden, wenn die Aktionen B und L beendet sind. Der restliche Ablauf soll unverändert bleiben. Lösung

d)

Ergänzen Sie das Diagramm derart, dass die Ausführung der Aktion D sofort abgebrochen wird, wenn die Aktion E beendet wurde und die Bedingung x>0 gilt. Danach soll das Aktivitätsdiagramm direkt beendet werden. Gilt nach E die Bedingung x0, so soll der Ablauf unverändert bleiben. Lösung (Unterbrechungsbereich mit Unterbrechungskante): Der Unterbrechungsbereich sollte den Synchronisationsbalken einschließen. Dann wird die von einem beendeten D erzeugte Marke auch vernichtet. Hier muss es aber nicht unbedingt so gezeichnet werden, da der Wechsel zum Endknoten sowieso alle Marken vernichtet.

technische universität dortmund

Fakultät für Informatik Modul Softwareentwicklung Übung Softwaretechnik Sommersemester 2014

Aufgabe 2 Geben Sie ein Aktivitätsdiagramm, dass die Kontrollstrukturen des folgenden Java-Programms visualisiert: int s = 0, c = 10; for ( int i = 0; i i ) { c--; } } } unknown

int s = 0, c = 10; int i = 0;

[i i] [else]

c--;

technische universität dortmund

Fakultät für Informatik Modul Softwareentwicklung Übung Softwaretechnik Sommersemester 2014

Übungsblatt 4 – Lösungen Ausgabe: 7.5.2014, Bearbeitung in den Übungen: 12.5.-16.5.2014

Zustandsdiagramm Gegeben ist das folgende Zustandsdiagramm:

P P

R

Q

R R

sonst

aus-S-2

R H*

Q

R

Fragen: Welche Ausgaben erzeugen die folgenden Eingangssignale für das oben stehende Diagramm? ABAEA – MN – MM ABFAA – MLM ABAFCEAA – MLNM ABAFEAB Ist es möglich, von einem der Zustände S-4, S-5 oder S-6 eine Transition zum Zustand Y anzulegen, bei deren Nutzung A nicht ausgegeben wird? nein, das exit/ A kann nicht umgangen werden.

Aufgabe 1 Ergänzen Sie in dem oben stehenden Diagramm Transitionen und/oder Zustände, um das geforderte Verhalten zu erzeugen. a)

Aus dem Zustand S-1 soll bei Eingabe von P in den Zustand Y gewechselt werden. Aus dem Zustand Y soll bei erneuter Eingabe von P in den S-2 wechseln. Lösung

b)

Aus jedem der Zustände aus C-1 soll bei Eingabe von Q in den Zustand X gewechselt werden. Nur aus dem Zustand X soll bei erneuter Eingabe von Q wieder in genau den (atomaren) Zustand gewechselt werden, von dem aus X erreicht wurde. Lösung

c)

Bei Eingabe von R soll von jedem Zustand innerhalb von C-1 in den Zustand Z gewechselt werden. Wurde der Zustand Z von S-2 aus erreicht, soll vom Zustand Z bei erneuter Eingabe von R wieder in S-2 zurückgekehrt werden. In allen anderen Fällen soll vom Zustand Z bei Eingabe von R in den Zustand S-1 gewechselt werden. Lösung

technische universität dortmund

Fakultät für Informatik Modul Softwareentwicklung Übung Softwaretechnik Sommersemester 2014

Aufgabe 2 Zustandsdiagramm Erstellen Sie ein Zustandsdiagramm, das die nachfolgenden Anforderungen umsetzt. Verwenden Sie bei der Modellierung keinen nebenläufigen Zustand und auch keinen Historien-Zustand. Der für trendige Life-Style-Hardware bekannte Hersteller SWT-innovations plant das neue tuPad, ein elektronisches Hilfsmittel, das die universitäre Lehre revolutionieren soll. Das tuPad bietet den nutzenden Studierenden eine Vielzahl von Aufgaben zur Bearbeitung an. Die Aufgaben besitzen zwei Schwierigkeitsstufen. Das Gerät wird über drei Tasten gesteuert. • Die Taste T1 zeigt das Ende der Bearbeitung einer Aufgabe oder das Ende des Betrachtens einer Musterlösung an. Wird die Bearbeitung beendet, so wird die Lösung sofort überprüft. Ist die Lösung korrekt, wird die nächste Aufgabe angezeigt. Ist die Lösung nicht korrekt, wird die Musterlösung angezeigt. • Mit der Taste T2 lässt sich die Schwierigkeitsstufe umschalten, sofern eine Aufgabe bearbeitet wird. Die Bearbeitung der aktuellen Aufgabe wird dann abgebrochen. • Mit der Taste T3 kann jederzeit zwischen Ruhezustand und Betrieb umgeschaltet werden. Nach dem Wechsel in den Betrieb soll immer mit Bearbeitung einer Aufgabe der niedrigsten Schwierigkeitsstufe begonnen werden. Darüber hinaus soll das tuPad die folgenden pädagogisch und psychologisch motivierten Anforderungen erfüllen: •

Das tuPad schaltet nach längstens zwei Stunden Betrieb automatisch in den Ruhezustand.



Das tuPad verbleibt immer mindestens 15 Minuten im Ruhezustand.

0:15:0

Nun wird über eine Verbesserung der kompetenzbasierte Unterstützung des tuPad diskutiert. Überlegen Sie, welche Erweiterungen an dem Diagramm notwendig würden, um diese beiden Verbesserungen zu modellieren: •

Nach dem Einschalten soll jeweils mit einer Aufgabe der Schwierigkeitsstufe fortgefahren werden, aus der heraus der Ruhezustand aktiviert wurde. Lösung: Die Zustände einschaltbar und Ruhe abwarten müssten doppelt angelegt werden, um so zu merken, ob aus der Stufe 1 oder der Stufe 2 dorthin gewechselt wurde und den entsprechenden Rücksprung zu ermöglichen.



Es sollen Aufgaben in fünf unterschiedlichen Schwierigkeitsstufen angeboten. Lösung: Der Teilgraph Stufe X bearbeiten und Lösung Stufe X muss fünf Mal vorgesehen werden. Ebenso müssten die Zustände einschaltbar und Ruhe abwarten fünfach angelegt werden. Das ist ungünstig. Das Finden einer besseren Lösung ist eine der Präsenzaufgaben.

technische universität dortmund

Übungsblatt 5 – Lösungen

Fakultät für Informatik Modul Softwareentwicklung Übung Softwaretechnik Sommersemester 2014

Ausgabe: 14.5.2014, Bearbeitung in den Übungen: 19.5.-23.5.2014

Aufgabe 1 Zustandsdiagramm

Welche Ausgaben erzeugen die folgenden Eingangssignale für das oben stehende Diagramm? –AABED X Y F K L (E fü...


Similar Free PDFs