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

Langages de programmation Discussion :

un objets dont l'attribut est un autre objet


Sujet :

Langages de programmation

  1. #1
    Membre averti
    Avatar de wafiwafi
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 500
    Points : 328
    Points
    328
    Par défaut un objets dont l'attribut est un autre objet
    Bonjour à tous, on sait qu'un objet peut contenir d'autres objets. On peut prendre l'exemple d'un objet client1 qui peut avoir un attribut adresse1 qui lui même est un objet. La question que je me pose est :
    Est ce que l'objet adresse1 doit forcément se trouver au même endroit en mémoire que client1, où bien adresse 1 se trouverait dans autre endroit dans lequel sont regroupés toutes les adresses des clients?
    Merci

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    Citation Envoyé par wafiwafi Voir le message
    Bonjour à tous, on sait qu'un objet peut contenir d'autres objets. On peut prendre l'exemple d'un objet client1 qui peut avoir un attribut adresse1 qui lui même est un objet. La question que je me pose est :
    Est ce que l'objet adresse1 doit forcément se trouver au même endroit en mémoire que client1, où bien adresse 1 se trouverait dans autre endroit dans lequel sont regroupés toutes les adresses des clients?
    Merci
    Ça dépend. Ça dépend du langage, de l'implémentation du compilateur et s'il y a du vent aussi… ah non, pas le dernier.

    Si tu te poses la question de manière général, voici ta réponse, sinon postes sur le forum idoine.

  3. #3
    Membre averti
    Avatar de wafiwafi
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 500
    Points : 328
    Points
    328
    Par défaut objets composites en cas de bases de données
    Merci pour la réponse. Je m'en doutais bien; chaque langage de programmation fait à sa sauce. Néanmoins, ce qui est intéressant c'est la vision à donner à l'utilisateur qui n'est pas au stade de l'implémentation mais plutôt de la compréhension de l'objet. Il est vrai que l'intêret de la POO est de rassembler les objets du même type à un même endroit ce qui n'est pas tout à fait respecté par les compilateurs. Ma question est que se passe t il vraiment dans le cas des bases de données par rapport à ma question de départ?
    Mille mercis

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    Citation Envoyé par wafiwafi Voir le message
    Merci pour la réponse. Je m'en doutais bien; chaque langage de programmation fait à sa sauce. Néanmoins, ce qui est intéressant c'est la vision à donner à l'utilisateur qui n'est pas au stade de l'implémentation mais plutôt de la compréhension de l'objet. Il est vrai que l'intêret de la POO est de rassembler les objets du même type à un même endroit ce qui n'est pas tout à fait respecté par les compilateurs. Ma question est que se passe t il vraiment dans le cas des bases de données par rapport à ma question de départ?
    Mille mercis
    Là je ne te comprends plus. Comme tu le dis, ce qui est important au début c'est la compréhension abstraite plutôt que l'implémentation. Dans ce cas on se fout éperdument de savoir la gestion mémoire.

    Ensuite, je doute vraiment qu'il y ait un intérêt en POO qui touche à la gestion mémoire. C'est plutôt le contraire il me semble: la POO consomme plus en général à cause des problèmes de fonctions virtuelles, d'héritage, etc. En tout cas, il n'a jamais été question de regrouper dans des espaces contingents les objets de même type... le type est un problème conceptuel et non de mémoire.

    Finalement, le fait que tu précises « dans le cas des bases de données » ne change pas ma réponse : cela dépend. Dans ce cas, cela dépend aussi de la base de donnée que tu utilises et de son implémentation.

  5. #5
    Membre averti
    Avatar de wafiwafi
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 500
    Points : 328
    Points
    328
    Par défaut distinguer le coté programmation du coté système
    Je tiens d'abords à te remercier pour tes réponses fondées et claires.
    En fait j'aurais dû m'expliquer d'avantage dans ma seconde intervention. Il est vrai qu'il faut distinguer le coté programmation du coté système; mais je n'arrive pas à m'empêcher de raisonner sur ces deux tableaux un certain moment ou un autre. A chaque fois que je developpe, je me pose la question "comment ça va être géré pour que je puisse mieux choisir". Connaissant la programmation système, j'essaye de faire la liaison avec la POO que j'approfondis un peu plus. Jusqu'au là, je me suis plus intéressé à JAVA et un peu moins aux bases de données jusqu'à ce que je me rends compte qu'il faut maitriser les deux.
    (en fait, j'ai mis une petite question sur le forum intitulé conception; je serai intéressé d'avoir ton avis)
    En tout cas merci

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    Citation Envoyé par wafiwafi Voir le message
    [...]Jusqu'au là, je me suis plus intéressé à JAVA et un peu moins aux bases de données jusqu'à ce que je me rends compte qu'il faut maitriser les deux.
    (en fait, j'ai mis une petite question sur le forum intitulé conception; je serai intéressé d'avoir ton avis)
    En tout cas merci
    Je ne maîtrise pas du tout la programmation des bases de données. Et puis Java ou un autre langage c'est du pareil au même a priori. Sinon c'est quelle question ?

  7. #7
    Membre averti
    Avatar de wafiwafi
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 500
    Points : 328
    Points
    328
    Par défaut un exemple d'implémentation
    Est ce qu'il y a quelqu'un qui pourrait nous donner un exemple d'implémentation de cette composition en un langage peu importe lequel. Une petite explication sur le principe suffira.
    même si certains se fichent de savoir comment les langages gèrent des concepts, je pense qu'il est utile de comprendre rien que le principe.
    C'est une simple curiosité de ma part que je essaye de partager.

  8. #8
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 581
    Points
    41 581
    Par défaut
    Je ne suis pas sûr d'avoir bien compris, mais dans des langages comme C++ et C#, les compositions peuvent se faire aussi bien par valeur que par référence (alors qu'en java, c'est par référence uniquement).

    Chaque langage ayant ses particularités, il se trouve qu'en C# (et tous les langages supportés par .Net), pour être inclus par valeur, un objet doit être spécifiquement déclaré comme objet "valeur". Il peut toujours être inclus par référence, mais c'est généralement plus compliqué et il y a des restrictions.
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    class UnTypeReference
    {
    	public int toto;
    }
     
    struct UnTypeValeur
    {
    	public int tata;
    }
     
    class UnTypeContenant
    {
    	UnTypeReference ref1;
    	UnTypeValeur val1;
     
    	static int Main()
    	{
    		UnTypeContenant obj = new UnTypeContenant();
    		return 0;
    	}
    }
    Ici, obj.ref1 pointe sur un objet ailleurs dans le tas, alors que obj.val1 est directement un objet inclus dans obj (ce qui est impossible en java).

    En C et en C++, c'est plus simple, le même type peut être composé directement ou indirectement selon les cas. Mais on y perd la gestion de la mémoire par GC...

  9. #9
    Membre averti
    Avatar de wafiwafi
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 500
    Points : 328
    Points
    328
    Par défaut
    Si si tu as bien compris et je te remercie pour ton intervention.
    Mais, la gestion des objets dans le tas (dans le cas de JAVA) est bien particulière. Il s'agit d'une organisation assez complexe avec un partage en zones qui accueillent des objets selon leurs caractéristiques. En fait ce que je veux dire c'est quand un objet contient un autre objet, cela reste une vision pour l'utilisateur. En mémoire, on mobilise plutôt des pointeurs pour établir les relations de contenance. L'objet contenant et l'objet contenu ne se trouvent pas forcément dans une même zone puisqu'ils n'ont pas forcément les mêmes caractéristiques. Mais attention, les deux objets se trouvent biens dans le tas.
    Je trouve intéressant de descendre de temps en temps dans le soute pour voir ce qui se passe. C'est mon défaut (une curiosité après une autre ...); mais je me sens bien juste après!
    Bien à vous

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 11/04/2007, 14h26
  2. Réponses: 3
    Dernier message: 09/01/2007, 15h27
  3. [POO] Désactiver un objet dont le nom est passé en parametre
    Par JavaEli dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 12/07/2005, 08h47
  4. Réponses: 14
    Dernier message: 01/12/2004, 15h20

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