Correction des exercices
ANNEXE
338
Voici ce que pourrait être la méthode de copie profonde d’un segment :
Segment méthode copieProfonde
{ Segment s
Point o, e
o := origine.copieProfonde
e := extrémité.copieProfonde
s := Création (Segment (o, e))
retourne s
}
Exercice 11.5
Le canevas de notre classe pourrait se présenter ainsi :
classe Doubleton
{ privé méthode Doubleton()
// constructeur privé
{ // initialisation des attributs
}
méthode deClasse Doubleton créeInstance
{ // crée une instance s’il en existe moins de deux,
// sinon renvoie une référence à l’une des deux instances
}
Doubleton deClasse d1, d2
// références aux deux objets instanciés
// autres attributs de la classe
}
Pour gérer convenablement la création des instances, nous prévoyons un compteur de classe
nObj du nombre d’instances déjà créées, ainsi qu’un indicateur booléen nommé prem que
l’on utilisera à partir du troisième appel pour renvoyer alternativement la référence d1 ou la
référence d2.
Voici une version possible de notre classe :
classe Doubleton
{ privé méthode Doubleton
// constructeur privé
{ // initialisation des attributs
}
méthode deClasse Doubleton créeInstance
{ si nObj= 0
alors { d1 := Création Doubleton
nObj := nObj + 1
retourne d1
}
sinon si nObj = 1 alors { d2 := Création Doubleton
nObj := nObj + 1
retourne d2
}
sinon si prem
alors { prem := faux
retourne d1
}
sinon
{ prem := vrai
retourne d2
}
}
Précédent

- 361/370

Suivant