MezData-Logo Creative Commons License 2137 Lösungen Button :OOP: Musterarbeit

1 Grundlagen 5 Punkte

Differenzieren Sie die Begriffe statische und dynamische Polymorphie anhand eines Klassendiagramms.

2 MP3-Player 25 Punkte

Die Software für einen MP3-Player soll entwickelt werden. Das "Human Interface" besteht aus einem Display und einem Multifunktions-Sensor. Beides wurde zu einer Klasse Oberflaeche zusammengefügt. Der bisherige Entwickler ist leider verschollen und hat diese Notizen hinterlassen:

2.1 Entwickeln einer Klasse Oberflaeche 5 Punkte

Oberflaeche
lcd[300][200] : GZ

- fontSize : GZ

printTextZeile(y:GZ, t:Text)

+ buzzer(freq: GZ)
- menuClick()
- playClick()
- forwardClick()
- backClick()
- okClick()
- deltaPhi()

256-Graustufen-Display mit 300*200 Pixeln. (0 = durchsichtig (weiß); 255 = schwarz) Nullpunkt oben links.
fontSize gibt die Höhe einer Schriftzeile an mit notwendigem Zeilen-Abstand
Hintergrundbeleuchtung "backlight" kann 16 verschiedene Helligkeiten annehmen.
setzePixel(...) setzt einen Bildpunkt an eine definierte Position mit einer definierten Helligkeit.
setMalFarbe(...) legt die aktuelle Pixelhelligkeit fest, mit der gezeichnet werden soll...
printTextZeile(y:GZ, t:Text) kann an eine y Position den Text t (mit '>' am Ende) schreiben (ganze Zeile wird vorher gelöscht).
Zur Bedienung ist ein Multifunktions-Sensor angebracht, der folgende EventMethoden zur Verfügung stellt:

menuClick() playClick() forwardClick() backClick() okClick()

deltaPhi(), wenn man den Finger über den Sensor kreisen lässt, wird bei einem Winkel von mehr als 10 Grad die Methode deltaPhi aufgerufen.

Entwerfen Sie ein stimmiges UML-Klassendiagramm für die Oberfläche, d.h. notwendige Attribute (geheim!), Methoden, Modifizierer und Parameter sind zu ergänzen (aber nicht übertreiben)!
Achtung: Public-Attribute führen zu Punktabzügen!

2.2 Spezialisierung, Erweitern einer Klasse 4 Punkte

Die Klasse Oberflaeche wird um eine Methode zeichneTrennlinie(y:GZ) erweitert. Sie zeichnet eine 1 Pixel breite horizontale Linie auf dem Display unter Verwendung der Methode setzePixel(...).
Das Zeichnen geschiet durch Invertieren der vorhandenen Pixel vermöge neuPixel = 255-altPixel. Folge wird eine Linie zweimal gezeichnet ist sie wieder gelöscht! Erweitern Sie das Klassendiagramm durch die nun neue Klasse NewOberfläche! Hinweis: Gegebenenfalls müssen Sie noch "Denkfehler" in der Klasse Oberfläche korrigieren!

2.3 Entwickeln eines Struktogramm 6 Punkte

Erstellen Sie ein Struktogramm für die Methode zeichneTrennlinie(y:GZ)!

2.4 Sequenzdiagramm: Scrollen durch das Menü 10 Punkte

Beim Kreisen des Fingers über das Sensorfeld wird alle 10 Grad die Methode deltaPhi() aufgerufen. Das löst den Aufruf der Methode naechsterPunkt() der Klasse Steuerung aus. Hierbei ergeben sich nun zwei wesentliche Fälle:

  1. Die Methode naechsterPunkt() versetzt die Trennlinie aus 2.2 um einen Eintrag nach unten.
  2. Die Trennlinie ist schon ganz unten, die Einträge im Menü müssen nach oben gescrollt werden, die Klasse Steuerung verfügt über ein Attribut menue[7]:Text. Hinweis: menue[0] = "Interpreten"

Erstellen Sie jeweils ein Sequenzdiagramm für diese beiden Abläufe.

3 Verwaltung der Musiktitel 15 Punkte

3.1 Erstellen einer Klasse Titel 5 Punkte

Erstellen Sie ein UML-Klassendiagramm für eine Klasse "Titel" die alle Informationen aus obigem Auszug eines Titel aufnehmen kann.
Hinweise: Der Lautsprecher bedeutet, das der Titel gerade gespielt wird. Ein Häkchen bei Titelname bedeutet, dass der Titel noch aktiv ist.

Wichtig: Die Informationen sollen hierbei nicht geheim sein. Verwenden Sie die Bezeichnungen für die Datentypen aus der Formelsammlung!

3.2 Verwaltung der Titel mit der Klasse TitelFinder 5 Punkte

Die Titel werden von einer Klasse "TitelFinder" verwaltet. Ein TitelFinder ist auch der Eigentümer der Titel. TitelFinder kann darüber hinaus auch so genannte "CoolList" besitzen, das sind intelligente Wiedergabe-Listen, z.B. eine Liste mit dem Namen "Goa **" in dem automatisch alle Titel der Musikrichtung Goa und mit der Wertung "**" gesammelt werden.

Erstellen Sie ein UML-Assoziations-Klassendiagramm für diese Beziehungen, mit Kardinalitäten usw.!

3.3 Objektdiagramm 5 Punkte

Erstellen Sie ein Objektdiagramm für "denTitelFinder", den 3 Titel aus 3.1 und der ersten und einzigen CoolListe namens "Goa **"!

Musterlösung...

Total 45 Punkte