i

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

Suche

v
3.2.3.3.4
inf-schule.de/modellierung/ooppython/bank/datenkapselung/uebungen

Rückmeldung geben