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

Einstieg - Simulation eines Roboters

Abänderung eines Bausteins

Die Datei roboter.py enthalte eine Implementierung der Klasse Roboter.

Klassendiagramm - Roboter

In einem Programm wird jetzt diese Implementierung der Klasse Roboter als eine Art Baustein benutzt:

from roboter import *

rob = Roboter()

for i in range(4):
    for j in range(4):
        rob.schritt()
        print(rob.x, rob.y, rob.r)
    rob.links()
    print(rob.x, rob.y, rob.r)

Jemand ändert die Implementierung des Bausteins Roboter in der Datei roboter.py wie folgt ab:

class Roboter(object):
    def __init__(self):
        self.pos = (0, 0)
        self.r = 'S'

    def schritt(self):
        if self.r == 'O':
            self.pos = (self.pos[0] + 1, self.pos[1])
        elif self.r == 'S':
            self.pos = (self.pos[0], self.pos[1] + 1)
        elif self.r == 'W':
            self.pos = (self.pos[0] - 1, self.pos[1])
        elif self.r == 'N':
            self.pos = (self.pos[0], self.pos[1] - 1)

    def rechts(self):
        # ... wie bisher ...

    def links(self):
        # ... wie bisher ...

Aufgabe 1

Angenommen, du hast das nicht mitbekommen und führst noch einmal das oben gezeigte Programm aus.

from roboter import *

rob = Roboter()

for i in range(4):
    for j in range(4):
        rob.schritt()
        print(rob.x, rob.y, rob.r)
    rob.links()
    print(rob.x, rob.y, rob.r)

(a) Warum kommt es jetzt zu einer Fehlermeldung?

(b) Wie könnte man den Baustein konzipieren, so dass Veränderungen der Implementierung möglich sind, ohne dass es zu Fehlermeldungen bei der Nutzung kommt?

X

Fehler melden

X

Suche