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

JavaScript Discussion :

Méthode de stockage d'objet parent / enfant


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 50
    Points : 37
    Points
    37
    Par défaut Méthode de stockage d'objet parent / enfant
    Bonjour,

    Je développe une single-page app en javascript et je suis en train de remettre en question la façon dont j'ai organisé mes objets.

    Attention, je ne vais pas parler de parent/enfant au sens héritage de la POO.

    Pour faire simple, l'application permet de faire du requêtage sur des bases de données . L'utilisateur va créer plusieurs requêtes, chaque requêtes contient des groupes de critères (que j'appelle "noeud"), et chaque noeud contient des critères.

    j'ai besoin de récupérer, pour chaque objet, son parent et ses enfants (ex: récupérer le noeud du critère, ou les critères d'un noeud).

    Pour le moment, je procède comme ceci : chaque objet possède un id unique. Je stocke chaque objet dans un tableau regroupant les objets de même classe. Chaque objet possède la propriété parentId contenant l'id du parent pour pouvoir accéder à ce dernier, et possède également une propriété tableau contenant les ids enfant. De cette façon, via des méthodes, je peux accéder au parent et aux enfants au moment voulu en parcourant les tableaux via les ids.
    Je me suis rendu compte que cela ressembler à un modèle de bdd relationnelle.

    J'ai procédé ainsi pensant qu'il serait bête d'avoir une propriété contenant la copie de l'objet parent alors que celui-ci existe déjà ailleurs. Ex : si j'avait 5 objets Critère ayant le même noeud parent, il y aurait 5 instances identiques de ce noeud..

    Néanmoins, je me dis que parcourir à chaque fois les tableaux, c'est un peu barbare..

    Ma question est : est-ce j'emploie la bonne méthode, et si non, quelle serait la bonne ?

    En espérant avoir été clair

    Merci d'avance

  2. #2
    Membre émérite
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Points : 2 778
    Points
    2 778
    Par défaut
    Peut-être un petit exemple ? A quoi ressemble chaque objet contenant les objets de même classe ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var crit1 = {}, crit2 = {prop1: 'toto'}, crit3;
     
    crit3 = crit1;
    crit3.prop1 = 'toto';
     
    console.log(crit3); // {prop1: 'toto';}
    console.log(crit1); // {prop1: 'toto';}
    console.log(crit1 === crit3); // true
    console.log(crit1 === crit2); // false
    Dans cet exemple, crit1 et crit3 sont la référence du même objet. crit2, même s'il semble identique, est une autre instance bien différente.

    Ex : si j'avait 5 objets Critère ayant le même noeud parent, il y aurait 5 instances identiques de ce noeud..
    Tes objets "critères" doivent avoir une propriété contenant la référence de l'objet commun parent. De ce fait, chaque objet n'aura pas 5 instances identiques de ce noeud, mais bel et bien une référence pointant vers le même objet.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var papa = {nom: 'papounet'}
      , critere1 = {papa: papa, options: []}
      , critere2 = {papa: papa, options: []}
      , critere3 = {papa: papa, options: []}
      , critere4 = {papa: papa, options: []}
      , critere5 = {papa: papa, options: []};
     
    console.log(critere1.papa); // Object {nom: "papounet"}
    papa.nom = 'papaaa';
    console.log(critere1.papa); // Object {nom: "papaaa"} (idem pour les autres objets critereX

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour

    As-tu pensé au XML et XPath? (rubrique XML)

    Pour s'amuser ICI (ce n'est qu'un essais ;-)

    A+

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 50
    Points : 37
    Points
    37
    Par défaut
    Je pensais que cela instancier un nouvel objet mais en fait c'est bien la référence qui est stocké !

    J'ai modifié mes classes pour pouvoir passé la référence de l'objet et cela fonctionne à merveille.

    Merci

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 50
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par jlmag Voir le message
    Bonjour

    As-tu pensé au XML et XPath? (rubrique XML)

    Pour s'amuser ICI (ce n'est qu'un essais ;-)

    A+
    Effectivement ça aurait pu être plus simple à modéliser en utilisant xPath. Mais j'aurais dû revoir pas mal de code.

    Je me le mets sous le coude quand même

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/02/2012, 00h09
  2. UserControl parent-enfant accès aux méthodes
    Par gridin dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 24/03/2011, 11h17
  3. Table Parents-enfants -> conception des objets dans BO 6.1.3
    Par webvince18 dans le forum Designer
    Réponses: 4
    Dernier message: 04/10/2006, 17h27
  4. [VB.NET] Problème liste Parent-Enfant dans DataGrid
    Par vonbier dans le forum ASP.NET
    Réponses: 7
    Dernier message: 27/01/2005, 08h53
  5. Méthode Free d'un objet
    Par WebPac dans le forum Composants VCL
    Réponses: 3
    Dernier message: 12/10/2004, 15h28

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