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

Java Discussion :

Comparaison d'etats d'un objet


Sujet :

Java

  1. #1
    Membre habitué
    Inscrit en
    Septembre 2002
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 233
    Points : 131
    Points
    131
    Par défaut Comparaison d'etats d'un objet
    Bonjour,

    Afin de detecter les changements d'etat d'un objet au cours de sa vie, j'hesite entre ces solutions :

    1ere solution
    1) Cloner l'objet a l'instant 1 (via l'interface cloneable)
    2) l'objet est récupéré (via un socket) dans un etat inconnu
    3) comparaison de l'objet cloné avec l'objet recuperer (via la redéfinition des méthodes equals)

    2eme solution
    1) enregistrer l'objet serializé en xml
    2) l'objet est récupéré (via un socket) dans un etat inconnu
    3) enregistrer l'objet récupéré dans un deuxieme fichier xml
    4) comparer les 2 fichiers xml pour

    Les objets étant un peu complexe, la premiere solution fonctionne mais elle est compliquée et difficile a maintenir car il y a beaucoup de méthode clone et equals a réécrire.
    La 2eme solution est elle une bonne idée ? Si oui existe t'il des objets / méthodes xml permettant ce genre de comparaison directement en xml ?

    Peut etre d'autres solutions sont possibles également, mais je n'en vois pas.


    Merci

  2. #2
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    bonsoir,
    je ne comprends pas trop dans quelle situation tu serais amené à faire ça, tu as un exemple concret ?
    Sinon, effectivement, pour comparer les deux objets, il faut redéfinir la méthode equals

  3. #3
    Membre habitué
    Inscrit en
    Septembre 2002
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 233
    Points : 131
    Points
    131
    Par défaut
    Et bien en fait il s'agit d'une application type client serveur, avec un serveur et plusieurs clients qui communique via des sockets

    Un objet circule entre le serveur et tous les clients, les clients peuvent modifier l'objet ou non et celui ci est retourné au serveur. Le serveur doit etre capable de determiner si l'objet a ete modifiée par rapport a l'objet qu'il a envoyé aux clients afin de determiner si l'objet qui vient d'être modifié doit etre renvoyé a tous les autres clients.

  4. #4
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Il y a beaucoup de méthodes qui peuvent modifier l'objet ?

    Sinon, autant mettre en place une date de dernière modification, mise à jour quand l'objet est modifié.

  5. #5
    Membre habitué
    Inscrit en
    Septembre 2002
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 233
    Points : 131
    Points
    131
    Par défaut
    C'est une idée, mais il faut que l'heure des clients soient la meme que l'heure du serveur

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par MrEddy Voir le message
    1ere solution
    1) Cloner l'objet a l'instant 1 (via l'interface cloneable)
    2) l'objet est récupéré (via un socket) dans un etat inconnu
    3) comparaison de l'objet cloné avec l'objet recuperer (via la redéfinition des méthodes equals)
    pourquoi tu veux cloner? L'objet que tu récupère via la socket est de toutes façons différent :/

  7. #7
    Membre habitué
    Inscrit en
    Septembre 2002
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 233
    Points : 131
    Points
    131
    Par défaut
    Ben j'ai pas l'impression justement

  8. #8
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Citation Envoyé par MrEddy Voir le message
    C'est une idée, mais il faut que l'heure des clients soient la meme que l'heure du serveur
    Au pire, un booléen, voire un entier ou un autre compteur du même genre qui indique le nombre de transformations.

  9. #9
    Membre habitué
    Inscrit en
    Septembre 2002
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 233
    Points : 131
    Points
    131
    Par défaut
    Bon je m'en suis sorti avec la sauvegarde des objets en xml, ainsi a l'instant T j'enregistre en xml l'etat de mon objet

    a l'instant T+1 j'enregistre en xml l'etat du nouvel objet et le je le compare avec le précédent etat xml, si ils sont différents c'est qu'il y a eu une modification entre les 2 donc je remplace le fichier xml T par T+1 et je renvoi l'objet T+1 a tous les clients

    C'etait plus simple que de redéfinir toutes les méthodes equals de mon objet et de ses composants, et surtout pas besoin de mettre a jour les méthodes equals si j'ajoute / modifie un attribut de l'objet plus tard.

    Merci pour vos propositions

  10. #10
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    Et pourquoi le client ne renverrait pas l'objet au serveur seulement s'il le modifie ?

  11. #11
    Membre habitué
    Inscrit en
    Septembre 2002
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 233
    Points : 131
    Points
    131
    Par défaut
    Parce qu'il n'y a pas que les clients qui peuvent modifier l'objet, (en fait pas que mon programme java)

    L'objet représente un etat d'une série de programmes externes qui peuvent être modifiés soit par mes programmes clients java, ou par mon serveur java, ou par une action indépendante de mes programmes, ce que je dois pouvoir detecter également grâce a un thread sur le serveur qui vérifie a interval regulier si l'etat a été modifiée a l'exterieur de mes programmes.

    Oui c'est un peu étrange !

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

Discussions similaires

  1. comparaison de deux séries d'objets
    Par Jasmine80 dans le forum Langage
    Réponses: 16
    Dernier message: 07/06/2007, 15h25
  2. [VB.NET] Comparaison d'un objet
    Par basnifo dans le forum VB.NET
    Réponses: 3
    Dernier message: 30/11/2006, 17h47
  3. [javascript] objet string + comparaison
    Par herve70 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 10/11/2006, 16h19
  4. Réponses: 6
    Dernier message: 02/10/2006, 12h13
  5. Réponses: 21
    Dernier message: 04/05/2006, 11h09

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