Übungen

Aufgabe 1: Objekte mit Beziehungen erzeugen

Beschreibe die vorgegebenen "Bankwelten" zunächst mit einem Objektdiagramm. Benutze anschließend die Klassen aus Abschnitt Exkurs - Implementierung von Beziehungen in Python, um die "Bankwelten" zu erzeugen.

(a) Erzeuge Objekte für eine "Bankwelt", in der jeder Kunde Zugriff auf genau ein Konto hat:

(b) Erzeuge Objekte für eine "Bankwelt", in der jeder Kunde Zugriff auf ein Erstkonto und ggf. ein Zweitkonto hat:

(c) Erzeuge Objekte für eine "Bankwelt", in der jeder Kunde Zugriff auf beliebig viele Konten hat:

Aufgabe 2: Beziehungstypen implementieren

In der freien Enzyklopädie Wikipedia werden Artikel zu Stichwörtern von Benutzern verfasst. Eine erste Modellierung der Klassen Artikel und Benutzer könnte wie folgt aussehen:

Klassendiagramm

(a) Implementiere die Klassen und erzeuge Objekte zur Beschreibung folgender Situation:

(b) Das Modell soll so erweitert werden, dass Artikel von Benutzern überarbeitet werden können:

Klassendiagramm

Implementiere das erweiterte Modell und erzeuge eine typische Objektsituation. Verdeutliche die erzeugte Objektsituation auch mit einem Objektdiagramm.

(c) Wie müsste man die Klasse Benutzer erweitern, wenn hier auch die Mitarbeit an Artikeln mit einem Referenzattribut erfasst werden soll?

Aufgabe 3: Klassen mit Beziehungen konzipieren und implementieren

Ein Geometrieprogramm soll verschiedene geometrische Objekte verwalten: Punkte, n-Ecke und Figuren, die aus n-Ecken zusammengesetzt sind.

Ein Punkt wird dabei über zwei Koordinaten festgelegt. Ein n-Eck besteht aus n Punkten. Eine Figur besteht aus mehreren (mindestens einem) n-Ecken.

Alle diese Objekte kann man in x- und y-Richtung verschieben.

(a) Konzipiere und implementiere Klassen zu den genannten geometrischen Objekten. Ein Testprogramm könnte etwa so aussehen:

from geometrie import *
# Punkte
p1 = Punkt(0, 0)
p2 = Punkt(0, 10)
p3 = Punkt(10, 10)
p4 = Punkt(10, 0)
p5 = Punkt(0, 10)
p6 = Punkt(10, 10) 
p7 = Punkt(5, 15)
# Rechtecke und Dreieck (als n-Eck)
rechteck = Neck([p1, p2, p3, p4])
dreieck = Neck([p5, p6, p7])
# Haus des Nikolaus als Figur
haus_nikolaus = Figur()
haus_nikolaus.hinzufuegen(rechteck)
haus_nikolaus.hinzufuegen(dreieck)
# Figur verschieben
haus_nikolaus.verschieben(2, 3)

(b) Was geht in dem folgenden Testprogramm beim Verschieben schief?

from geometrie import *
# Punkte
p1 = Punkt(0, 0)
p2 = Punkt(0, 10)
p3 = Punkt(10, 10)
p4 = Punkt(10, 0)
p6 = Punkt(10, 10) 
p7 = Punkt(5, 15)
# Rechtecke und Dreieck (als n-Eck)
rechteck = Neck([p1, p2, p3, p4])
dreieck = Neck([p2, p6, p7])
# Haus des Nikolaus als Figur
haus_nikolaus = Figur()
haus_nikolaus.hinzufuegen(rechteck)
haus_nikolaus.hinzufuegen(dreieck)
# Figur verschieben
haus_nikolaus.verschieben(2, 3)
X

Fehler melden

X

Suche