Copie d'un objet

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

La copie d'un objet est l'action, en programmation informatique, où un objet a ses attributs copiés dans un autre objet du même type de donnée. Un objet est un type de donnée composée dans les langages de programmation orientée objet. La copie des données est une des procédures les plus communes qui arrive dans le programme pour ordinateur. Un objet peut être copié pour réutiliser tout ou la partie de ses données dans un nouveau contexte.

Copie superficielle[modifier | modifier le code]

En anglais shallow copy. Dans ce processus, B est attaché au même bloc de mémoire que A.

Ceci arrive dans une situation dans laquelle les mêmes données sont partagées entre A et B, ainsi une modification du premier changera l'autre. Le bloc de mémoire original de B ne se réfère plus à quelque chose. Si le langage de programmation n'a pas un ramasse-miettes, le bloc original de mémoire de B est probablement en fuite de mémoire.

L'avantage de la copie superficielle est que sa vitesse de exécution est rapide et ne dépend pas de la taille de la donnée.

Les copies bitwise de objets qui ne sont pas composées de blocs monolithiques sont des copies superficielles.

Copie profonde[modifier | modifier le code]

En anglais deep copy. La copie profonde consiste dans une réelle copie du objet. L'avantage est que A et B ne dépendent pas l'un de l'autre mais il y a un fort coût en termes de vitesse.

Copie paresseuse[modifier | modifier le code]

En anglais lazy copy. La copie paresseuse est une combinaison des deux stratégies précédentes. Quand initialement on copie un objet, la copie superficielle est utilisée. Un compteur A est utilisé pour tracer combien d'objets partagent la donnée. Quand le programme veut modifier l'objet, il peut déterminer si la donnée est partagée (en examinant le compteur) et peut faire une copie profonde si nécessaire.

La copie paresseuse semble une copie profonde mais elle a aussi les avantages de vitesse de la copie superficielle quand est possible. Dans quelques situations, des références circulaires peuvent causer problèmes.

La copie paresseuse est corrolaire à la Copy-On-Write.

Voir aussi[modifier | modifier le code]

Liens externes[modifier | modifier le code]