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