IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langages de programmation Discussion :

[POO] Un mélange osé de static et dynamique, Cherche avis


Sujet :

Langages de programmation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 92
    Par défaut [POO] Un mélange osé de static et dynamique, Cherche avis
    Bonjour,

    Je cherche un avis sur une façon de coder en POO.

    Je voulais savoir si la façon de faire que je vais présenter dessous est une facon connue et employée.

    Je voudrais en fait mélanger du static et du dynamique dans une class de manière à ce que l'accès statique puisse contrôler toutes les instances de la classe.

    Je m'explique avec un exemple :
    Prenons la classe Ennemi.
    je peux instancier des Ennemi :
    ennemi = new Ennemi() ;
    et dans la meme classe je voudrais faire une fonction statique, bougerEnnemi, qui bougerait tous les ennemis.

    En code ça donnerait (AS2 pour la présentation facile à comprendre) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    class Ennemi{
    
    	static public var ennemiTab:Array ; //tableau qui pointera vers toutes les instances Ennemi
    	
    	function Ennemi (){
    		//le constructeur
    	}
    	
    	function bouger(){
    		//bouge l'ennemi
    	}
    	
    	static function init(){
    		// fonction statique qui me créerait tous mes ennemis
    		for(...)
    			Ennemi.ennemiTab[i] = new Ennemi(); 
    	}
    	
    	static function bougerLesEnnemi(){
    		// fonction statique qui ferait bouger tous mes ennemis
    		for(...)
    			Ennemi.ennemiTab[i].bouger();
    	}
    
    }
    Cette facon serait motivée par le fait que je préfèrerais que la fonction bougerLesEnnemi() se trouve dans la classe Ennemi que dans une autre classe. Et ça me permettrait de stocker certaines données relatives à la création de mes ennemis dans la classe directement plutot qu'à n'importe quel autre endroit.

    Qu'est ce que vous pensez de cette facon de faire, est-ce que c'est employé, est-ce que c'est complètement NON recommandé, est-ce que c'est trop farfelu pour que quelqu'un ait essayé de l'envisager ?

    Merci de vos réponses

  2. #2
    Membre émérite Avatar de HanLee
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2004
    Messages : 738
    Par défaut
    Moi perso, en tout cas, j'trouve ça assez stylé.

    Ca fait un peu comme si tu appliquais une fonction à un ensemble d'éléments, plutôt qu'à des éléments particuliers.

    Ca fait clair et net.

    Après je sais pas si c'est une pratique déconseillée...

  3. #3
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Je préfère avoir une classe manager dédiée pour ce genre de choses. Séparation des responsabilités tout ça.
    Je préfère avoir des variables, éventuellement globales (déguisées en singletons si besoin est) (dans un premier temps), au pattern que tu emplois et dont j'ai le nom sur le bout de la langue -- mono-state, je crois
    Dans un premier temps. Car dans un second on peut plus facilement migrer vers des îlots de groupes différents si jamais le besoin devait se préciser.
    Et puis une variable permet de mieux gérer les durées de vie, on a constructeurs et destructeur, ...

    PS: ici ce n'est pas tant une séparation statique/dynamique, mais une séparation unique partagé/non unique non partagé.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 92
    Par défaut
    oui d'ailleurs je suis parti sur une structure classique

    Merci d'avoir donné vos avis

Discussions similaires

  1. [POO] Définition des variables membre static
    Par AurélienB dans le forum Langage
    Réponses: 13
    Dernier message: 18/02/2008, 11h39
  2. [POO] PHP 4.x : chargement de fonction dynamiquement
    Par Invité dans le forum Langage
    Réponses: 4
    Dernier message: 17/09/2007, 18h17
  3. Réponses: 10
    Dernier message: 06/04/2007, 10h56
  4. Réponses: 4
    Dernier message: 18/01/2007, 05h46
  5. [POO] Problème avec une variable static
    Par grimsk dans le forum Langage
    Réponses: 5
    Dernier message: 23/05/2006, 01h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo