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 :

Comment passer des données d'une classe à une autre?


Sujet :

C++

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2006
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Comment passer des données d'une classe à une autre?
    Bonjour!

    Dans mon soft, je recup des données dans une classe chargée de faire la lecture d'un fichier. Ces données doivent etre accessible par toutes les classes.

    Sachant que j'ai une classe principale qui instancie les objets des autres classes (y compris celle de lecture), c'est cette classe principale qui doit avoir accès aux données. Les autres auront l'accès via la classe principale.

    J'ai donc pensé ranger les données dans une structure (vu qu'elles ne sont pas toutes du meme type) appartenant à la classe de lecture puis retourner la struct à la classe principale via une methode GetStruct par ex. Est-ce possible? Y'a t-il des contraintes?

    En fait y'a peut etre une methode tres simple que je ne connais pas pour recuperer des données (en quantité) dans une classe et les rendre dispo pour les autres, dans ce cas, je suis preneur!

    Merci pour l'aide!

    Laurent.

  2. #2
    Membre du Club
    Inscrit en
    Septembre 2003
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 49
    Points : 43
    Points
    43
    Par défaut
    Salut.
    Deja il faudrait savoir si tes objets ont besoin de l'ensemble des donnes de lecture ou simplement chaque objet prelevera une donnee presise.
    une solution consiste a transformer ta classe de lecture en singleton puis
    puis selon le cas retouner les donnees une a une via plusieur accesseurs ou en bloc. tu pourra ainsi modeliser ta classes de lecture de facon a ne lire ces donnees qu'une seule fois et a la demenade.
    a+

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 164
    Points : 227
    Points
    227
    Par défaut
    Moi je verrais bien une action :
    classDesination.cpyfrom(classPrincipale);

    Dans la quelle la classDestination récupère les vars.

  4. #4
    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 : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Déjà, dans ta classe mère, tu mets des accesseurs vers tes données privées.
    Maintenant, est-ce que ta classe mère est responsable de la création des objets, de leur donner des infos, ... ? Si oui, change ton design et fais plutôt :
    - une classe pour créer tes objets - une factory
    - une classe qui contiendra la liste des objets
    - une classe qui avertir la liste des objets qu'il y a des nouvelles infos si besoin est.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2006
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    D'abord merci de vos reponses.

    Sachant que je ne suis pas une bete de C/C++, ni developpeur de formation, une precision:
    Un accesseurs, c'est une methode "GetTrucMuche" qui renvoie simplement une valeur, c'est bien ca?

    Ensuite, j'ai bien une classe qui créé mes objets et fait le relais avec la GUI.
    C'est elle qui aiguille les données et fait appel aux méthodes des autres classes en fonction des actions sur les boutons.

    Je travaille sur du traitement d'images avec une librairie geniale qui se charge de mettre au courant tout ce petit monde que les données ont changé. Une sorte de Doc/View intelligent et pas lourd du tout puisque transparent.
    Ce que je veux recuperer a tout moment c'est des infos sur les images, nb colonnes, nb lignes, type de pixels, espace en X, Y et Z..... qui ne changeront pas par la suite.
    Des données courantes dont j'ai besoin dans toutes les classes.
    C'est pour ca que je voulais une structure dans ma classe déclarant les objets (une factory, c'est comme ca qu'on dit?) qui soit accessible par tout le monde.

    MAIS, les données doivent etre recupérées lors de la lecture des images, donc dans une classe annexe et envoyées à la classe de base de l'application (qui n'est pas mere de toutes les autres, faut-il qu'elle le soit?)

    D'ou ma question sur le passage d'une struct vers une classe.

    Je ne sais pas ce qu'est une classe singleton. Une classe qui ne contient que des données et qui les fournit aux autres classes? Ca me parait pas mal.
    Finalement, je cherche quelque chose de tres simple, qui permet de fournir des données.

    Laurent.

  6. #6
    Membre régulier Avatar de titoine1978
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2005
    Messages : 132
    Points : 90
    Points
    90
    Par défaut
    Le singleton c'est une classe qu'on ne peut instancier qu'une fois. Toutes les classe qui vont l'instancier verront toutes la même classe (celle de lecture par exemple). C'est très simple a faire (15 lignes de codes pas plus).
    Moi je ferai comme ca...mais je ne suis pas une bete non plus .
    Si tu ne trouves pas sur google, j'ai un bout de code qui traine.

  7. #7
    Membre du Club
    Inscrit en
    Septembre 2003
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 49
    Points : 43
    Points
    43
    Par défaut
    1 singleton = une classe dont il n'existe que'un seul objet dans ton systeme (ou application) et dont l'acces a cet objet est controle.

    ton probleme c'est que beaucoup d'objets dans ton app sont couples a cette femeuse class d'info. cest generalement la preuve d'un mauvais designe. Revois ta conception.
    a+

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2006
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    J'ai surement un design qui n'est pas top puisque je n'ai jamais etudié ce genre de chose. J'ai fait au feeling, suivant comme ca me semblait logique!

    Finalement, (presque) toutes mes classes sont des singleton pusique ma classeApp instancie une fois l'objet de la classe. Pour la classe de lecture par exemple, j'ai besoin de plusieurs objets seulement dans le cas ou j'ouvre plus d'un volume (ou image).

    Je pense que je vais créer une classe contenant les données et instanciées dans ma classeApp.

    Merci pour vos conseils.

    Laurent.


    P.S.our revoir ma conception, il faudrait que j'aie une vague idée du soft final, de sa taille, de ce qu'il doit faire.... et je n'en sais encore rien!
    Il évolue suivant les besoins.
    Si vous avez un site bien fait sur les conceptions de soft en C++, ca m'arrangerait!
    Merci.

  9. #9
    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 : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Fait une petite recherche sur Google sur Pattern et/ou refactoring

Discussions similaires

  1. Réponses: 7
    Dernier message: 12/11/2011, 15h09
  2. [Toutes versions] Comment charger des données d'Excel vers une autre application
    Par orafin dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/11/2009, 21h20
  3. Comment transférer des données depuis et vers une collection ?
    Par Pierre8r dans le forum Persistance des données
    Réponses: 5
    Dernier message: 09/11/2007, 17h38

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