Einstieg - Simulation eines Roboters
Abänderung eines Bausteins
Die Datei roboter.py enthalte eine Implementierung der Klasse 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?