Logo des digitalen Schulbuchs inf-schule.de. Schriftzug in Zustandsübergangsdiagramm eines endlichen Automaten.

KIDS

Ü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:

  • Das Konto mit der Nummer 23 hat den Inhaber Werner Schmidt. Kunde Werner Schmidt hat Zugriff auf das Konto mit der Nummer 23.
  • Das Konto mit der Nummer 42 hat den Inhaber Theresa Meier. Kundin Theresa Meier hat Zugriff auf das Konto mit der Nummer 42.

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

  • Kunde Werner Schmidt hat Zugriff auf das Konto mit der Nummer 23 und das Konto mit der Nummer 16.
  • Kundin Theresa Meier hat Zugriff auf das Konto mit der Nummer 42.

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

  • Kunde Werner Schmidt hat Zugriff auf das Konto mit der Nummer 23.
  • Kundin Theresa Meier hat Zugriff auf das Konto mit der Nummer 42, auf das Konto mit der Nummer 60 und das Konto mit der Nummer 91.

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:

  • Der Artikel zum Stichwort HTML wurde vom Benutzer helmut03 verfasst.
  • Der Artikel zum Stichwort CSS wurde vom Benutzer loreley verfasst.
  • Der Artikel zum Stichwort Barrierefreiheit wurde vom Benutzer loreley verfasst.

(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