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 :

[POO] conception des classes


Sujet :

C++

  1. #61
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    OULLAAAAAAAAAAAAAAAAAAA
    Merci Miles, j'étais en train de faire n'importe quoi....
    Je suis en train de me prendre la tete avec cette conception...
    Je n'ai pas besoin de fonction friend

    En fait, j'ai besoin dans la classe Camera de la variable zone, qui se trouve dans la classe CFP
    J'ai juste à faire cfp.getZone() (il suffit d'implémenter correctement la méthode dans la classe CFP)

  2. #62
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    OK j'ai corrigé mes bourdes....
    Je vais commencer à implémenter mes classes suivant le schéma en pièce jointe...
    Je suis toujours preneur de remarques!!!!

  3. #63
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Question importante :
    Comment accéder aux méthodes de la classe Choc depuis une autre classe, sans savoir le nom de l'objet Choc?
    C'est à dire, j'aimerais bien faire:
    Mais à vrai dire, je suis pas sur du tout que l'instance de la classe Choc va s'appeler choc, car je ne suis pas forcément l'auteur du main!

    C'est à dire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int main() {
    Choc choc;
    // etc.
    }
    Là je vois pas

  4. #64
    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
    Tu as absolument besoin de connaître ça ? Tu ne peux pas récupérer les données à l'appel de la fonction ou au retour ? Les dépendances cycliques, c'est aussi bof

  5. #65
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Citation Envoyé par Miles
    Tu as absolument besoin de connaître ça ? Tu ne peux pas récupérer les données à l'appel de la fonction ou au retour ? Les dépendances cycliques, c'est aussi bof
    Il faut que j'accède au numéro du choc depuis Camera...

    Camera.h:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class Camera  {
    public:
    	Camera();
    	~Camera();
    	initialisation();
    	convertionDLTemperature();
    	int getNumeroCamera();
    	setNumeroCamera(int numero_cam);
    
    private:
    	int numero_camera;
    
    }
    Choc.h:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class Choc {
    public:
    	Choc (int num_choc);
    	~Choc();
    	CImg <unsigned short> importImage (int num_image);
    	void setCorrespondanceCameraNumero();
    	void setNumeroChoc(int nchoc);
    	int getNumeroChoc();
    
    private:
    	CFP *cfp;
    	int numero_choc;
    	Camera camera;
    }
    L'initialisation a besoin de numero_choc !!!!
    Donc soit j'ai mal designé la chose, soit il y a un moyen (pointeur pour remonter la composition ?)
    Images attachées Images attachées  

  6. #66
    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
    Où est-ce que la camera a besoin du numero_choc ? Et si c'est à la construction que ça se décide, pourquoi une méthode initialisation - beurk - quand c'est en fait une affectation qui est faite en réalité et qu'on peut donner en paramètre au constructeur ?

  7. #67
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Citation Envoyé par Miles
    Où est-ce que la camera a besoin du numero_choc ?
    En fait, le numero_choc, c'est la donnée importante du programme tout entier, c'est à partir de ça que l'on peut faire l'initialisation de la Camera...

    Citation Envoyé par Miles
    si c'est à la construction que ça se décide, pourquoi une méthode initialisation - beurk - quand c'est en fait une affectation qui est faite en réalité et qu'on peut donner en paramètre au constructeur ?
    Je suis encore débutant en POO
    Il serait donc préférable d'avoir une méthode créerCaméra dans la classe Choc, ainsi on connait le numero_choc; il ne reste donc plus qu'à intégrer le numéro_choc dans le constructeur, et ainsi virer initialisation() ?

    Merci Miles pour ton soutien

  8. #68
    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
    La caméra est unique par instance de Choc ?
    Normalement, la caméra est crée à l'initialisation de la classe Choc.

  9. #69
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Oui, je ne crée qu'une seule caméra par choc !
    Donc, dans le constructeur de choc, j'appelle une méthode qui va appeler le constructeur de caméra, avec comme paramètre numero_choc ?

  10. #70
    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
    Non, tu crées ta caméra dans la liste d'initialisation, comme ça devrait se faire normalement.

  11. #71
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Oui, bien sur. J'avoue avoir du mal à cerner mon projet dans l'intégralité.
    En ce moment, je rencontre un problème assez difficile à expliquer. J'espère être au maximum compréhensible:

    Etant donné que mes classes ont un peu besoin les unes des autres, comment doit s'implémenter le constructeur de Choc?
    i.e : est-ce qu'il faut faire attention à l'ordre de création des composants?

    (Premier cas: l'ordre est important)

    1) d'abord créer un CFP qui va contenir le nom du composant: nom_composant
    2) Considérant que ce champ va etre rempli en premier dans le constructeur de choc, les autres classes peuvent se contenter d'un:

    (2ème cas: l'ordre n'est plus important)
    Ou bien alors faut-il passer en plus des paramètres d'entrée au constructeur de chaque classe...
    Par exemple, le constructeur de Camera possède un champ std::string nom_composant, alors dans le cas précédent, il n'en avait pas besoin.


    J'ai fait au mieux pour expliquer mon problème!

    Merci d'avance pour ta réponse,

  12. #72
    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
    Normalement, tu devrais construire tes éléments de abse puis monter dans la pyramide pour arriver à ta classe Choc, et en fait c'est ce qui est fait lors de l'appel au constructeur de Choc, il va d'abord créer ses variables internes et classes parentes avant d'appeler son propre constructeur.

  13. #73
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    choc.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class Choc {
    public:
    	Choc (int num_choc, std::string nom_cfp);
    	~Choc();
    	CImg <unsigned short> importImage (int num_image);
    	void setNumeroChoc(int nchoc);
    	int getNumeroChoc();
     
    private:
    	CFP* cfp;
    	int numero_choc;
    	Camera camera;
    }
    choc.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Choc::Choc(int num_choc, std::string nom_cfp) {
    	setNumeroChoc(num_choc);
     
    	//Création d'un objet caméra
    	Camera camera(num_choc, nom_cfp);
     
    	//Création d'un objet CFP
    	//A FAIRE
     
    }
    Ainsi je lance le constructeur de choc, et dedans j'appelle le constructeur de camera:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Camera::Camera(int num_choc, std::string nom_cfp) {
     
    	setCorrespondanceCameraNumero(nom_cfp);
     
    	int cr = Init_Endoscope (num_choc, numero_camera, &Endoscope[numero_camera-1]);
    	std::cout << "\ncamera initialisee" << std::endl;
    }
    En ce qui concerne CFP, il faut d'abord que je crée un CFP, puis que je lui donne le pointeur?

  14. #74
    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
    Si tu fais ce que tu as indiqué dans ton choc.cpp, tu vas droit dans le mur...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Choc::Choc(int num_choc, std::string nom_cfp)
    :numero_choc(num_choc), camera(num_choc, nom_cfp)
    {
    	//Création d'un objet CFP
    	//A FAIRE
    }
    C'est largement mieux.

  15. #75
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    OK merci bcp Miles

    Deux classes (ici CFP et PDC) qui ont un même attribut privé : coeff_mul car les deux en ont besoin, ça ne choque pas?

  16. #76
    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
    A priori non.

  17. #77
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Citation Envoyé par Miles
    Si tu fais ce que tu as indiqué dans ton choc.cpp, tu vas droit dans le mur...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Choc::Choc(int num_choc, std::string nom_cfp)
    :numero_choc(num_choc), camera(num_choc, nom_cfp)
    {
    	//Création d'un objet CFP
    	//A FAIRE
    }
    C'est largement mieux.
    Au fait, pourquoi? Je pensais que cette méthode d'initialisation n'était obligatoire que pour les variables static?
    Pour Camera, je pense que tu dois avoir raison, mais je ne sais pas encore vraiment pourquoi ?

    Citation Envoyé par Miles
    A priori non.
    Bonne nouvelle!

    EDIT: fais-moi signe dès que tu penses que mon topic peut migrer vers le forum C++... Ainsi tu ne seras pas tout seul pour m'aider (tu auras le droit à un peu de repos!!! )

    EDIT2: justement, une variable static serait-il une bonne idée pour deux classes ayant un attribut commun (qui doit valoir la même valeur!) ?

  18. #78
    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
    Ca ne marche pas pour des variables static... c'est une variable commune à toutes les instances d'une classe, donc une instance ne va pas l'initialiser dans son constructeur !

  19. #79
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    OK c'est noté...

    Question :

    cfp.cpp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CFP::setImageIR(int num_choc)
    {
    	int num_cam = camera.getNumeroCamera();
                 //suite occultée	
    }
    Est-ce qu'on peut accéder de cette manière à la méthode getNumeroCamera de la classe Camera?

    camera.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int Camera::getNumeroCamera() {return numero_camera; }

  20. #80
    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
    Ben oui, si camera est de type Camera et pas Camera*.

+ Répondre à la discussion
Cette discussion est résolue.
Page 4 sur 12 PremièrePremière 12345678 ... DernièreDernière

Discussions similaires

  1. Réponses: 7
    Dernier message: 01/01/2010, 08h31
  2. [POO] d’encapsulation des classe
    Par amazircool dans le forum Langage
    Réponses: 6
    Dernier message: 17/09/2007, 18h33
  3. [POO] Héritage des classes
    Par mic79 dans le forum Langage
    Réponses: 27
    Dernier message: 09/03/2007, 20h02
  4. [POO] Organisation des classes PHP
    Par AsQuel dans le forum Langage
    Réponses: 6
    Dernier message: 16/02/2007, 09h09
  5. [POO] faire des classes en php
    Par gromit83 dans le forum Langage
    Réponses: 2
    Dernier message: 13/04/2006, 16h10

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