Aufgabenblatt 06 - Hochschule Osnabrück

Werbung
Prof. Dr. Stephan Kleuker
Hochschule Osnabrück
Fakultät Ing.-Wissenschaften und Informatik
- Software-Entwicklung -
Objektorientierte Analyse und Design
Sommersemester 2015
6. Aufgabenblatt
Zur Erinnerung: Bearbeiten Sie Aufgabe 13 b) (4 Punkte) und nutzen Sie die Erkenntnisse, um
Aufgabe 13 a) ggfls. zu verbessern. Notieren Sie Ihre Verbesserungen
Aufgabe 14 (2 Punkte)
Erstellen Sie ein Klassendiagramm, mit dem man folgende Zusammenhänge verdeutlichen
kann.
o Es werden Studenten mit Namen und Matrikelnummer verwaltet. Jeder Student
kann beliebig viele Prüfungen gemacht haben.
o Es werden Module mit Modulnummer, Namen und Inhalt verwaltet.
o Es werden Lehrende mit Namen und Personalnummer verwaltet.
o Es
werden
Lehrveranstaltungen
verwaltet,
die
eine
eindeutige
Veranstaltungsnummer, das Semester, in dem sie stattfindet, und mindestens
einen Lehrenden haben, sowie zu genau einem Modul gehören.
o Es werden Prüfungen verwaltet, mit denen individuellen Noten von Studierenden
für genau ein Modul von einem oder zwei Lehrenden als Prüfer festgehalten
werden. Jede Prüfung hat weiter ein Datum, zu dem sie stattfindet und optional
einen Beisitzer deren Namen festgehalten wird.
Für jede der Klassen soll es einen Konstruktor geben, der Werte für die jeweiligen
Exemplarvariablen liefert, für die es keinen sinnvollen Default-Wert gibt.
Die Verwaltungsklassen selbst können weggelassen werden.
Aufgabe 15 (4 Punkte)
a) Beschreiben Sie mit einem eigenen Beispiel den Unterschied zwischen einer Menge
und einer Multimenge.
b) Für Java gibt es verschiedene generische Klassen zur Verwaltung von mehreren
Objekten gleichen Typs, sogenannte Sammlungen oder Collections (in C++ auch
Container genannt). In der UML wird dies bei der Assoziation mit der Multiplizität *
markiert. Skizzieren Sie kurz für jedes der folgenden generischen Interfaces die
typischen Eigenschaften ihrer Realisierungen und nennen Sie ein typisches
Einsatzbeispiel.
Die Interfaces sind: java.util.List, java.util.Set, java.util.Map. Man beachte, dass es
weitere Sammlungstypen gibt.
c) Entwickeln Sie ein Entscheidungsdiagramm (z. B. Aktivitätsdiagramm mit Alternativen),
mit dem Sie für eine gegebene Sammlung grob entscheiden können, welche der in b)
genannten Collections Sie zur Implementierung nutzen würden.
d) Gegeben sei obiges minimales Klassendiagramm. Dabei steht das * für eine
Sammlung (Collection) von Objekten. Mit addStudent wird nur ein Student hinzugefügt,
wenn es noch keinen mit der Matrikelnummer gibt. Ob hinzugefügt wurde steht im
Ergebnis der Methode. Bei removeStudent wird ebenfalls angegeben, ob ein Student
gelöscht wurde.
Im Diagramm ist nicht angegeben, wie diese Sammlung umgesetzt werden soll.
Implementieren Sie die Klassen aus dem Klassendiagramm in drei verschiedenen
Seite 1 von 2
Prof. Dr. Stephan Kleuker
Hochschule Osnabrück
Fakultät Ing.-Wissenschaften und Informatik
- Software-Entwicklung -
Objektorientierte Analyse und Design
Sommersemester 2015
6. Aufgabenblatt
Lösungen unter der Nutzung einer Implementierung von List, Set und Map in Java. Ein
Nutzungsdialog kann dazu von der Veranstaltungsseite geladen werden. Im
nachfolgenden Beispieldialog sind Eingaben umrandet.
Beachten Sie, dass vorhandene Funktionalität nicht doppelt implementiert wird, z. B.
erkennen Set-Implementierungen automatisch doppelte Elemente. Dazu dürfen Sie
natürlich die Klasse Student ergänzen. Tipp: Bei der Nutzung von Set und Map sollten
Sie ohne Schleifen in der Klasse StudyCourse auskommen.
Welche Ihrer drei Implementierungen würden Sie in der Praxis nutzen?
Hinweis: Halten Sie sich an die üblichen Java-Coding Guidelines, z. B.
http://home.edvsz.hs-osnabrueck.de/skleuker/querschnittlich/CodingGuidelinesUndGlossar.pdf
(0) terminate
(1) add new student
(2) remove student
(3) search student
(4) show course of Studies
1
matriculation number: 42
name: Lisa
student added
(0) terminate
(1) add new student
(2) remove student
(3) search student
(4) show course of Studies
1
matriculation number: 42
name: Arno
student not added
(0) terminate
(1) add new student
(2) remove student
(3) search student
(4) show course of Studies
3
matriculation number: 42
Student [matnr=42, name=Lisa]
(0) terminate
(1) add new student
(2) remove student
(3) search student
(4) show course of Studies
3
matriculation number: 43
student not found
(0) terminate
(1) add new student
(2) remove student
(3) search student
(4) show course of Studies
4
Studiengang [name=Informatik,
studenten=[Student [matnr=42,
name=Lisa]]]
(0) terminate
(1) add new student
(2) remove student
(3) search student
(4) show course of Studies
2
matriculation number: 43
student not removed
(0) terminate
(1) add new student
(2) remove student
(3) search student
(4) show course of Studies
2
matriculation number: 42
student removed
(0) terminate
(1) add new student
(2) remove student
(3) search student
(4) show course of Studies
4
Studiengang [name=Informatik,
studenten=[]]
(0)
(1)
(2)
(3)
(4)
0
terminate
add new student
remove student
search student
show course of Studies
Seite 2 von 2
Herunterladen