Übungen
Aufgabe 1: Würfel
Gegeben ist die Klasse Wuerfel
.
Ändere diese Klasse so ab, dass (ohne Insiderwissen) kein direkter Zugriff auf das Attribut augen
möglich ist. Implementiere diese Klasse und teste sie mit einem geeigneten Testprogramm.
Aufgabe 2: Schlange
Die Klasse Schlange
wird wie folgt implementiert.
class Schlange(object):
def __init__(self):
self.liste = []
self.anzahl = 0
def istLeer(self):
if self.anzahl == 0:
return True
else:
return False
def mitLetztem(self, element):
self.liste = self.liste + [element]
self.anzahl = self.anzahl + 1
def ohneErstes(self):
if not self.istLeer():
self.liste = self.liste[1:]
self.anzahl = self.anzahl - 1
def erstes(self):
if self.istLeer():
return None
else:
return self.liste[0]
def anzahlElemente(self):
return self.anzahl
def getSchlange(self):
return self.liste
def setSchlange(self, liste):
self.liste = liste
self.anzahl = len(self.liste)
(a) Welches Problem taucht im folgenden Python-Dialog auf?
>>> s = Schlange()
>>> s.liste = s.liste + [3]
>>> s.istLeer()
(b) Formuliere einen Hinweis, den man bei der Verwendung der Klasse Schlange
beachten sollte.
Aufgabe 3: Fehlersuche
Gegeben ist folgende Implementierung der Klasse Bruch
:
class Bruch(object):
def __init__(self, z, n):
self.zaehler = z
self.nenner = n
def erweitern(self, k):
self.zahler = self.zaehler * k
self.nenner = self.nenner * k
def kuerzen(self, k):
if (self.zaehler % k == 0) and (self.nenner % k == 0):
self.zaehler = self.zaehler // k
self.nenner = self.nenner // k
(a) Teste diese Implementierung der Klasse Bruch
. Irgend etwas stimmt hier nicht. Findest du den Fehler?
Benutze das Attribut __dict__
zur Fehlersuche. Erkläre, was hier schiefläuft.
(b) Warum ist es so schwierig, Flüchtigkeitsfehler wie den oben gezeigten zu finden?