Résumé:Ce TD est une liste d'exercices extraits de précédents examens.Exercice n° 1Dans un rapport de projet, on trouve le diagramme de classe ci-contre. Par ailleurs, dans le code, on peut lireA* p= new C(); //... C& c = dynamic_cast<C&>(*p);Le diagramme de classe est correct, la classe A contient des méthodes non redéfinies et appelées dans la classe C et le programme compile. Expliquer à quel(s) endroit(s) au minimum doit apparaître le mot clé virtual. |
![]() |
Exercice n° 2La bibliothèque Boost propose une classe noncopyable. Cette classe est telle que tout objet d'une classe qui hérite de noncopyable ne peut être dupliqué, ou servir d'argument gauche d'un opérateur d'affectation. Écrire une implémentation de la classe noncopyable. |
int main(){ Collection<int> y; for(int x=0;x<10;x++){ y.add(x*5); } Collection<int>::Iterator it=y.iterator(); \\(*) while(it.hasNext()){ std::cout << it.next() << std::endl; } }Pour simplifier, on supposera que la classe Collection ne contient que les méthodes add et iterator, et que les Iterator ne contiennent que les méthodes hasNext et next. Écrire les définitions de la classe Collection, de la classe correspondant au type Collection<T>::Iterator, ansi que de leurs méthodes. (On supposera que le conteneur sous-jacent dispose d'une méthode push_back.) Dans le cas d'un appel de next alors que l'itérateur est à la fin de la collection, lancer une exception (à définir) NoSuchElementException.
Discuter la possibilité d'écrire
Iterator<int> it=y.iterator();+ à la ligne (*).
On prêtera attention au fait que toutes les instances d'une même implémentation de Validator se comportent de la même manière; on mettra donc en place dans StandardValidator les mécanismes qui permettent d'assurer qu'on ne peut créer qu'une instance de StandardValidator.
Modifier la classe registerLogin de sorte que le type de Validator en soit un paramètre. Mettre en place les mécanismes permettant de vérifier à la compilation que le type paramètre est bien un Validator.
Comme le Validator est un paramètre de registerLogin, on a uniquement besoin des classes Validator, et non des objets. Indiquer les modifications que ceci implique.