public class Main {
public static void main(String[] args) {
Banque banque = new Banque();
Client c1 = banque.createClient();
System.out.println(banque.getNbClients());
try {
Banque banqueClone = banque.clone();
Client c2 = banqueClone.createClient();
System.out.println(banque.getNbClients()+ " "+
banqueClone.getNbClients());
} catch (CloneNotSupportedException ex) {
System.err.println(ex.getMessage());
}
}
}
Donnez la trace d'exécution de la fonction main.
Quel est le problème de la méthode actuelle de clonage?
Que faut-il modifier dans les classes Banque et Client pour réaliser le clonage, dit « profond »,
nécessaire à la réalisation des tests?
Exercice 2 : Le clonage en C++
On considère la classe Client de l'exercice 4 du TD1. On veut rajouter un constructeur sans paramètres.
Donner le code C++ nécessaire. Quel est la condition qu'il faut maintenant vérifier dans le constructeur
par copie?
On considère la déclaration de la classe Banque ci-après :
Fichier Banque.h
#include <vector>
class Banque {
public:
Banque();
Banque(const Banque& orig);
virtual ~Banque();
Client* createClient();
int getNbClients();
private:
std::vector<Client*> _clients;
};
Comment réaliser le clonage de la banque? Donner le code nécessaire (du pseudo-code algorithmique
peut être utilisé si besoin est).