Eleganter Bericht - FHDW / bib Portalseite

Werbung
FA C H H O C H S C H U L E F Ü R D I E W I RT S C H A F T F H D W, H A N N O V E R
O B J E K T- O R I E N T I E R T E
S O F T WA R E T E C H N I K 1
NACHKLAUSUR
Studiengang: HFI/W413
Studienquartal: II. Theoriequartal
1
Prüfungsumfang: Literatur und Lösungen aus dem Übungsbetrieb
Dozent: Löwe
Termin: 29. August 2014
Dauer: 120 Minuten
40 Punkte sind zu erreichen: Wissen 16, Anwendung 16, Transfer 8 Punkte. Bestanden ab 16 Punkte.
TEIL I: WISSEN (35 MINUTEN)
Aufgabe 1 (1 Punkt): Ein Anwendungsfalldiagramm definiert unter anderem die Systemgrenze. Was ist in­
nerhalb der Systemgrenze, was außerhalb?
Aufgabe 2 (1 Punkt): Geben Sie ein Aktivitätsdiagramm für die Aktivitäten (1) „Testen“, (2) „Funktion
implementieren“, (3) „Testfälle schreiben“, und (4) „Funktionskopf 2 festlegen“ bei der Entwicklung von
LOMF­Funktionen an, das die 4 Aktivitäten in die Reihenfolge bringt, die Sie im ersten Semester gelernt
haben! (Achten Sie auf mögliche Parallelarbeit!)
Aufgabe 3 (3 Punkte): Betrachten Sie die drei
Aggregationen x1, x2 und x3 in Abbildung 1!
Bei x3 machen an beiden Enden (sowohl an dem
Ende mit Raute als auch am Ende ohne Raute)
Abbildung 1: Aggregationen
alle 4 Multiplizitäten *, +, 1 und 0..1 Sinn.
Das ist bei x1 und x2 nicht so! Welche Multiplizitäten an welchem Ende sind bei x1 und x2 sinnlos? Warum?
Aufgabe 4 (2 Punkte): Interpretieren wir die Aggregation x3 in Abbildung 1 als „contains“ mit Leserich­
tung vom Ende mit Raute zum Ende ohne Raute, dann können die Klassen G, H und K als „Datei System“,
„Datei“ und „Ordner“ interpretiert werden! Wie? Welche Multiplizitäten sind dann für x3 richtig?
Aufgabe 5 (2 Punkte): Erläutern Sie das Muster Template Method anhand eines guten Beispiels!
Aufgabe 6 (1 Punkt): In Java gibt es die Klasse Object, von der alle anderen Klassen abgeleitet sind. Das
bedeutet: Object ist allgemeiner als jede andere Klasse. Warum kann es in Java keine Klasse geben, die
spezieller ist als jede andere Klasse?
Aufgabe 7 (3 Punkte): Die Klassen B, C und D zusammen mit der Aggregation x2 (inklusive *­Multiplizitä­
ten an beiden Enden) in der Abbildung oben ergeben die Grundstruktur eines Composite Patterns. Will
man diese Struktur in Java implementieren, muss eine Operation abstract boolean contains(B b)
in die Klasse B. Warum? Geben Sie die Java­Methoden für diese Operation in den Klassen C und D an! (Da­
bei implementiere die Java­Klasse D die Aggregation x2 über ein Feld private Collection<B> x2.)
Aufgabe 8 (1 Punkt): In Ihrer Lösung zu Aufgabe 7 sollten Sie einen Iterator benutzt haben. Iteratoren
haben neben hasNext und next noch eine weitere Operation. Welche? Erläutern Sie Ihre Wirkungsweise!
Aufgabe 9 (2 Punkte): Geben Sie die naheliegenden Visitoren für die Klassen in Abbildung 1 als Java­
Kode an! Wozu kann man diese Visitoren einsetzen?
TEIL II: ANWENDUNG (55 MINUTEN)
Aufgabe 10 (5 Punkte): Geben Sie ein möglichst präzises Fachklassenmodell 3 für Konten, Buchungen und
Transaktionen an. Ein Konto hat einen Saldo (aktuellen Kontostand) als Integer4 und eine Liste von Ein­
trägen. Jeder Eintrag hat ein Datum und einen positiven Buchungsbetrag (Card). Ein Eintrag ist entweder
Gamma et al: Design Patterns und Oesterreich: Objektorientierte Softwareentwicklung - Analyse und Design mit der UML
Der Funktionskopf besteht aus Name der Funktion, Namen und Typen der Parameter, Rückgabetyp und Kommentar.
3
Geben Sie stets Multiplizitäten (0..1, 1, *, +) an und benutzen Sie Aggregationen, wo es sinnvoll ist!
4
Wir gehen hier davon aus, dass alle Geldbeträge in Euro-Cent angegeben werden.
1
2
eine Lastschrift5 oder eine Gutschrift6. Eine Buchung hat einen positiven Buchungsbetrag sowie ein Quell­
konto, von dem der Buchungsbetrag abgebucht werden soll, und ein Zielkonto, dem der Buchungsbetrag
gutgeschrieben werden soll. Eine Transaktion hat eine Bezeichnung (String) und besteht aus einer Liste
von Buchungen. Eine Transaktion kann ausgeführt werden. Dazu hat sie die Operation execute(). Beim
Ausführen einer Transaktion werden alle ihre Buchungen ausgeführt, d. h. auf den Quell­ und Zielkonten
verbucht7. Jede Transaktion darf nur einmal ausgeführt werden!
Aufgabe 11 (3 Punkte): Geben Sie die Java­Klassen und ­Interfaces für Ihr Modell aus Aufgabe 10 an!
(Benutzen sie Date als Datentyp für Datumsangaben!8 )
Aufgabe 12 (5 Punkte): Geben Sie die notwendigen Operationen und Methoden zur Implementierung der
Operation void execute() throws AlreadyExecuted zum Ausführen von Transaktionen an! (Das
aktuelle Datum liefert new Date() !)
Aufgabe 13 (3 Punkte): Zwei Assoziationen r1 von der Klasse A zur Klasse B und r2 von der Klasse B zur
Klasse C lassen sich komponieren zu einer Assoziation r1 ;r2 von der Klasse A zur Klasse C. Wir definie­
ren, dass ein Link zur Assoziation r1 ;r2 von einem A­Objekt a zu einem C­Objekt c genau dann existiert,
wenn es einen Link zur Assoziation r1 von a zu einem B­Objekt b gibt und einen Link zur Assoziation r2
von b zu c. Welche Multiplizität hat r1 ;r2 am C­Ende in Abhängigkeit von den Multiplizitäten von r1 und
r2 am B­Ende bzw. C­Ende? Diskutieren Sie wieder nur die Multiplizitäten *, +, 1 und 0..1 ! (Achten Sie
auf Vollständigkeit!)
TEIL III: TRANSFER (30 MINUTEN)
Aufgabe 14 (2 Punkte): Sei r1 ;r2, wie in Aufgabe 13 , die Komposition zweier Assoziationen r1 von der
Klasse A zur Klasse B und r2 von der Klasse B zur Klasse C. Hier sollen r1 und r2 Abbildungen sein, d. h.
ihre Multiplizität am B­ bzw. C­Ende ist 1. Welche Rückschlüsse kann man zur Multiplizitäten von r1 und
r2 am A­ bzw. B­Ende ziehen, wenn man die Multiplizität von r1 ;r2 am A­Ende (*, +, 0..1 oder 1) kennt?
Aufgabe 15 (3 Punkte): Betrachten Sie das kleine
Meta­Modell für Objektorientierte Systeme in Abbil­
dung 2! (Jede gerichtete Assoziation in diesem Mo­
dell ist eine Abbildung!) Für jedes Link­Objekt l
gibt es zwei zugeordnete Class­Objekte, nämlich
l.instanceOf.from und l.from.instanceOf .
Welche Konsistenzbedingung muss für diese beiden
Class­Objekte gelten, damit die Object­Objekte
Abbildung 2: Meta-Modell
zum Meta­Modell zusammen mit den Link­Objekten
eine vernünftige Objektwelt darstellen? Welche Be­
dingung müssen die „Klassen“ l.instanceOf.to und l.to.instanceOf für jeden Link l erfüllen?
Aufgabe 16 (3 Punkte): Betrachten Sie folgende Standardimplementierung von equals: Jede Klasse, die
die equals­Operation aus Object überschreiben will, geht so vor wie die Klasse A unten. Ist so garantiert,
dass equals reflexiv, symmetrisch und transitiv ist? Begründen Sie Ihre Antwort stichhaltig!
interface EQ {
boolean preEquals(Object a);
}
class A .... implements EQ {.......
public boolean equals(Object a){
if (this == a) return true;
if (a instanceof A) return ((A)a).preEquals(this);
return false;
}
public boolean preEquals(Object a){
if (a instanceof A) return this.checkEquals((A)a);
return false;
}
private boolean checkEquals(A a) {.......
}
}
Oder auch Abbuchung; Englisch „debit“.
Oder auch Zubuchung; Englisch „credit“.
7
Dabei werden die entsprechenden Gut- und Lastschriften erzeugt!
8
Gibt es in Java als java.util.Date.
5
6
Herunterladen