POO : Méthode statique et typage avec des classes

3 classes à construire, dont une qui ne contiendra qu’une méthode statique.

→ Challenge Methodology: Jeux Olympiques – Tableau des médailles
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 SURVIVAL_1 : (certains éléments du diagramme font référence à PHP mais cette conception vaut pour tous les langages)

Plan proposé

Le challenge Jeux Olympiques – Tableau des médailles te demande de déterminer la nation qui a le score total le plus élevé, à partir d’un tableau de lignes au format CODE : Gold,Silver,..., puis de retourner CODE_POINTS (ex : FRA_85).

Etape 1 : parser la donnée

On créera une méthode statique dans une classe Parser dédiée. L’objectif étant de transformer la donnée récupérée par l’énoncé en un tableau mieux structuré (cf. schéma).

Etape 2 : modéliser une Nation

Une Nation est identifiée par son code.

Une Nation a 3 compteurs de médailles, tous à zéro initialement. La méthode addMedal permet de faire évoluer ces compteurs.

La méthode getScoreTotal réalisera le calcul du score avant de retourner la valeur.

La méthode getCodeAndScore sert à retourner la réponse attendue par le challenge.

Etape 3 : agréger et trouver la meilleur Nation

Ce sera le rôle de la classe Table qui représente le tableau des médailles.

On va commencer par y ajouter chaque Nation grâce à la méthode addNation.

La complexité algorithmique se trouvera dans la méthode getBestNation() qui retournera une Nation.

Programme principal

Voici une proposition de programme principal qui montre comment les différentes classes et méthodes peuvent s’orchestrer :

$tableOfMedals = new Table;

foreach ($table as $informations) {

   $data = Parser::parse($informations);

   $nation = new Nation($data['code']);
   foreach ($data['medals'] as$medal) {
      $nation->addMedal($medal);
   }

   $tableOfMedals->addNation($nation);
}

echo $tableOfMedals->getBestNation()->getCodeAndScore();

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 ?

Keep learning

Other content to discover