a) In der Aufgabenstellung war ein möglichst einfaches Klassendiagramm gefordert. Abb. 1 zeigt eine mögliche Lösung. * * * Aufbau 1..



Ähnliche Dokumente
Nr. 1 L-Aufgabe

Lehrer: Einschreibemethoden

Kurs 1793 Software Engineering I - Grundkonzepte der OOSE Klausur am

Auktion name adresse pseudonym adresse /bewertungszahl. Gebot. höhe zeitpunkt bieter. initiiert

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Registrierte- MautStrecke bezeichnung. Gefahrene- MautStrecke /datumeinfahrt /datumausfahrt /uhrzeiteinfahrt /uhrzeitausfahrt gefahrenekm 1..

Übung bezeichnung titel thema Übungsgruppe gruppennr wochentag uhrzeit namementor vornamementor Student name vorname matrikelnr

Kontakte Dorfstrasse 143 CH Kilchberg Telefon 01 / Telefax 01 / info@hp-engineering.com

Erfahrungen mit Hartz IV- Empfängern

Eingangsseite Umwelt-online

Stand: Adressnummern ändern Modulbeschreibung

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Erstellen von x-y-diagrammen in OpenOffice.calc

GSD-Radionik iradionics Android-App

Feiertage in Marvin hinterlegen

Kurzanleitung fu r Clubbeauftragte zur Pflege der Mitgliederdaten im Mitgliederbereich

Lieferschein Dorfstrasse 143 CH Kilchberg Telefon 01 / Telefax 01 / info@hp-engineering.com

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten

Kontenaktualisierung in Lexware buchhalter

BOKUbox. Zentraler Informatikdienst (ZID/BOKU-IT) Inhaltsverzeichnis

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Word 2010 Schnellbausteine

Anleitung für die Hausverwaltung

So gehts Schritt-für-Schritt-Anleitung

Erweiterungen Webportal

sondern alle Werte gleich behandelt. Wir dürfen aber nicht vergessen, dass Ergebnisse, je länger sie in der Vergangenheit

Abschluss Version 1.0

Internet online Update (Mozilla Firefox)

Argo 2.0 Software Upgrade

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Übung 1. Ziel: Statisches Modell (Klassendiagramm) aus allgemeiner Beschreibung erstellen.

Aktivierung von Makros in den Erfassungshilfen

Nutzung der Onleihe Schritt für Schritt

FuxMedia Programm im Netzwerk einrichten am Beispiel von Windows 7

QR-FUNKTION. Informationen über zu erledigende Aufgaben an das Reinigungspersonal senden.

Objektorientierte Konzepte und Notation in UML. Objekt Klasse Attribut Operation

Unified Modeling Language (UML)

Dokumentation IBIS Monitor

Antolin-Titel jetzt automatisch in WinBIAP kennzeichnen

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1

4. BEZIEHUNGEN ZWISCHEN TABELLEN

Sicherheit für Windows Vista Teil 2: Windows Tool zum Entfernen bösartiger Software

Pflegeberichtseintrag erfassen. Inhalt. Frage: Antwort: 1. Voraussetzungen. Wie können (Pflege-) Berichtseinträge mit Vivendi Mobil erfasst werden?

Historical Viewer. zu ETC5000 Benutzerhandbuch 312/15

Inventur. Bemerkung. / Inventur

Datenaufbereitung in SPSS. Daten zusammenfügen

Handbuch ECDL 2003 Modul 2: Computermanagement und Dateiverwaltung Der Task-Manager

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

Gruppenrichtlinien und Softwareverteilung

Deutliche Mehrheit der Bevölkerung für aktive Sterbehilfe

MCRServlet Table of contents

Bereich METIS (Texte im Internet) Zählmarkenrecherche

Auktionen erstellen und verwalten mit dem GV Büro System und der Justiz Auktion

Arbeiten mit UMLed und Delphi

Anleitung Postfachsystem Inhalt

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

Bei der Anlage von Pauschalen ist folgendes zu beachten!!!!!!!!

Software Engineering Interaktionsdiagramme

Integrated Services Realtime Remote Network

1 Mathematische Grundlagen

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Auftrag zum Fondswechsel

CMS.R. Bedienungsanleitung. Modul Cron. Copyright CMS.R Revision 1

Schrittweise Anleitung zur Erstellung einer Angebotseite 1. In Ihrem Dashboard klicken Sie auf Neu anlegen, um eine neue Seite zu erstellen.

Zwischenablage (Bilder, Texte,...)

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Durchführung der Datenübernahme nach Reisekosten 2011

Nützliche Tipps für Einsteiger

Änderungen an der Mareon-Schnittstelle

Die ersten Schritte mit. DIG-CAD 5.0 Aufmaß

teamsync Kurzanleitung

Lösungsvorschlag für Übungsblatt 6 Software Engineering 1 (WS 2012/13)

Artenkataster. Hinweise zur Datenbereitstellung. Freie und Hansestadt Hamburg. IT Solutions GmbH. V e r s i o n

Moodle-Kurzübersicht Kurse Sichern und Zurücksetzen

Schuljahreswechsel im Schul-Webportal

Klassendiagramm. Kurzer Überblick über UML - Stand BlaBla

1 Belastung. 1.1 Standortbestimmung 1.2 Belastungsvorhersage 1.3 Favoriten

Themenblock 2: Datenmodellierung mit ERM

Anleitung E Mail Thurcom E Mail Anleitung Version

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: )

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

How to do? Projekte - Zeiterfassung

ELBA für Raiffeisen-Mitarbeiter Version 5. Anleitung zur Einrichtung der Bankdaten am BANK-PC

Anleitung für die Einrichtung weiterer Endgeräte in 4SELLERS SalesControl

Anleitung für die Teilnahme an den Platzvergaben "Studio II, Studio IV und Studio VI" im Studiengang Bachelor Architektur SS15

Tragen Sie bitte im Anmeldefeld die Daten ein, die Sie von uns erhalten haben.

Informationssystemanalyse Problemstellung 2 1. Trotz aller Methoden, Techniken usw. zeigen Untersuchungen sehr negative Ergebnisse:

Projektmanagement in Outlook integriert

Anlage eines neuen Geschäftsjahres in der Office Line

Dokumentation: Selbstregistrierung

Etikettendruck mit Works 7.0

Anwendungshinweis Nr. 12. Wie konfiguriere ich redundante Serververbindungen

Installation der Eicon Diva PCI Karte unter Windows XP

Installation OMNIKEY 3121 USB

1. EINLEITUNG 2. GLOBALE GRUPPEN Globale Gruppen anlegen

INTEGRA Finanzbuchhaltung Jahresabschluss Jahresabschluss 2014

Broadcasting mit. WhatsApp. Ein neues Tool für die Jugendarbeit.

Bedienungsanleitung: Onlineverifizierung von qualifiziert signierten PDF-Dateien

Transkript:

Software Engineering I Musterlösungen zur Klausur vom 3.7.2004 Aufgabe a) In der Aufgabenstellung war ein möglichst einfaches Klassendiagramm gefordert. Abb. zeigt eine mögliche Lösung. Turnier sportart bezeichnung jahr Aufbau Runde bezeichnung imkosystem /endetam 0.. 0.. Nachfolgerunde Teilnahme GruppenInRunde nationalitaet Team Zuteilung.. Gruppe gruppenname 0.. Team Team2 Sieger Gruppenspiel Spiel datum trefferteam trefferteam2 hatverlaengerung durchlosentschieden Abb. : Klassendiagramm für den Turnierveranstalter

Seite: 2 Kurs 793 Software Engineering I - Grundkonzepte der OOSE Musterlösungen zur Klausur am 3.7.2004 Zwischen Team und Spiel muss es zwei getrennte Assoziationen "Team" und "Team2" geben, damit die in der Klasse Spiel gespeicherten Trefferzahlen den Teams eindeutig zugeordnet werden können. Zusätzlich wird eine Asssoziation Sieger benötigt, da ein Spiel auch bei gleicher Trefferzahl einen Sieger haben kann (durch Losentscheid). Die Assoziation Nachfolgerunde beschreibt die zeitliche Reihenfolge der Runden. Das Attribut endetam in der Klasse Runde ist abgeleitet, da es dem Datum des letzten in dieser Runde stattfindenden Spiels entspricht. b) Folgende Einschränkungen der Realität werden durch das Klassendiagramm in Abb. nicht ausgedrückt: Ein Team kann nicht gleichzeitig an zwei Spielen teilnehmen. Eine Nachfolgerunde muss später enden als ihre Vorgängerrunde. Eine Runde kann nicht Nachfolgerunde von sich selbst sein. Team und Team2 müssen zur selben Gruppe gehören. Ein Team kann pro Runde nur einer Gruppe zugeteilt werden. Alle Gruppenspiele der vorhergehenden Runde müssen beendet sein, bevor die qualifizierten Teams ermittelt werden können

Kurs 793 Software Engineering I - Grundkonzepte der OOSE Musterlösungen zur Klausur am 3.7.2004 Seite: 3 c) Abb. 2 zeigt ein Objektdiagramm für die in der Aufgabenstellung beschriebene Situation WM2006:Turnier sportart = "fussball" bezeichnung = "WM 2006" jahr = 2006 Aufbau Vorrunde:Runde bezeichnung = "vorrunde" imkosystem = false Teilnahme Teilnahme GruppeInRunde Deutschland:Team nationalitaet = "deutschland" Österreich:Team nationalitaet = "österreich" Zuteilung VorrundenGruppeB:Gruppe gruppenname = "vorrundengruppeb" Team Team2 Gruppenspiel Vorrundenspiel5:Spiel datum = 25.5.2006 trefferteam = trefferteam2 = durchlosentschieden = false Zuteilung Abb. 2: Objektdiagramm zu Aufgabe c d) Es gibt zwei Arten von Wetten: Spielwetten, bei denen auf ein konkretes Spielergebnis gewettet wird (Klasse Spielwette), und Turnierwetten, bei denen darauf gewettet wird, ob eine bestimmte Mannschaft eine bestimmte Runde erreicht (Klasse Turnierwette). Die gemeinsamen Eigenschaften dieser beiden Arten von Wetten fassen wir in der abstrakten Oberklasse Wette zusammen. Das boolesche Attribut qualifiziertsich in der Klasse Turnierwette gibt an, ob auf Qualifikation oder Nichtqualifikation eines Teams gewettet wird. Bei der Spielwette drücken wir den vom Kunden getippten Sieger durch die Assoziation GewetteterSieger aus. Soll auf Unentschieden gewettet werden, entfällt die entsprechende Verbindung.

Seite: 4 Kurs 793 Software Engineering I - Grundkonzepte der OOSE Musterlösungen zur Klausur am 3.7.2004 Turnier sportart bezeichnung jahr Aufbau Runde bezeichnung imkosystem endetam 0.. 0.. Nachfolgerunde Teilnahme Team nationalitaet Zuteilung.. GruppenInRunde Gruppe gruppenname Wette auftraggeber eingesetzerbetrag datum quote 0.. 0.. Gruppenspiel Team Team2 Sieger GewetteteRunde Spiel datum trefferteam trefferteam2 hatverlaengerung durchlosentschieden GewettetesTeam GewettetesSpiel Turnierwette qualifiziertsich Spielwette GewetteterSieger Abb. 3: Klassendiagramm für das Online-Wettbüro

Kurs 793 Software Engineering I - Grundkonzepte der OOSE Musterlösungen zur Klausur am 3.7.2004 Seite: 5 Aufgabe 2 neues Buch liegt vor / erfassen() präsent Ausleihwunsch[Buch ok, Projekt] / ausleihenprojekt() Fristverlaengerung / verlaengern() Abholfrist abgelaufen / vormerkunglöschen() Ausleihwunsch[Buch ok, normal] / ausleihen() Rückgabe[Buch ok] / zurueckgeben() Rückgabe[Buch ok] / zurueckgeben() Beschädigung festgestellt / entfernen() Fristverlaengerung / verlaengern(); Zustandsdiagramm zur Modellierung des Lebenszyklus eines Buches in der beschriebenen Bibliothek: Normalausleihe Projektausleihe Rückgabe[Buch nicht ok] / entfernen() abholbereit Leser holt Buch ab / ausleihen(); Vormerkwunsch / vorbestellen() Rückgabe[Buch nicht ok] / entfernen() Rückgabe[Buch ok] / zurueckgeben(); benachrichtigen(); Rückgabe[Buch nicht ok] / entfernen() vorbestellt Leser holt Buch ab / ausleihenprojekt() Abb. 4 Zustandsdiagramm zu Aufgabe 2

Seite: 6 Kurs 793 Software Engineering I - Grundkonzepte der OOSE Musterlösungen zur Klausur am 3.7.2004 Aufgabe 3 a) Zur Transformation des Klassendiagramm-Ausschnitts zerlegen wir die Assoziation zunächst gemäß Abb. 48.7 des Kurstextes in zwei unidirektionale Assoziationen. Diese transformieren wir gemäß Abb. 48.6 und 48.7 in ein Feinentwurfs-Klassendiagramm. Als Behälterklasse definieren wir eine Klasse AngestelltenMenge. Abb. 5 zeigt das transformierte Klassendiagramm. Statt der unidirektionalen Assoziation aktuellervorgesetzter kann auch ein entsprechendes Attribut angegeben werden. aktuellervorgesetzter Angestellter aktuellemitarbeiter AngestelltenMenge 0.. Abb. 5 Transformation des Klassendiagramm-Ausschnitts b) Für jede der beiden Assoziationen definieren wir jeweils eine Operation zum Erstellen und zum Lösen einer Verbindung. Die Mengenklasse benötigt die üblichen Mengenoperationen hinzufuegen(), entfernen() und istenthalten(). Angestellter aktuellervorgesetzter aktuellemitarbeiter Angestelltenmenge verbindevorgesetzter(angestellter) loesevorgesetzter(angestellter) verbindemitarbeiter(angestellter) loesemitarbeiter(angestellter) 0.. hinzufuegen(angestellter) entfernen(angestellter) istenthalten(angestellter) Abb. 6 Operationen zum Verbinden und Lösen c) Die drei restlichen Assoziationen zerlegen wir wieder in jeweils zwei unidirektionale und transformieren diese zunächst schematisch nach Abb. 48.7. Von den entstehenden sechs Angestelltenmengen sind zwei redundant, da die Beziehung von einem Angestellten zu einem aktuellen oder ehemaligen Projektkollegen kommutativ ist: Ist (a, a2) ein Paar von Projektkollegen, so gilt dies auch für das Paar (a2, a). Gegenüber Abb. 6 kommen also lediglich vier Kompositionen hinzu. Von der Klasse Angestelltenmenge zur Klasse Angestellter darf nur eine Assoziation existieren,

Kurs 793 Software Engineering I - Grundkonzepte der OOSE Musterlösungen zur Klausur am 3.7.2004 Seite: 7 da eine Angestelltenmenge nur eine und nicht mehrere Mengen von Angestellten enthält. aktuellervorgesetzter Angestellter 0.. aktuellemitarbeiter 0.. ehemaligevorgesetzte 0.. ehemaligemitarbeiter 0.. aktuelleprojektkollegen 0.. ehemaligeprojektkollegen 0..5 AngestelltenMenge

Seite: 8 Kurs 793 Software Engineering I - Grundkonzepte der OOSE Musterlösungen zur Klausur am 3.7.2004 Aufgabe 4 a) Abb. 7 zeigt ein Kollaborationsdiagramm, das dem Sequenzdiagramm in der Aufgabenstellung entspricht. : selektieren() 2: bearbeiten() Sachbearbeiter 3: speichern() 3.4 hide() : ProduktAuswaehlenAAS 2. erzeuge(selektiertesprodukt) 2.2 show() 3.3 aktualisieren() : ProduktBearbeitenAAS {new}.: setzeselektiertesprodukt() 3.3. gibname() 3.3.2 gibpreis() 3. setzename() 3.2 setzepreis() selektiertesprodukt: Produkt Abb. 7 Der Ablauf als Kollaborationsdiagramm b) Wir listen einige Nachteile von zyklischen Abhängigkeiten auf: Sie verursachen eine hohe Kopplung zwischen den beteiligten Klassen. Sie widersprechen dem Prinzip hierarchischer Strukturen. Sie erschweren das Testen, da keine der im Zyklus enthaltenen Klassen ohne die andere Klassen des Zyklus getestet werden kann.

Kurs 793 Software Engineering I - Grundkonzepte der OOSE Musterlösungen zur Klausur am 3.7.2004 Seite: 9 c) Abb. 8 zeigt das modifizierte Klassendiagramm. JFrame show() hide() Beobachter ProduktAuswaehlenAAS selektiertesprodukt: Produkt ProduktlisteAAS() selektieren() bearbeiten() beenden() aktualisieren() ProduktBearbeitenAAS selektiertesprodukt: Produkt ProduktBearbeitenAAS(Produkt) speichern() abbrechen() Subjekt «interface» Beobachter Produkt Subjekt name: String preis: String gibname(): String setzename(string) gibpreis(): String setzepreis(string) verbinde(beobachter) loese(beobachter) benachrichtige() Beobachter «interface» Subjekt aktualisieren() verbinde(beobachter) loese(beobachter) benachrichtige() Abb. 8 Die zweite Entwurfsvariante

Seite: 0 Kurs 793 Software Engineering I - Grundkonzepte der OOSE Musterlösungen zur Klausur am 3.7.2004 d) Abb. 9 zeigt den geänderten Ablauf der Operation speichern(). ProduktAuswaehlenAAS ProduktBearbeitenAAS selektiertesprodukt:produkt speichern() setzename(string) benachrichtige() aktualisieren() gibname() gibpreis() setzepreis(string) benachrichtige() aktualisieren() gibname() gibpreis() hide() Abb. 9 Der geänderte Ablauf als Sequenzdiagramm e) Der in Aufgabe c) erstellte Entwurf hat die Eigenschaft, dass die Liste bei jeder Änderung des selektierten Produkts aktualisiert wird. Dies ist zwar im Allgemeinen ein Vorteil, da die Liste ist dadurch jederzeit auf dem aktuellen Stand ist. Der Nachteil besteht darin, dass die Aktualisierung mehrfach erfolgt. (Die Folge ist eine geringere Performanz und ggf. ein Flackern bei der Bildschirmdarstellung.)