Aktivierung von Würfelobjekten
Wer aktiviert die Würfel?
In unserer Lebenswelt werden Würfel aktiviert, indem sie von einer Person geworfen werden.
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.
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.
(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.