
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).