JeuWeb - Crée ton jeu par navigateur
Modélisation de classe - Points de vue - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Modélisation de classe - Points de vue (/showthread.php?tid=2583)



Modélisation de classe - Points de vue - Sephi-Chan - 20-05-2008

Salut à tous,

À chaque fois que je développe, je fais face à un problème récurrent : le choix du point de vue lors de la modélisation de mes classes.

Parfois, je me demande si je prends le point de vue de l'acteur, d'autre fois, le point de vue de l'objet en lui même. Jusqu'où abstraire les actions ?

Par exemple, admettons un cas simple et courant où un joueur peut créer et administrer une guilde.

Mieux vaut-il donner à la classe Joueur des méthodes telles fonderGuilde($guilde), dissoudreGuilde($guilde), inviterMembrer($joueur, $guilde) ou bien donner à la classe Guilde des méthodes ajouter($joueur) et renvoyer($joueur), fonder($guilde, $fondateur), etc.

Voilà, j'aimerai votre avis sur la question.

Mon opinion personnelle est de préférer placer l'acteur au centre de l'application, car je trouve ça plus logique.



Sephi-Chan


RE: Modélisation de classe - Points de vue - Cartman34 - 20-05-2008

la deuxième solution est plus logique car il s'agit des action qu'on peut faire sur la guilde...
Perso, je pense mes méthodes pour que ce soit elle qui agissent sur l'objet et non un autre objet qui agit sur elle.
Ceci est aussi obligé avec les attributs privés ou protégés.
je pense que dans le cas d'un objet regroupant d'autres objets, dans ton exemple tu dois faire en sort que chaque objet user connait sa guilde et ses droits et que l'objet guilde connaisse tous ses users.


RE: Modélisation de classe - Points de vue - naholyr - 20-05-2008

Je préfère aussi placer l'acteur au centre de l'application.

Sauf que quand une action concerne deux acteurs, l'acteur "principal" change selon le contexte Wink

Donc ma réponse : les deux mon capitaine !

Code PHP :
<?php 
class Guilde
{

public static function
fonder($nom, Joueur $joueur)
{
$guilde = new Guilde($nom);
$guilde->setFondateur($joueur);
$guilde->saveToDB();
return
$guilde;
}

}
Code PHP :
<?php 
class Joueur
{

public function
fonderGuilde($nom)
{
return
Guilde::fonder($nom, $this);
}

}

Pourquoi se priver d'un raccourci intéressant ? Quand il y a deux acteurs concernés, il est normal qu'ils aient tous deux droit à l'action.
Comme on dit souvent chez nos voisins «Get more than one way to do it».


RE: Modélisation de classe - Points de vue - Cartman34 - 20-05-2008

Quand il s'agit de construire et de détruire, mon opinion est légèrement différente de celle de mon dernier message.
En effet, c'est à l'user d'exécuter une méthode permettant de créer une guilde et de la détruire et ceux en focntion des droits que la guilde peut lui autoriser ou non.
Pour tout le reste, c'est la guilde qui doit tout gérer...Ca me semble etre un des principe de la POO.
Les objets se lient mais restent indépendant(dans leur action, pas dans leur construction/destruction qui doivent être appelées par un élément extérieur).