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?