i

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?

Suche

v
7.2.4.3.1
inf-schule.de/oop/python/roboter/datenkapselung/einstieg_blackbox
inf-schule.de/7.2.4.3.1
inf-schule.de/@/page/Oj5m2WBQyTXhWctg

Rückmeldung geben