POO : héritage, méthode statique et tri sur mesure

Proposition de plan pour réaliser le challenge SURVIVAL_1, avec de l’héritage, une méthode statique et un tri sur mesure.

→ Challenge Methodology: Survie sur une île déserte #1
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)

schéma UML

Plan proposé

Héritage

Les avions (Plane) et l’île (Island) sont chacun positionnés par des positions x et y. C’est pourquoi on peut les faire hériter d’une même classe « MapPoint » (= point sur la carte).

Méthode statique

Le calcul de la distance va se faire dans une classe dédiée, Calcul, au travers d’une méthode statique « distance ». Cette méthode prend en paramètre 2 MapPoint. On pourra donc calculer la distance entre un Plane et un Island, mais aussi entre 2 Plane, etc.

La méthode est statique pour qu’on ait pas besoin d’instancier la classe pour l’utiliser. La classe Calcul nous sert surtout ici à bien ranger le calcul de la distance.

LostPerson

2 propriétés :

  • Un Island, défini par le constructeur. C’est là que se trouve cette personne perdue.
  • Un tableau de Plane, qu’on gèrera dans scanSky. C’est cette méthode qui sera chargé de parser les informations de l’énoncé.
  • La méthode sortPlanes devra utiliser la fonction usort (pour PHP) de façon astucieuse. C’est un point de complexité, mais les tris sur mesure sont un concept à maitriser.
  • La méthode getCodesPlanes renvoie seulement les codes des avions, c’est ce qu’attend le challenge

Programme principal

Voici à quoi peut ressembler le programme principal : (en PHP)

$island = new Island($islandX, $islandY);
$lostPerson = new LostPerson($island);
$lostPerson→scanSky($planes);
$lostPerson→sortPlanes();
echo $lostPerson→getCodesPlanes(3);

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