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

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

Klassendiagramm

(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.

Zähler[1]

(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

X

Fehler melden

X

Suche