Accueil
 Sommaire du cours
 1  Introduction à Java
 2  Concepts de bases de Java
 3  Classes et objets en Java
 4  Généralisation spécialisation en Java
 5  Organisation des sources Java
 6  API Java
 7  Exceptions en Java
 8  Concepts objets avancés en Java
 8.1  Copie simple/légère
 8.1.1  Copie pour studs
 8.1.2  Représentation graphique d'une copie légère dans studs
 8.1.3  Exemple de copie légère
 8.1.4  Représentation graphique d'une copie plus profonde dans studs
 8.1.5  Copie plus profonde dans studs
 8.1.6  Représentation graphique d'une copie profonde
 8.1.7  Clone de Scrutin
 8.1.8  Clone en copie profonde de Personne
 8.1.9  Suite exemple de copie profonde
 8.2  Retour sur \texttt hashCode()
 8.3  Retour sur les exceptions
 Bibliographie

 Contacts

W3C validator

Département INF  
 Conception et programmation orientées objet


8.1.7 Clone de Scrutin
 
package studsclone; 
public class Scrutin implements Cloneable { 
3    private Personne organisateur; 
    private String nomScrutin; 
    public Scrutin(final String nom, final Personne organisateur) { 
        nomScrutin = nom; 
7        this.organisateur = organisateur; 
    } 
    /** le clonage duplique le nom mais ne peut pas modifier lorganisateur. 
     * En effet le clonage de lorganisation clone les scrutins quil a 
11     * organisÃľ et nous entrerions dans une cascade dappels infinie 
     **/ 
    @Override 
    public Scrutin clone() throws CloneNotSupportedException { 
15        return new Scrutin(new String(nomScrutin), organisateur); 
    } 
    /** Methode pour modifier lorganisateur en cas de clonage. */ 
    void setOrganisateur(final Personne norg) { 
19        organisateur = norg; 
    } 
    public Personne getOrganisateur() { 
        return organisateur; 
23    } 
}

    précédent     suivant 


Scrutin contient deux attributs, une chaîne de caractères qui est clonable, et une référence sur l’organisateur du Scrutin. La méthode clone est définie entre les lignes 11 et 13. Elle fait appel à la méthode clone de la classe Object qui duplique les attributs de l’objet dans le clone.

Nous voulons aussi que le clone du Scrutin puisse être associé avec la Personne lorsque celui-ci aura été clonée. Pour cela, nous introduisons la méthode setOrganisateur().

Christian Bac, Denis Conan, Télécom SudParis, CSC 4002, Octobre 2015