POO : 2 classes ou 3 classes ?

Commence par faire 2 classes, puis crées en une troisième pour mieux organiser ton code

→ Challenge Methodology: Wade Wilson part en mission !
Coder dans la sandbox You must be logged in to access the sandbox.

Voici une proposition de diagramme UML à suivre pour résoudre le challenge DEADPOOL : (certains élements du diagramme font référence à PHP mais cette conception vaut pour tous les langages)

UML DEADPOOL

L’objet Deadpool

  • Il contient un ensemble de constantes qui sont les différentes valeurs présentes dans l’énoncé
  • Une propriété hp (= health points = points de vie)
  • Une propriété time
  • Une méthode steps qui prend en paramètres l’ensemble des steps à réaliser
  • Une méthode step qui execute le déroulé d’un step particulier
  • Une méthode privée getEffectOnHpForAStep qui donne la correspondance step => effet sur les points de vie
  • Une méthode privée getTimeForAStep qui donne la correspondance step => temps écoulé
  • Une méthode regenerate qui permet de régénérer Deadpool si jamais ces hp tombent à zéro (ou moins)
  • Une méthode getResult qui renvoie le résultat attendu par le challenge, et fait donc appel à la méthode de Clock

L’objet Clock

  • Il contient une seule méthode qui est chargée de transformer une quantité de secondes vers les format texte : « xxmin_yysec »

Séparation des préoccupations

Quand il y a des méthodes privées dans une classe, cela peut indiquer que la classe « fait trop de choses » et qu’on ne respecte plus la séparation des préoccupations et donc le S de Solid (Single Responsabilty).

Tu pourrais alors créer une troisième classe, par exemple « StepsEffects » qui contiendrait :

  • Une partie des constantes
  • Les méthodes getEffectOnHpForAStep et getTimeForAStep

A toi de coder !

N’oublie pas, le but de ce contenu est de proposer une conception permettant de résoudre le challenge avec un code objet et donc de progresser sur cette pratique. Ce n’est pas une réponse absolue et unique 😉


Qui a codé ce superbe contenu ?