Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1732 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Copie superficielle et copie profonde en JAVA

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Copie superficielle et copie profonde en JAVA

n°1780770
Profil sup​primé
Posté le 01-09-2008 à 00:19:53  answer
 

Bonjour :)
 
Je souhaiterais vous faire part de deux exemples de codes-sources, l'un pour illustrer la copie superficielle, et l'autre la copie profonde, afin que vous puissiez me dire si j'ai bien compris le principe. Ces deux exemples sont dérivés du livre JAVA de Claude Delanoy. Merci :jap:
 
Exemple de la copie superficielle :
 

Code :
  1. public class Point
  2. {
  3.    // Constructeur
  4.    public Point(int abs, int ord, Zozo var)
  5.    {
  6.       x = abs;
  7.       y = ord;
  8.       // Question subsidiaire :
  9.       // C'est bien comme ça qu'on s'y prend lorsqu'on code le constructeur d'une classe comportant un champ de type Classe ?
  10.       z = var;
  11.    }
  12.    // Méthode de copie superficielle
  13.    public Point copie()
  14.    {
  15.       Point p = new Point(x, y, z);              // Seule cette ligne est nécessaire selon moi
  16.       p.x = x;                                   // Pour moi cette ligne est inutile, pouvez-vous me le confirmer ?
  17.       p.y = y;                                   // Pour moi cette ligne est inutile, pouvez-vous me le confirmer ?
  18.       p.z = z;                                   // Pour moi cette ligne est inutile, pouvez-vous me le confirmer ?
  19.       return p;                                  // On retourne la copie superficielle de type classe Point
  20.    }
  21.    // Champs
  22.    private int x;
  23.    private int y;
  24.    private Zozo z;
  25. }


 
 
Exemple de la copie profonde :
 

Code :
  1. public class Point
  2. {
  3.    // Constructeur
  4.    public Point(int abs, int ord, Zozo var)
  5.    {
  6.       x = abs;
  7.       y = ord;
  8.       // Question subsidiaire :
  9.       // C'est bien comme ça qu'on s'y prend lorsqu'on code le constructeur d'une classe comportant un champ de type Classe ?
  10.       z = var;
  11.    }
  12.    // Méthode de copie profonde
  13.    public Point copie()
  14.    {
  15.       Zozo bidule = z;
  16.       Point p = new Point(x, y, bidule);   
  17.       return p;                                  // On retourne la copie profonde de type classe Point
  18.    }
  19.    // Champs
  20.    private int x;
  21.    private int y;
  22.    private Zozo z;
  23. }


Message édité par Profil supprimé le 01-09-2008 à 00:22:42
mood
Publicité
Posté le 01-09-2008 à 00:19:53  profilanswer
 

n°1780775
verdoux
And I'm still waiting
Posté le 01-09-2008 à 00:24:44  profilanswer
 

Non c'est pas ça, z n'est pas cloné.
Et en effet les lignes sont inutiles

n°1780783
Profil sup​primé
Posté le 01-09-2008 à 00:33:26  answer
 

Qu'est-ce qui ne va pas ? Le constructeur ? La copie superficielle ? La copie profonde ? Merci :)

n°1780821
Bidem
Posté le 01-09-2008 à 09:17:50  profilanswer
 

Code :
  1. Zozo bidule = z;
  2. Point p = new Point(x, y, bidule);

.
 
Ça ne fait pas une copie profonde, ta variable bidule ne fait que contenir une référence à z.
 
Pour faire une copie profonde, il faut que tu créé une nouvelle instance de Zozo à partir de z.

n°1781022
Profil sup​primé
Posté le 01-09-2008 à 16:00:19  answer
 

Je suis désolé mais je ne comprends toujours pas. Auriez-vous d'autres exemples de copie superficielle et profonde en JAVA ? Sur un topic quelconque ?? Encore merci :)

n°1781024
Bidem
Posté le 01-09-2008 à 16:05:07  profilanswer
 

Code :
  1. Zozo bidule;
  2. bidule = new Zozo(z);
  3. // ou bien
  4. bidule = z.copie(); // pour garder la même logique  
  5. Point p = new Point(x, y, bidule);


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Copie superficielle et copie profonde en JAVA

 

Sujets relatifs
C# comparativement à Javaparser html avec java
pb applet et classe java[VBS] copie d'un fichier avec une liste d'utilisateur
Copie de fichier sur reseau ?Appli Java, Compression gzip des jsp
Communication application Java <-> Gps (ou PPC) sous WinCE[RESOLU] Assistant d'installation pour programme Java [newb inside]
Java - Afficher un graphe et rendre interactif[JAVA]probleme export en xls (Servlet)OutputStream
Plus de sujets relatifs à : Copie superficielle et copie profonde en JAVA


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR