JeuWeb - Crée ton jeu par navigateur
[POO]Association et agragation d'objet. - 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 : [POO]Association et agragation d'objet. (/showthread.php?tid=849)



[POO]Association et agragation d'objet. - joshua - 21-02-2007

au secours, je nage sur ce point.....
J'ai une classe joueur, une classe planete et une classe ressource.
Séparément tout va bien. Maintenant, j'essaie d'appliquer la regle:
un joueur peut avoir de 1 à 5 planetes et chaque planete a 3 ressources primaires.
Comment lier classes et objets? je suis perdu dans la complexité :'(
Quelqu'un pourrait m'expliquer simplement les aggragation d'objet et les associations?
Merciiiiiii


RE: [POO]Association et agragation d'objet. - Seren - 21-02-2007

L'aggrégation c'est créer un objet qui va contenir plusieurs objets de types différents.

En C, l'aggrégation passe par les structures.

Si t'as une classe planète et une classe joueur, on peut imaginer que t'as une classe "JoueurPlanète" pour gérer les interaction entre les deux.

Code PHP :
<?php 
class clsJoueurPlanete{
$protected $planet;
$protected $player;

public function
__construct($joueurId, $planetId){
$this->planet = new clsPlanet($planetId);
$this->player = new clsPlayer($joueurId);
}

public function
acheterPlanet(){
//récupère le prix de la planète en passant par l'objet Planet
$prix = $this->planet->getPrice();
// déduit le prix de l'argent du compte en banque du joueur en utilisant l'objet joueur
$this->player->pay($prix);
// change le contrôle de la planete
$this->planet->setNewOwner($this->player->joueurID);

}

Je suppose que les méthodes getPrice, pay et setNewOwner existent.

Implicitement je suppose aussi que les classes Planète et Joueur sont des accesseurs (ou contiennent des méthodes qui sont des accesseurs, je suis pas sûr de la terminologie.)

Au niveau "conceptuel", la classe "JoueurPlanète" fait partie du Controller, et Planète et Joueur du Model.