28-08-2012, 02:34 PM
Hum, la question n'est pas forcément : "Est-ce que la POO est appropriée ici ?". Tout va dépendre de ton code et de ton projet.
Dans ce cas, tu peux voir une classe abstraite pour gérer tes vaisseaux.
En prenant un exemple à la con : Imaginons que tu pourrais avoir des vaisseaux mécaniciens (qui vont réparer les autres vaisseaux de ta flotte), des vaisseaux de défense (qui vont apporter un bouclier d'énergie à l'ensemble de tes vaisseaux), des vaisseaux d'attaque, ...
De là, tu as une classe abstraite qui regroupe les fonctions communes à tout tes vaisseaux.
- abstract class Vaisseau {}
Ensuite, tu as une classe pour chaque spécialisation des vaisseaux qui vont étendre de la classe principale :
- class VaisseauMecanic extends Vaisseau {}
- class VaisseauDefense extends Vaisseau {}
- class VaisseauOffense extends Vaisseau {}
Ces classes apportent par une surcharge des comportement spéciaux pour chacun des vaisseaux. A partir de là, quand tu vas engager ton script de combat, via une classe :
- class Fight {} (pas très original)
Une classe spécifique peut aller se charger de récupérer les données des deux flottes, et retourner pour chacun des vaisseaux de la flotte un objet correspondant à sa classe particulière (VaisseauMecanic, VaisseauDefense, ...).
Quand tu fais ton combat en 5 tours, tu n'as plus qu'à boucler par exemple et faire les actions spécifiques à chaque vaisseau.
Après c'est peut-être pas la meilleure solution pour résoudre ton problème, parce que je ne connais pas tes attentes pour ton exemple. Mais dans l'ensemble c'est à mes yeux une utilisation "correcte" de la POO.
Dans ce cas, tu peux voir une classe abstraite pour gérer tes vaisseaux.
En prenant un exemple à la con : Imaginons que tu pourrais avoir des vaisseaux mécaniciens (qui vont réparer les autres vaisseaux de ta flotte), des vaisseaux de défense (qui vont apporter un bouclier d'énergie à l'ensemble de tes vaisseaux), des vaisseaux d'attaque, ...
De là, tu as une classe abstraite qui regroupe les fonctions communes à tout tes vaisseaux.
- abstract class Vaisseau {}
Ensuite, tu as une classe pour chaque spécialisation des vaisseaux qui vont étendre de la classe principale :
- class VaisseauMecanic extends Vaisseau {}
- class VaisseauDefense extends Vaisseau {}
- class VaisseauOffense extends Vaisseau {}
Ces classes apportent par une surcharge des comportement spéciaux pour chacun des vaisseaux. A partir de là, quand tu vas engager ton script de combat, via une classe :
- class Fight {} (pas très original)
Une classe spécifique peut aller se charger de récupérer les données des deux flottes, et retourner pour chacun des vaisseaux de la flotte un objet correspondant à sa classe particulière (VaisseauMecanic, VaisseauDefense, ...).
Quand tu fais ton combat en 5 tours, tu n'as plus qu'à boucler par exemple et faire les actions spécifiques à chaque vaisseau.
Après c'est peut-être pas la meilleure solution pour résoudre ton problème, parce que je ne connais pas tes attentes pour ton exemple. Mais dans l'ensemble c'est à mes yeux une utilisation "correcte" de la POO.