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

Übungen

Aufgabe 1: Würfel

Gegeben ist die Klasse Wuerfel.

Klassendiagramm

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

X

Fehler melden

X

Suche