FG Softwaretechnik Mertgen
Franklinstr. 28/29 Dobrev
10587 Berlin
MPGI 3
Muster-Klausur A
Wintersemester 2008/2009 19. Februar 2009
Pr ¨ufen Sie zun¨achst, ob dieses Exemplar vollst¨andig ist (8beidseitig bedruckte Bl¨atter).
Tragen Sie auf diesem Titelblatt und dar ¨uber hinaus auf allen Bl¨attern, die Sie f ¨ur Ihre Niederschrift verwenden, Ihren Namen und Ihre Matrikelnummer ein. Zum Bestehen der Klausur sind mindestens 25 Punkte notwendig. Ins- gesamt sind 50 Punkte m ¨oglich. Die Bearbeitungszeit betr¨agt 75 Minuten. In der Klausur sind außer einem beschriebenen DIN-A4-Blattkeine Hilfsmittel zugelassen. Verwenden Sie ausschließlich das ausgeteilte Klausur-Papier. Es d ¨urfen nurpermanent-schwarze oder -blaue Stiftezum L ¨osen der Aufgaben verwendet werden.
Viel Erfolg!
Name, Vorname:
Matrikelnummer:
Studienrichtung:
MPGI3- ¨ Ubungen habe ich im besucht.
(z.B. WS 2008/09) Aufgabe 1 2 3 4 5 6 Gesamt
Maximal: 7 5 8 12 12 6 50
Erreicht:
Aufgabenstellung ( ¨Ubersicht)
Das auf Seite 2 beschriebene System soll nach den in der Veranstaltung ver- mittelten Methoden entwickelt werden:
1. F ¨ugen Sie im gegebenen Klassenmodell f ¨ur den Gegenstandsbereich auf Seite 3 die Klassen Modeprodukt und Elektronikproduktein und erg¨anzen
Sie alle fehlenden Multiplizit¨aten. 7 Punkte
2. Vervollst¨andigen Sie das Use-Case-Modell auf Seite 4, indem Sie die Ak- teure des Systems bestimmen und sie den Funktionsgruppen zuordnen.
F ¨ugen Sie der Vorgabe bitte keine neuen Use-Cases hinzu. Beziehungen
zwischen den Funktionsgruppen d ¨urfen hinzugef ¨ugt werden. 5 Punkte 3. Vervollst¨andigen Sie das vorgegebene Systemklassenmodell auf Seite 5,
indem Sie Akteure, Klassen und Assoziationen hinzuf ¨ugen. Kennzeich- nen Sie die Klassen alsBoundary,ControloderEntity. Multiplizit¨aten und
Attribute m ¨ussennichtangegeben werden. 8 Punkte 4. Vervollst¨andigen Sie das Operationsschema f ¨ur die auf Seite 6 dargestell-
te Systemoperationangebot kommentieren. 12 Punkte
5. Vervollst¨andigen Sie das vorgegebene Kommunikationsdiagramm f ¨ur
die Systemoperationangebot kommentierenauf Seite 8 an. 12 Punkte 6. Implementieren Sie auf Seite 9 die Methode zaehleKommentare f ¨ur die
KlasseProdukt. Beachten Sie die dort angegebenen Vorgaben. 6 Punkte
Achten Sie auf Konsistenz zwischen allen erzeugten Modellen.
Webportal zur Bewertung von Produktangeboten
Das WebportalOfferComments.debeauftragt Sie mit der Entwicklung eines Soft- waresystems zur Verwaltung und Bewertung von Produktangeboten verschie- dener Firmen.
Zentrale Rolle in diesem Softwaresystem spielen die Produktmanager, die in einemB ¨uro in Berlin-Mitte arbeiten. Vertreter der Firmen kommunizieren di- rekt mit den Produktmanagern, wenn ihreProduktangeboteim Webportal ver-
¨offentlicht, aktualisiert oder gel ¨oscht werden sollen. Die Kommunikation ge- schieht haupts¨achlich per E-Mail und Fax, manchmal kommen aber die Fir- menvertreter auch pers ¨onlich ins B ¨uro des Webportals. Zwecks Aufwands- reduzierung, d ¨urfen pro Firma h ¨ochstens 30 Produktangebote ver ¨offentlicht werden. Zu einem bestimmtenProdukt hat eine Firma h ¨ochstens ein Produk- tangebot. Wenn eine Firma ein ganz neues Produkt auf den Markt bringen m ¨ochte, muss einer der Produktmanager zuerst dieses Produkt ins System ein- tragen. Unter Anderem hat ein Produkt eine eindeutige Identifikationsnum- mer (id), einen kurzen Namen und eine Produktbeschreibung. Betrifft das zu registrierende Produktangebot ein Produkt, das bereits im System bekannt ist, so entf¨allt dieser Schritt. Da das WebportalOfferComments.dean j ¨ungere Leute gerichtet ist, werden ausschließlich Produktangebote der MarktbereicheElek- tronikundModeangenommen und ver ¨offentlicht.
F ¨ur das Webportal arbeiten zus¨atzlich mehrere studentische Hilfskr¨afte als Reviewervon zu Hause. Sie loggen sich unregelm¨aßig auf eine speziell einge- richtete Webseite (hierReviewerPortalgenannt) ein. Ihre Arbeit besteht darin, Produktangebote zu kommentieren. Hierzu m ¨ussen sie zuerst das zu kom- mentierende Produktangebot aus einer nach Produkten gruppierten Liste aus- w¨ahlen. Zu jedem Produktangebot k ¨onnen mehrere Kommentare abgegeben werden. Ein Kommentar besteht aus einem l¨angeren Text, der die Vor- und Nachteile von diesem Angebot beschreibt. Im System muss immer nachvoll- ziehbar sein, welche Kommentare ein Reviewer geschrieben hat.
DieBenutzerdes Systems sind Personen mit Zugang zum Internet, die dieWeb- seitevonOfferComments.dein ihrem Webbrowser ¨offnen. Ein Benutzer kann die Produktangebote der verschiedenen Firmen recherchieren und die abgegebe- nen Kommentare lesen. Hierzu muss er zuerst das gew ¨unschte Produkt aus einer Liste ausw¨ahlen. Anschließend bekommt er eine Liste mit allen Produk- tangeboten zu diesem Produkt, die nach Preis geordnet sind. Erst dann kann er die Kommentare zu den einzelnen Angeboten sehen. F ¨ur ihre Recherche m ¨ussen sich die Benutzer nicht gesondert registrieren oder einloggen.
1. Klassenmodell f ¨ur den Gegenstandsbereich 7 Punkte
• F ¨ugen Sie im unten gegebenen Klassenmodell f ¨ur den Gegenstandsbe- reich die KlassenModeproduktundElektronikproduktein.
• Erg¨anzen Sie alle fehlenden Multiplizit¨aten.
Die auf dem Diagramm gezeichneten Dreiecke (I) kennzeichnen die Leserich- tung der Assoziationen.
L ¨osung:
2. Use-Case-Modell 5 Punkte
Vervollst¨andigen Sie das vorgegebene Use-Case-Model:
• Bestimmen Sie die Akteure des Systems und ordnen Sie diese den Funk- tionsgruppen zu.
• F ¨ugen Sie der Vorgabe keine neuen Funktionsgruppen hinzu.
• Sie d ¨urfen Beziehungen zwischen den Funktionsgruppen hinzuf ¨ugen.
Beispiell ¨osungen:
3. Systemklassenmodell 8 Punkte Vervollst¨andigen Sie das vorgegebene Systemklassenmodell, indem Sie Ak-
teure, Klassen und Assoziationen hinzuf ¨ugen. Kennzeichnen Sie die Klassen alsBoundary,ControloderEntity.
Multiplizit¨aten und Attribute m ¨ussennichteingetragen werden!
Beispiell ¨osung:
Sequenzdiagrammangebot kommentieren
Die Eingabeparameter der Systemoperation angebot kommentieren haben fol- gende Bedeutungen:
text der Text des zu erstellenden Kommentars
pid die eindeutige Identifikationsnummer des Produktes fid die eindeutige Identifikationsnummer der Firma rid die eindeutige Identifikationsnummer des Reviewers
Die BedingungProduktangebot existiert nicht dr ¨uckt aus, dass im System kein Angebot gefunden wurde, das zum Produkt mit der Identifikationsnummerpid geh ¨ort und von einer Firma mit der Identifikationsnummerfidangeboten wird.
Es wird in dieser Systemoperation davon ausgegangen, dass ein Reviewer mit der Identifikationsnummerridim System bekannt ist.
4. Operationsschemaangebot kommentieren 12 Punkte
Vervollst¨andigen Sie auf Basis Ihres Systemklassenmodells das vorgegebene
Operationsschema f ¨ur die Systemoperationangebot kommentierenauf der n¨achsten Seite.
Es sollen nur die im Sequenzdiagramm dargestellten F¨alle abgedeckt werden.
Nehmen Sie die folgenden Attribut- und Typdeklarationen an:
Produkt id: int
kurzname: String beschreibung: String ...
FirmenDaten id: int
name: String ...
Kommentar text: String ...
ReviewerDaten id: int
name: String ...
Beispiell ¨osung:
Op. = angebot kommentieren
Desc. = Ein Reviewer gibt einen neuen Kommentar im System ab. Der Kommentar betrifft ein bestimmtes Produktangebot, das durch die Eingabeparameterpidundfididentifiziert wird.
Es wird davon ausgegangen, dass ein Reviewer mit der Idenfi- kationsnummerridbereits im System bekannt ist.
Input = text:String,pid:int,fid:int,rid:int Reads = rv:ReviewerVerwaltung,Speichert,Sieht,
r:ReviewerDatenwithr.id=rid∧(rv,r)∈Speichert, Produktangebot,BietetAn,FirmenDaten,Geh¨ortZu,Produkt Changes = Schreibt,Betrifft,Kommentar
k:Kommentartype
Sends = Reviewer{kommentar abgegeben, angebot nicht gefunden} Pre = implicit
Post = let
firmenangebote=={pa:Produktangebot|(rv,pa)∈Sieht
∧(∃f :Firmendaten•f.id=fid ∧(f,pa)∈BietetAn)}; firmenproduktangebote== {fa:firmenangebote|
(∃p:Produkt •p.id=pid∧(p,fa)∈Geh¨ortZu)};
•
(#firmenproduktangebote= 0⇒
is sent {angebot nicht gefunden} ∧no effect )∧ (#firmenproduktangebote6= 0⇒
is sent {kommentar abgegeben} ∧
knew∧k.text0 =text∧Schreibt0 =Schreibt∪(r,k)∧
∃pa:firmenproduktangebote•Betrifft0 =Betrifft∪(k,pa))
5. Kommunikationsdiagrammangebot kommentieren 12 Punkte Vervollst¨andigen Sie auf Basis Ihres Systemklassenmodells und Ihres Opera-
tionsschemas das Kommunikationsdiagramm auf der n¨achsten Seite f ¨ur die Systemoperationangebot kommentieren.
Beachten Sie dabei folgende Anweisungen:
• F ¨ur diese Systemoperation gilt die Vorbedingung, dass ein Reviewer mit der Identifikationsnummerridim System bekannt ist.
• Kommentare zu einem Produktangebot sollen direkt aus dem entspre- chenden Objekt der KlasseProduktangeboterreichbar sein.
• Kommentare eines Reviewers sollten direkt aus dem entsprechenden Ob- jekt der KlasseReviewerDatenerreichbar sein.
Beispiell ¨osung:
Auszug aus der Java-API
Methoden der Klassejava.util.Collection<E>
TYP NAME UNDPARAMETER boolean add(E e)
boolean addAll(Collection<? extends E> c) void clear()
boolean contains(Object o)
boolean containsAll(Collection<?> c) boolean equals(Object o)
int hashCode() boolean isEmpty() Iterator<E> iterator()
boolean remove(Object o)
boolean removeAll(Collection<?> c) boolean retainAll(Collection<?> c)
int size() Object[] toArray()
<T>T[] toArray(T[] a)
6. Implementierung der MethodezaehleKommentare 6 Punkte Implementieren Sie die MethodezaehleKommentaref ¨ur die KlasseProdukt, die
angibt, wie viele Kommentare zu Produktangeboten f ¨ur dieses Produkt im Sy- stem gespeichert sind. Erg¨anzen Sie alle f ¨ur diese Implementierung notwen- digen Methoden in den vorgegebenen Ausschnitten der KlassenProdukt und Produktangebotauf der n¨achsten Seite.
Gehen Sie davon aus, dass die Objekte korrekt initialisiert werden. Sie m ¨ussen keineKonstruktoren implementieren. Sie m ¨ussenkeineimport-Anweisungen angeben.
Beispiell ¨osung:
public c l a s s Produktangebot { p r i v a t e Produkt produkt ;
p r i v a t e j a v a . u t i l . L i s t<Kommentar> kommentare ; public i n t anzahlKommentare ( ) {
r e t u r n kommentare . s i z e ( ) ; }
}
public c l a s s Produkt { p r i v a t e i n t id ;
p r i v a t e j a v a . u t i l . L i s t<Produktangebot> angebote ; public i n t zaehleKommentare ( ) {
i n t count = 0 ;
f o r ( Produktangebot pa : angebote ) {
count = count + pa . anzahlKommentare ( ) ; }
r e t u r n count ; }
}