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

C++ Discussion :

Quel design pattern pour un garage compos� de voitures.


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm� Avatar de b Oo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    179
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 179
    Par d�faut Quel design pattern pour un garage compos� de voitures.
    Bonjour � tous,
    j'ai :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class Garage
    {
         // des trucs
       public:
         Voiture * creeVoiture();
         // des trucs
    };
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    class Voiture
    {
         // des trucs
       public:
         // des trucs
    };
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    class Ferrari : public Voiture
    {
         // des trucs
       public:
         // des trucs
    };
    Je voudrais pouvoir rajouter des voitures dans mon garage juste en cr�eant une classe qui h�rite de Voiture (comme Ferrari).
    Comment puis-je faire sachant que je veux juste que mon garage contienne toutes les voitures diff�rentes (ie l'ensemble des voitures que je peux cr�er) et que garage n'est pas oblig� de construire toutes les voitures ?
    Par exemple je peux avoir Ferrari et Porsche qui peuvent �tre construites par mon garage, mais garage ne contiendra qu'une Ferrari par exemple au d�but.
    Si je fais un conteneur de voitures * en static dans garage et une m�thode static dans Voiture (que je dois red�finir dans les classes filles), cela est-il correct ? Il y a mieux ?
    J'aimerais aussi savoir si cela se rapproche d'un design pattern, si oui lequel.

    Merci d'avance.

  2. #2
    R�dacteur/Mod�rateur
    Avatar de JolyLoic
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    5 463
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 50
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 5 463
    Par d�faut
    Je ne comprend pas trop o� tu veux en venir. D�j�, j'ai du mal � voir pourquoi Ferrari serait une classe d�riv�e de voiture. Qu'est-ce qu'une Ferrari a qui fait que ce n'est pas simplement une voiture ?

    A part �a, le design pattern qui me vient en t�te quand on parle de cr�ation d'objet est avant tout le pattern Factory. Mais n'ayant pas compris ton besoin, je ne sais s'il s'applique ici.
    Ma session aux Microsoft TechDays 2013 : D�velopper en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage � la d�couverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'h�sitez pas � me contacter.

  3. #3
    R�dacteur

    Avatar de Matthieu Brucher
    Profil pro
    D�veloppeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    D�tails du profil
    Informations personnelles :
    �ge : 43
    Localisation : France, Pyr�n�es Atlantiques (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par d�faut
    Ce n'est pas ton garage qui construiot des voitures, tu devrais bien s�parer le garage - stockage - de la construction - pattern Builder ou Factory -

  4. #4
    Membre confirm� Avatar de b Oo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    179
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 179
    Par d�faut
    Je suis d'accord, j'ai besoin d'une classe qui construit mes voitures.
    Pour le garage, je dois suivre une interface qui comprend cr�erVoiture().
    Donc si je suis oblig� d'avoir creerVoiture dans ma classe garage, il serait mieux que je cr�e une classe Factory qui se charge d'impl�menter la cr�ation d'une voiture et creerVoiture() de ma classe garage devra appeler la m�thode de constrution de ma Factory.

    Ce que je voudrais c'est que mon garage contiennent diff�rentes voitures et que la m�thode de ma Factory construise al�atoirement des voitures.
    Pour rajouter une voiture, je voudrais simplement ajouter quelques classes.
    Par exemple pour Ferrari, admettons que j'ai cr�er une Enzo, pour peugeot une 206.
    Ma factory devra contruire par exemple 10 voitures : 7 Enzo, et 3 206 (les chiffres seront tir�s al�atoirement).
    Maintenant je veux rajouter une Porsche 911, je cr�e une classe et l� je voudrais que ma classe Factory puisse la cr�er sans changer la m�thode de cr�ation.
    Si c'est toujours pas clair dites le moi.

    Citation Envoy� par JolyLoic
    D�j�, j'ai du mal � voir pourquoi Ferrari serait une classe d�riv�e de voiture. Qu'est-ce qu'une Ferrari a qui fait que ce n'est pas simplement une voiture ?
    Tu ferais une instance de voiture que tu appelerais Ferrari, c'est bien �a ?
    Je vois, en fait j'avais dans l'id�e de faire d�riv�e chaque nouvelle voiture de la classe voiture. Mais apparemment �a n'a pas l'air tr�s bien, si ?


    Merci d'avance.

  5. #5
    R�dacteur/Mod�rateur
    Avatar de JolyLoic
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    5 463
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 50
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 5 463
    Par d�faut
    Citation Envoy� par b Oo
    Tu ferais une instance de voiture que tu appelerais Ferrari, c'est bien �a ?
    Je vois, en fait j'avais dans l'id�e de faire d�riv�e chaque nouvelle voiture de la classe voiture. Mais apparemment �a n'a pas l'air tr�s bien, si ?
    Ca d�pend ce que tu veux en faire... Mais dans ce que j'ai vu actuellement de ton code, rien ne semble le justifier. J'ai bien aim� l'article suivant sur le sujet :
    http://archive.eiffel.com/doc/manual...T/inh-m6fs.pdf
    (paragraphe 24.4).
    Ma session aux Microsoft TechDays 2013 : D�velopper en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage � la d�couverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'h�sitez pas � me contacter.

  6. #6
    Membre confirm� Avatar de b Oo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    179
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 179
    Par d�faut
    Merci pour l'article JolyLoic.

    Sinon pour probl�me.
    Il faudrait que je fasse un membre static qui contient des Voitures * dans ma fabrique et que chaque nouvelle classe (qui h�rite de Voiture) soit rajout�e dans la fabrique.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    class Fabrique
    {
          static vector<Voiture *> v;
       public :
          Voiture * creeVoiture(); // cree une voiture aleatoirement
    };
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    class Fille : public Voiture
    {
       public:
        static ajouterVoiture(); // la voiture Fille peut etre cosntruite par ma fabrique
    };
    Si je procede de cette maniere, cela est-il correct ?
    Je rappelle que je ne veux pas modifier le code de ma fabrique.

    Merci.

  7. #7
    Expert confirm�
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    D�cembre 2003
    Messages
    3 549
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 3 549
    Par d�faut
    Commence par de ne pas retourner des pointeurs bruts comme �a.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Quel design pattern pour ce que je veux faire
    Par yvon_huynh dans le forum Langage
    R�ponses: 2
    Dernier message: 30/04/2015, 16h45
  2. R�ponses: 0
    Dernier message: 18/03/2011, 16h10
  3. [D�butant] Quel design pattern choisir pour le J2EE ?
    Par ghost10 dans le forum D�veloppement Web en Java
    R�ponses: 2
    Dernier message: 06/11/2010, 09h31
  4. R�ponses: 5
    Dernier message: 21/06/2006, 14h47
  5. Quel design pattern pour r�aliser une synth�se
    Par jbwan dans le forum Design Patterns
    R�ponses: 3
    Dernier message: 21/04/2006, 12h39

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