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] strategie de partage d'objets


Sujet :

C++

  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur
    Inscrit en
    Décembre 2006
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 96
    Points : 88
    Points
    88
    Par défaut [POO] strategie de partage d'objets
    Bonjour

    Je fais une application qui partage un certain nombre d'objets entre differentes classes.

    Voici les données du problèmes :
    Les objets à partager allouent de la mémoire dynamiquement à la construction. Ils vont être créés au fur et à mesure de l'execution par l'utilisateur qui en choisira la taille (taille de la mémoire à allouer) puis placés dans un conteneur.

    J'aimerais connaître la meilleure stratégie pour faire ça :
    - vector <Classe> ?
    - vector <Classe*> ?
    - smart pointers associé à un conteneur ?
    - conteneur intrusif ? (je ne sais pas exactement ce que c'est !)
    Il n'y a pas de polymorphisme (en tout cas pour l'instant) dans ce que je dois partager.
    Pour préciser (et c'est un peu la source de mes interrogations), le fait que les objets allouent dynamiquement un buffer de mémoire rend difficile et sans vraiment de sens les constructeurs par défault, par copie ou encore operator=().
    J'aimerais aussi profiter au maximum de l'allocation sur la pile pour gagner en perf !


    Je n'ai encore pas travaillé sur d'applications de grande envergure où ce genre de problème doit être courant, surtout en C++.

    Merci de me faire profiter de votre expérience

    Rémi

  2. #2
    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
    Points : 4 625
    Points
    4 625
    Par défaut
    Qui est responsable de la durée de vie des objets ? Quand ceux-ci peuvent-ils ou doivent-ils cesser d'exister ?
    Boost ftw

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur
    Inscrit en
    Décembre 2006
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 96
    Points : 88
    Points
    88
    Par défaut
    Pour l'instant (j'utilise vector<Classe*>) les objets sont détruit à la fin du programme avec delete sur une iteration. Par la suite j'ajouterais une option qui permettra à l'utilisateur de liberer un buffer qu'il n'a plus besoin (il s'agit d'un soft d'analyse et de traitement du son)

    Merci
    Rémi

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 349
    Points : 379
    Points
    379
    Par défaut
    Citation Envoyé par remitbo Voir le message
    Bonjour
    Les objets à partager allouent de la mémoire dynamiquement à la construction. Ils vont être créés au fur et à mesure de l'execution par l'utilisateur qui en choisira la taille (taille de la mémoire à allouer) puis placés dans un conteneur.
    La taille de tes objets sera définie à la compilation, tu ne peux pas la changer en cours d'exécution (et heureusement d'ailleurs).

    Pour en venir à ta question, ça dépend de ce que tu veux en faire. Je dirais que vector <Classe> et utiliser des références dans les appels et retour de méthodes est plus propre et plus sûr, mais vector <Classe*> et l'utilisation de pointeurs permet plus de choses (et des choses plus dangereuses).

  5. #5
    Membre régulier
    Homme Profil pro
    Ingénieur
    Inscrit en
    Décembre 2006
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 96
    Points : 88
    Points
    88
    Par défaut
    Citation Envoyé par Cheps Voir le message
    La taille de tes objets sera définie à la compilation, tu ne peux pas la changer en cours d'exécution (et heureusement d'ailleurs).
    OK, par taille d'objet j'entendais taille du buffer alloué par l'objet, ce dernier n'en gardant qu'un pointeur.

    Citation Envoyé par Cheps Voir le message
    Pour en venir à ta question, ça dépend de ce que tu veux en faire. Je dirais que vector <Classe> et utiliser des références dans les appels et retour de méthodes est plus propre et plus sûr, mais vector <Classe*> et l'utilisation de pointeurs permet plus de choses (et des choses plus dangereuses).
    Merci des conseils. En fin de compte, après reflexion je vais utiliser std::list<boost::shared_ptr<Classe> >. C'est la solution qui correspond le mieux à mon besoin.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [POO] Calendrier et passage d' objet en parametre
    Par julienr dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 09/11/2007, 22h18
  2. [POO] apprendre la programmation orientée objet
    Par Invité dans le forum Langage
    Réponses: 5
    Dernier message: 10/12/2005, 11h33
  3. [POO] projet ->soutirer les classes objets
    Par .:dev:. dans le forum C++
    Réponses: 10
    Dernier message: 14/06/2005, 23h05
  4. [Strategie]Classes de mapping & Objets métier
    Par yanis97 dans le forum JDBC
    Réponses: 19
    Dernier message: 16/05/2005, 09h57
  5. [Tomcat][Plusieurs applications WEB] Partage d'objet.
    Par ZeKiD dans le forum Tomcat et TomEE
    Réponses: 8
    Dernier message: 09/04/2005, 13h23

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