Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
985 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Design de classe

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Design de classe

n°1389040
haazheel
Posté le 16-06-2006 à 14:43:42  profilanswer
 

Bonjour à tous,
 
comme le titre l'indique, j'ai un souci de design de classe.
 
J'ai créé trois classes qui me permettent d'afficher de la vidéo
grâce à DirectShow.
 
J'ai une classe DS_InfosVideo, DS_AffichVideo, qui sont assez
explicites, et une dernière classe TVideoAffich qui est la fenêtre
qui affichera la vidéo, et qui a comme membres privés les deux
classes précédentes...
 
Je peux afficher 3 types de vidéo: les fichiers vidéo, des fichiers
XML pour la prévisualisation de montages vidéo, et de la vidéo en
temps-réel provenant d'une caméra numérique.
 
J'ai donc utilisé l'idiome du constructeur nommé pour chacune de ces
3 classes, ce qui me permet de charger les bonnes infos.
 
Par exemple, pour un fichier vidéo:
 

Code :
  1. class TVideoAffich
  2. {
  3. private:
  4. DS_InfosVideo * Infos;
  5. DS_AffichVideo * Affich;
  6. public:
  7. static TVideoAffich * CreateFromFile(const std::string & path)
  8. {
  9. Infos = DS_InfosVideo::CReateFromFile(path);
  10. Affich = DS_AffichVideo::CReateFromFile(path);
  11. }
  12. };


 
Pour l'instant, je limite le rendu de la vidéo à un renderer que j'ai
choisi.
 
Ce que j'aimerai faire maintenant, c'est proposer d'autres choix de
renderer.
 
Mais je ne me vois pas faire des fonctions du genre pour chacune des
classes:
 

Code :
  1. static TVideoAffich * CreateFromFileVMRRenderer(const std::string & path);
  2. static TVideoAffich * CreateFromFileBasicRenderer(const std::string & path);
  3. static TVideoAffich * CreateFromSBEVMRRenderer(const std::string & path);


 
etc...
 
Je voyais bien un truc du genre:
 

Code :
  1. template <class Input>
  2. class DS_InfosVideo : public Input
  3. {
  4. public:
  5. DS_InfosVideo(const std::string & path);
  6. };
  7. template <class Input , class Renderer>
  8. class TVideoAffich : public Input, public Renderer
  9. {
  10. private:
  11. DS_InfosVideo<Input> * Infos;
  12. DS_AffichVideo<Input,Renderer> * Affich;
  13. public:
  14. TVideoAffich(const std::string & path);
  15. };


 
Seulement la classe Input passée à TVideoAffich n'est pas la même
que celle que doit recevoir DS_InfosVideo ni celle de DS_AffichVideo...
 
Est-ce que c'est possible de poser des conditions à la compilation, de
telle sorte qu'on ait un truc du genre:
 
pour TVideoAffich

Code :
  1. si Input == VideoAffichInputFile
  2. {
  3.     DS_InfosVideo<Infos_Input_File> * Infos;
  4.     si Renderer == VideoAffichVMRRenderer
  5.         DS_AffichVideo<Affich_Input_File,Affich_VMR_Renderer> * Affich;
  6.     sinon
  7.         DS_AffichVideo<Affich_Input_File,Affich_Basic_Renderer> *
  8. Affich;
  9. }
  10. sinon
  11. {
  12. ///
  13. }


 
Voilà tout :)
 
Merci d'avance
 
Mike

mood
Publicité
Posté le 16-06-2006 à 14:43:42  profilanswer
 

n°1389351
nargy
Posté le 16-06-2006 à 19:34:35  profilanswer
 

J'ai pas tout suivi... il me semble cependant que tu ai besoin de classes polymorphes.
 
C'est à dire, (c'est approximatif, hein) une classe VideoInput avec des méthodes virtuelles, et plusieurs classes VideoInputFile, VideoInputXML, et VideoInputCamera, qui dérivent de VideoInput et réimplémentent les fonctions virtuelles.

n°1392494
jojoleping​ouin
Posté le 21-06-2006 à 20:55:32  profilanswer
 

Et pourquoi pas un truc comme ca :

Code :
  1. static TVideoAffich * CreateFromFile<Renderer>(const std::string & path);


Classieux, élégant, chaud pour l'hiver ...

n°1392512
_darkalt3_
Proctopathe
Posté le 21-06-2006 à 21:29:40  profilanswer
 

un singleton ?

n°1392517
jojoleping​ouin
Posté le 21-06-2006 à 21:56:23  profilanswer
 

_darkalt3_ a écrit :

un singleton ?

:??:  

n°1392524
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 21-06-2006 à 22:50:13  profilanswer
 

le pattern Abstract Factory me semble tout indiqué !


---------------
J'ai un string dans l'array (Paris Hilton)

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Design de classe

 

Sujets relatifs
[resolu] Conflit Virtuel Static ( Factory Design Pattern )UML questions diagramme classe
probleme de parametre privé dans classe[JavaScript] Récupérer les attributs d'une classe ?
Aide compréhension de sujet prog. Classe "contrôle"[Résolu]Instanciation d'une classe differente selon les arguments
Créer dynamiquement une classe avec ses parametres (possible or not ?)Visibilité des membres static d'une classe ...
PB d'execution de classe, erreur lors de compilation etudiant en actioDesign d'une classe collection
Plus de sujets relatifs à : Design de classe


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR