i

Aktivierung von Würfelobjekten

Wer aktiviert die Würfel?

In unserer Lebenswelt werden Würfel aktiviert, indem sie von einer Person geworfen werden.

Würfel werfen

Wir berücksichtigen dies bei der Modellierung einer Würfelsituation.

Das Spieler-Objekt soll über zwei Attribute verfügen, um Referenzen auf die beiden Wuerfel-Objekte zu verwalten.

Objektdiagramm - Würfel

Spieler-Objekt - Version 1

Analysiere die folgende Implementierung der beteiligten Klassen und das gegebene Testprogramm und beantworte die unten aufgeführten Fragen.

#-----------------------------------------------------------
# Würfel
#-----------------------------------------------------------

from random import randint

class Wuerfel(object):

    __slots__ = ('augen')

    def __init__(self):
        self.augen = randint(1, 6)

    def werfen(self):
        self.augen = randint(1, 6)

    def getAugen(self):
        return self.augen

#-----------------------------------------------------------
# Spieler
#-----------------------------------------------------------

class Spieler(object):

    __slots__ = ('rWuerfel1', 'rWuerfel2')

    def __init__(self):
        self.rWuerfel1 = None
        self.rWuerfel2 = None

#-----------------------------------------------------------
# Test
#-----------------------------------------------------------

w1 = Wuerfel()                          # 1
w2 = Wuerfel()                          # 2
print(w1.getAugen(), w2.getAugen())
sp1 = Spieler()                         # 3
sp1.rWuerfel1 = w1                      # 4
sp1.rWuerfel2 = w2                      # 5
sp1.rWuerfel1.werfen()                  # 6
sp1.rWuerfel2.werfen()                  # 7
print(w1.getAugen(), w2.getAugen())

Aufgabe 1

(a) Die Anweisungen im Testprogramm sind durchnummeriert. Welche dieser Anweisungen werden benutzt, um die im Objektdiagramm gezeigte Objektkonstellation zu erzeugen? Gib hierzu genau an, wie die Objektkonstellation Schritt für Schritt erzeugt wird.

Objektdiagramm - Würfel

(b) Was leisten die Anweisungen sp1.rWuerfel1.werfen() und sp1.rWuerfel2.werfen()?

Spieler-Objekt - Version 2

In der folgenden Implementierung ist in der Klasse Spieler eine Methode spielen() ergänzt.

#-----------------------------------------------------------
# Würfel
#-----------------------------------------------------------

from random import randint

class Wuerfel(object):

    __slots__ = ('augen')

    def __init__(self):
        self.augen = randint(1, 6)

    def werfen(self):
        self.augen = randint(1, 6)

    def getAugen(self):
        return self.augen

#-----------------------------------------------------------
# Spieler
#-----------------------------------------------------------

class Spieler(object):

    __slots__ = ('rWuerfel1', 'rWuerfel2')

    def __init__(self):
        self.rWuerfel1 = None
        self.rWuerfel2 = None

    def spielen(self):
        self.rWuerfel1.werfen()
        self.rWuerfel2.werfen()

#-----------------------------------------------------------
# Test
#-----------------------------------------------------------

w1 = Wuerfel()                          # 1
w2 = Wuerfel()                          # 2
print(w1.getAugen(), w2.getAugen())
sp1 = Spieler()                         # 3
sp1.rWuerfel1 = w1                      # 4
sp1.rWuerfel2 = w2                      # 5
sp1.spielen()                           # 6
print(w1.getAugen(), w2.getAugen())

Aufgabe 2

Erkläre, was die Anweisung sp1.spielen() leistet.

Spieler-Objekt - Version 3

Hier eine weitere Implementierung der Klasse Spieler mit einem überarbeiteten Konstruktor.

#-----------------------------------------------------------
# Würfel
#-----------------------------------------------------------

from random import randint

class Wuerfel(object):

    __slots__ = ('augen')

    def __init__(self):
        self.augen = randint(1, 6)

    def werfen(self):
        self.augen = randint(1, 6)

    def getAugen(self):
        return self.augen

#-----------------------------------------------------------
# Spieler
#-----------------------------------------------------------

class Spieler(object):

    __slots__ = ('rWuerfel1', 'rWuerfel2')

    def __init__(self, pWuerfel1, pWuerfel2):
        self.rWuerfel1 = pWuerfel1
        self.rWuerfel2 = pWuerfel2

    def spielen(self):
        self.rWuerfel1.werfen()
        self.rWuerfel2.werfen()

#-----------------------------------------------------------
# Test
#-----------------------------------------------------------

w1 = Wuerfel()                          # 1
w2 = Wuerfel()                          # 2
print(w1.getAugen(), w2.getAugen())
sp1 = Spieler(w1, w2)                   # 3
sp1.spielen()                           # 4
print(w1.getAugen(), w2.getAugen())

Aufgabe 3

(a) Erkläre, wie hier die oben gezeigte Objektkonstellation erzeugt wird.

(b) Ergänze einen zweiten Spieler, der ebenfalls die beiden Würfel werfen kann.

Suche

v
7.2.2.2.3.1
dev.inf-schule.de/oop/python/spiele/beziehungen/referenzattribute/aktivierung
dev.inf-schule.de/7.2.2.2.3.1
dev.inf-schule.de/@/page/wz5CX7MCnphCvtvo

Rückmeldung geben