Académique Documents
Professionnel Documents
Culture Documents
Aide Jalon01-2
Aide Jalon01-2
Après avoir lu la fiche fiche_jalon01.pdf, on voit que la classe Strategy offre tous les services dont on a besoin
à l’exclusion de la méthode next_action.
Conclusion Toutes les classes dérivées de ce jalon doivent donc contenir la définition de cette méthode.
Quand on regarde le constructeur de la classe Straegy, on s’aperçoit qu’il dispose de trois paramètres :
1. Un style (défini par un entier à valeur dans {−1, 1, 0} qui par défaut vaut 1
2. Une taille mémoire maximale (définie par un entier à valeur dans Z, qui, par défaut vaut 0
3. Un modèle (défini par une instance de la classe Model) qui par défaut vaut m1 et qui correspond à l’utilisation
de deux actions “D” et “C” (pour duper et coopérer).
On comprend que, si la classe dérivée fonctionne avec des valeurs qui sont différentes d’une (ou plusieurs) valeurs
par défaut différentes des valeurs prédéfinies, il faudra réécrire le constructeur.
Quand on réécrit le constructeur d’une classe fille, il faut penser à appeler le constructeur de la classe parente. Deux
manières de faire (en python) :
1. Sans se préoccuper du nom de la classe parente, on « invoque » son constructeur en utilisant la syntaxe
super().__init__(params)
2. En supposant connue le nom de la classe parente (ici Parente), on invoque son constructeur par
Parente.__init__(self, params)
Pour cette fiche, il va donc falloir, pour chaque nouvelle classe, se poser la question :
« Quels sont les valeurs des paramètres qui ne sont pas les valeurs par défaut du constructeur de la classe Strategy ? »
Rappel le modèle ayant 2 actions est m1 ; le modèle gérant 3 actions est m2.
1 Classes dérivées
Pour chaque classe, pour chaque paramètre du constructeur de la classe Stratetgy – Les trois paramètres sont : styl,
memsz et model (notez la minuscule, ce n’est pas le type mais le nom du paramètre). – on vous donne s’il s’agit du
paramètre par défaut ou pas :
• Gentle oui, oui, oui
• Bad non, oui, oui
• Fool non, oui, oui
• Human non, oui, non
• GentleSulky oui, non, non
• BadSulky non, non, non
• FoolSulky non, non, non
1
• Tit4Tat oui, non, oui
• WinStayLooseShift oui, non, oui
def __init__(self):
• Human : peut travailler sur différents modèles, mais par défaut travaille avec m1
def __init__(self,le_modele:Model=m1):
Le constructeur de la classe Strategy accepte 3 paramètres nommés styl, maxsz et model. Quand on souhaite
modifier les 3 paramètres avec les informations v1, v2, v3. Il suffit d’appeler le constructeur avec les informations dans
l’ordre super().__init__(v1, v2, v3) Mais lorsqu’on souhaite ne modifier que certaines valeurs, par exemple
celle de maxsz, on va utiliser le nom du paramètre pour lui affecter la valeur souhaitée :
super().__init__(maxsz=v2)