Übungen
Aufgabe 1: Objekte erzeugen und benutzen
Gegeben ist eine Implementierung der Klasse Wuerfel()
:
from random import randint
class Wuerfel(object):
def __init__(self):
self.augen = randint(1, 6)
def werfen(self):
self.augen = randint(1, 6)
Erzeuge (interaktiv im Python-Dialog) ein Objekt der Klasse Wuerfel
und würfele hiermit solange, bis der
Würfel eine 6 liefert.
Aufgabe 2: Eine Klasse implementieren
In Python gibt es keinen vordefinierten Datentyp für Brüche.
Mit der Klasse Bruch
soll diese Lücke geschlossen werden.
Wir beginnen mit dem folgenden Klassendiagramm zur Klasse Bruch
:
(a) Entwickle eine geeignete Implementierung zu dieser Klasse, so dass Python-Dialoge der folgenden Art möglich werden:
>>> b = Bruch(4, 6)
>>> b.erweitern(3)
>>> b.kuerzen(2)
>>> b.zaehler
...
>>> b.nenner
...
(b) (eher schwierig) Ergänze die Klasse Bruch um eine Operation vollstaendigKuerzen
.
Entwickle auch dazu eine geeignete Implementierung.
Hinweis: Mit Brüchen möchte man natürlich auch rechnen. Das werden wir aber erst in einem der folgenden Abschnitte betrachten.
Aufgabe 3: Eine Klasse konzipieren und implementieren
Ein Zähler ist ein Gerät (Objekt), mit dem man hochzählen kann, und den man gezielt wieder auf Null setzen kann. Man benutzt solche Geräte z.B. bei Verkehrszählungen.
(a) Modelliere eine Klasse Zaehler
, mit der man Objekte erzeugen kann, die sich
wie Zähler in der Wirklichkeit verhalten. Berücksichtige vorerst noch nicht, dass es für die
Zahl eine Obergrenze gibt. Stell die modellierte Klasse mit einem Klassendiagramm dar.
Implementiere und teste anschließend die entwickelte Klasse.
(b) Wenn man eine Uhr simulieren möchte, dann benötigt man einen Sekunden- bzw. Minutenzähler, der so zählt:
0, 1, 2, 3, ..., 58, 59, 0, 1, 2, 3, ..., 58, 59, 0, 1, 2, ...
Ein Stundenzähler zählt entsprechend:
0, 1, 2, 3, ..., 23, 0, 1, 2, 3, ..., 23, 0, 1, 2, ...
Modelliere und implementiere auch für Zählsituationen mit einer Obergrenze eine geeignete Klasse.
Aufgabe 4: Eine Klasse konzipieren
Grafikprogramme können geometrische Objekte (u.a. Kreise) verwalten. Überlege, welche Daten von einem
Objekt der Klasse Kreis
verwaltet werden müssen und welche Operationen ein Objekt der Klasse
Kreis
zur Verfügung stellen könnte.
Beschreibe die Klasse Kreis
mit einem Klassendiagramm per Hand oder mit
dem Programm DIA und entwickle eine geeignete Implementierung in
Python.
Aufgabe 5: Konstruktoren mit flexibler Anzahl von Parametern
Die folgende Deklaration des Konstruktors erlaubt es, Objekte flexibel mit Anfangswerten zu versehen:
class Konto(object):
def __init__(self, nummer=0, betrag=0):
self.nr = nummer
self.stand = betrag
self.inhaber = None
def einzahlen(self, betrag):
self.stand = self.stand + betrag
def auszahlen(self, betrag):
self.stand = self.stand - betrag
Der nachfolgende Python-Dialog zeigte einige Möglichkeiten, Objekte zu erzeugen:
>>> k1 = Konto()
>>> k1.nr
0
>>> k1.stand
0
>>> k2 = Konto(1)
>>> k2.nr
1
>>> k2.stand
0
>>> k3 = Konto(2, 1000.0)
>>> k3.nr
2
>>> k3.stand
1000.0
>>> k4 = Konto(betrag=400.0)
>>> k4.nr
0
>>> k4.stand
400.0
Erkläre, wie die jeweiligen Attributwerte der Objekte zustande kommen.
Quellen
- [1]: Zähler - Urheber: Wesha - Lizenz: Creative Commons BY-SA 3.0