Java et le clonage
Résolu/Fermé
Tom1712
Messages postés
102
Date d'inscription
jeudi 14 août 2008
Statut
Membre
Dernière intervention
11 juin 2011
-
6 juin 2011 à 20:58
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 6 juin 2011 à 22:54
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 6 juin 2011 à 22:54
A voir également:
- Java et le clonage
- Clonage disque dur - Guide
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Java décompiler - Télécharger - Langages
3 réponses
KX
Messages postés
16754
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
6 juin 2011 à 21:07
6 juin 2011 à 21:07
Ton code n'est pas correct car tu dois implémenter l'interface Cloneable, sinon utiliser clone sur un objet Fraction te renverra une CloneNotSupportedException.
Mais si tu rajoutes le implements Cloneable ton code devrait être correct, même si il serait quand même utile de redéfinir equals pour être cohérent...
Mais si tu rajoutes le implements Cloneable ton code devrait être correct, même si il serait quand même utile de redéfinir equals pour être cohérent...
Tom1712
Messages postés
102
Date d'inscription
jeudi 14 août 2008
Statut
Membre
Dernière intervention
11 juin 2011
7
6 juin 2011 à 21:10
6 juin 2011 à 21:10
en fait mon prof a dit que implémenter clone ainsi (même si on mettait Cloneable, géré l'exception etc) n'est pas souhaitable du tout (mettre new)... mais je me souviens plus du tout pourquoi... Je ne vois pas où est le problème.
KX
Messages postés
16754
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
6 juin 2011 à 21:14
6 juin 2011 à 21:14
Parce que refaire un new t'oblige à recalculer toutes les valeurs.
Par exemple si tu veux faire en sorte que ta fraction soit irréductible, tu vas faire un calcul de pgcd pour déterminer p et q, or en le clonant tu n'as pas besoin de refaire le calcul, mais ici tu n'as qu'un seul constructeur, donc t'es obligé de t'en servir...
Par exemple si tu veux faire en sorte que ta fraction soit irréductible, tu vas faire un calcul de pgcd pour déterminer p et q, or en le clonant tu n'as pas besoin de refaire le calcul, mais ici tu n'as qu'un seul constructeur, donc t'es obligé de t'en servir...
Tom1712
Messages postés
102
Date d'inscription
jeudi 14 août 2008
Statut
Membre
Dernière intervention
11 juin 2011
7
6 juin 2011 à 22:44
6 juin 2011 à 22:44
j'ai compris le problème, c'est un problème d'héritage. Si je crée une classe qui hérite de fraction, je ne saurais pas utiliser le fonction clone() crée dans fraction. Donc c'est un problème d'héritage. On devrait redéfinir entièrement la méthode clone sans utilisé celle déjà crée. c'est donc "moins" orienté objet.
KX
Messages postés
16754
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
6 juin 2011 à 22:54
6 juin 2011 à 22:54
Personnellement, je préfère utiliser un constructeur par copie :
Mais effectivement si on avait E extends D avec D implements Cloneable il faudrait redéfinir clone.
En pratique ça ne m'est jamais arrivé ^^
class E { E(E e) {...} } E copie = new E(original);
Mais effectivement si on avait E extends D avec D implements Cloneable il faudrait redéfinir clone.
En pratique ça ne m'est jamais arrivé ^^