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

Langage Java Discussion :

[debutant] clonage en boucle


Sujet :

Langage Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 3
    Points : 2
    Points
    2
    Par défaut [debutant] clonage en boucle
    Bonjour, je suis confronté a un probleme. J'espere que vous pourrez m'aider.

    Alors voila mon probleme :

    J'ai une classe Plateau qui possède un attribut de type: Case [][]
    J'ai une classe Case qui possède un attribut de type: Piece
    et une classe Piece qui possède un attribut de type: Plateau


    Dans l'implementation initiale toute mes pieces pointent sur le meme objet plateau (appelé damier)

    Mon probleme vient de l'implementation de la methode clone() pour ma classe Plateau. En effet pour cloner ma classe Plateau je dois lancer les clones de mes Cases.
    Le clone de Case lancera quant a lui le clone de Piece , et pour cloner un objet Piece je devrai cloner son attribut de type Plateau...
    Ce qui va m'entrainer dans une boucle infini!

    Quelqu'un saurait il comment cloner mon Objet Plateau sans partir dans cette boucle?


    Merci d'avance .

  2. #2
    Membre éclairé
    Avatar de divxdede
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    525
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 525
    Points : 844
    Points
    844
    Par défaut
    1ere question, pourquoi ta classe piece tient une reference sur le plateau ?
    JBusyComponent, une API pour rendre occupé un composant swing.
    SCJP Java 6.0 (90% pass score)

  3. #3
    Membre expérimenté Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Points : 1 635
    Points
    1 635
    Par défaut
    Bonjour,

    redéfinie la methode clone() dans la classe Piece

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 3
    Points : 2
    Points
    2
    Par défaut re
    pourquoi ta classe piece tient une reference sur le plateau ?
    Ma classe Piece possede une reference sur Plateau car elle a besoin d'acceder a des methodes de mon objet damier(Type Plateau).



    redéfinie la methode clone() dans la classe Piece
    Je veux bien mais je dois bien copier mon attribut de type Plateau, comment faire sans utiliser son clone().

  5. #5
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    il faut éviter, d'une manière générale, les références cycliques entre objets. Ca te pose des problèmes pour le clonage, mais ca peut aussi en poser au garbage collector pour récupérer la mémoire inutilisée.

    Tu devrais donc retirer la référence à l'objet Plateau dans tes objets Piece, et les rajouter dans les paramètres de fonctions. Exemple:

    Remplace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    class Piece {
     
      private Plateau monPlateau;
     
      void deplacePiece() { ... }
    }
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class Piece {
     
      void deplacePiece(Plateau unPlateau) { ... }
    }
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 3
    Points : 2
    Points
    2
    Par défaut re
    Merci d'avoir repondu aussi vite.

    Je vais effectivement deplacer la reference dans les methodes.

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

Discussions similaires

  1. [ DEBUTANT ] Problème exercice boucle + récursive
    Par arnaud405 dans le forum Caml
    Réponses: 37
    Dernier message: 06/11/2007, 01h39
  2. [debutant] clonage bd access
    Par mwanjany dans le forum WinDev
    Réponses: 2
    Dernier message: 23/10/2007, 15h27
  3. [DEBUTANT]faire une boucle dans une procédure stockée
    Par tripper.dim dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 21/06/2007, 13h49
  4. [debutant] Lecture en boucle d'un fichier texte
    Par sissi25 dans le forum Langage
    Réponses: 11
    Dernier message: 30/04/2007, 11h00
  5. [Debutant] Batch et Boucle for
    Par ludovic.fernandez dans le forum Scripts/Batch
    Réponses: 8
    Dernier message: 06/05/2004, 19h21

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