TCS Programmation par Objet

publicité
Vignettes TCS
Évaluation du
savoir-faire en
informatique
Programmation par
objets
Projet UNIT - GEM
Conception des vignettes : Ecoles des Mines de Nantes, Ecole Centrale de Nantes
Programmation par objets
École des Mines de Nantes (conception : Adrien Lèbre, Hervé Grall)
TCS - Ecole des Mines de Nantes (conception : Adrien Lèbre)
PPO1. Scénario
Pages
1. Programmation par objets (support JAVA) / Encapsulation des objets (agrégation)
3
PPO2. Scénario
3
1. Programmation par objets (support JAVA) / Encapsulation des objets (surcharge)
PPO3. Scénario
4
1. Programmation par objets (support JAVA) / Encapsulation des objets (polymorphisme)
TCS - Ecole des Mines de Nantes (conception : Hervé Grall)
PPO4a. Scénario
Pages
1. Interfaces et classes d’implémentation
4
PPO5b. Scénario
5
2. Interfaces et classes d’implémentation
PPO6c. Scénario
5
3. Interfaces et classes d’implémentation
PPO7d. Scénario
5
4. Interfaces et classes d’implémentation
Sophie Lorenzo, CAPE, Ecole des Mines de Nantes, décembre 2010
2
Compétence : 1. programmation par objets (support JAVA) /
(agrégation)
Encapsulation des objets
PPO1. Scénario : Une bibliothèque JAVA permettant de faire du calcul de risque sur des
personnes vous a été remise. Cette dernière permet à partir d’un objet unUtilisateur (de la
classe Utilisateur) passé en paramètre, de créer un objet unUtilisateurRisque de la classe
UtilisateurRisque sur lequel il est possible de simuler diverses manipulations permettant de
définir une police d’assurance en adéquation avec le profil de l’utilisateur.
Lors de l’utilisation de la bibliothèque, vous vous rendez compte que l’objet unUtilisateur
ayant servi à la création de l’objet unUtilisateurRisque est modifié au fur et à mesure des
manipulations. Les développeurs de la bibliothèque vous indiquent qu’une instance de la
classe UtilisateurRisque agrège un objet de la classe Utilisateur.
Hypothèse : si vous pensez que pour ne pas modifier l’objet origine, il est nécessaire de le dupliquer
avant de le passer en paramètre du constructeur de la classe UtilisateurRisque.
Nouvelle donnée : Que toute modification sur l’objet origine réalisée depuis l’extérieur doit être
répercutée sur l’objet agrégé.
Quel est l’effet de cette nouvelle donnée sur votre hypothèse ?
[-2 ]
Elle rend l’hypothèse beaucoup moins probable.
[ -1]
Elle rend l’hypothèse moins probable.
[ 0]
La nouvelle donnée n’a aucun effet sur l’hypothèse
[ +1]
Elle rend l’hypothèse plus probable.
[ +2]
Elle rend l’hypothèse beaucoup plus probable.
Compétence : 1. programmation par objets (support JAVA) /
(surcharge)
Encapsulation des objets
PPO2. Scénario : Un collègue a étendu la méthode calculRisque() au sein d’une sous classe
UtilisateurRisqueExt. Cette classe propose un compteur permettant de comptabiliser le
nombre de fois où la méthode calculRisque() est appelée.
Lors de l’exécution, vous obtenez un comportement menant à une exception mettant fin à
l’exécution du programme.
Hypothèse : si vous pensez que le nombre d’appels à calculRisque() a été trop important et vous
avez dépassé la capacité du compteur.
Nouvelle donnée : Et vous apprenez que le débordement du compteur a été prévu via une exception
traitée (notification auprès de l’utilisateur + réinitialisation du compteur).
Quel est l’effet de cette nouvelle donnée sur votre hypothèse ?
[-2 ]
Elle rend l’hypothèse beaucoup moins probable.
[ -1]
Elle rend l’hypothèse moins probable.
[ 0]
La nouvelle donnée n’a aucun effet sur l’hypothèse
[ +1]
Elle rend l’hypothèse plus probable.
[ +2]
Elle rend l’hypothèse beaucoup plus probable.
Sophie Lorenzo, CAPE, Ecole des Mines de Nantes, décembre 2010
3
Compétence : 1. programmation par objets (support JAVA) /
(polymorphisme)
Encapsulation des objets
PPO3. Scénario : Il vous est demandé d’étendre les différents profils d’utilisateurs proposés
par la bibliothèque de calcul de risque. La documentation de celle-ci vous indique que
chacune des classes devant mettre en œuvre un profil doit remplir les spécifications
indiquées par l’interface Profil.
Vous suivez ces recommandations et développez une classe ProfilTCS en n’omettant pas
d’indiquer que vous implémentez bien l’interface (class ProfilTCS implements Profil)
Lors de l’utilisation de votre classe dans la structure générale de la bibliothèque, vous vous
rendez compte que les méthodes invoquées ne correspondent pas toujours à votre code.
Hypothèse : Si vous pensez que les structures algorithmiques de la bibliothèque reposent sur une
abstraction différente de l’interface Profil.
Nouvelle donnée : Et que vous apprenez qu’une classe abstraite ProfilAbs met en œuvre
partiellement l’interface Profil et que toute classe devant implémenter l’interface Profil doit étendre
ProfilAbs.
Quel est l’effet de cette nouvelle donnée sur votre hypothèse ?
[-2 ]
Elle rend l’hypothèse beaucoup moins probable.
[ -1]
Elle rend l’hypothèse moins probable.
[ 0]
La nouvelle donnée n’a aucun effet sur l’hypothèse
[ +1]
Elle rend l’hypothèse plus probable.
[ +2]
Elle rend l’hypothèse beaucoup plus probable.
Compétence : 1. Interfaces et classes d’implémentation
PPO4a. Scénario : Vous collaborez au développement d'un programme en Java pour lequel la
compilation se fait avec Eclipse, de manière incrémentale.
Le programme ne compile pas, avec la seule erreur de compilation suivante :
The type X must implement the inherited abstract method Y.g()
Hypothèse : Si vous pensez que le programme compilait avant la dernière modification.
Nouvelle donnée : Et qu’alors vous apprenez que la dernière modification est la suivante : une
méthode g a été ajoutée dans l'interface Y
Quel est l’effet de cette nouvelle donnée sur votre hypothèse ?
[-2 ]
Elle rend l’hypothèse beaucoup moins probable.
[ -1]
Elle rend l’hypothèse moins probable.
[ 0]
La nouvelle donnée n’a aucun effet sur l’hypothèse
[ +1]
Elle rend l’hypothèse plus probable.
[ +2]
Elle rend l’hypothèse beaucoup plus probable.
Sophie Lorenzo, CAPE, Ecole des Mines de Nantes, décembre 2010
4
Compétence : 2. Interfaces et classes d’implémentation
PPO5b. Scénario : Vous collaborez au développement d'un programme en Java pour lequel la
compilation se fait avec Eclipse, de manière incrémentale.
Le programme ne compile pas, avec la seule erreur de compilation suivante :
The type X must implement the inherited abstract method Y.g()
Hypothèse : Si vous pensez que le programme compilait avant la dernière modification.
Nouvelle donnée : Et qu’alors vous apprenez que la classe X n'implémente pas la méthode g
Quel est l’effet de cette nouvelle donnée sur votre hypothèse ?
[-2 ]
Elle rend l’hypothèse beaucoup moins probable.
[ -1]
Elle rend l’hypothèse moins probable.
[ 0]
La nouvelle donnée n’a aucun effet sur l’hypothèse
[ +1]
Elle rend l’hypothèse plus probable.
[ +2]
Elle rend l’hypothèse beaucoup plus probable.
Compétence : 3. Interfaces et classes d’implémentation
PPO6c. Scénario : Vous collaborez au développement d'un programme en Java pour lequel la
compilation se fait avec Eclipse, de manière incrémentale.
Le programme ne compile pas, avec la seule erreur de compilation suivante :
The type X must implement the inherited abstract method Y.g()
Hypothèse : Si vous pensez que le programme compilait avant la dernière modification.
Nouvelle donnée : Et qu’alors vous apprenez que la dernière modification est la suivante : une
méthode a été retirée de la classe X
Quel est l’effet de cette nouvelle donnée sur votre hypothèse ?
[-2 ]
Elle rend l’hypothèse beaucoup moins probable.
[ -1]
Elle rend l’hypothèse moins probable.
[ 0]
La nouvelle donnée n’a aucun effet sur l’hypothèse
[ +1]
Elle rend l’hypothèse plus probable.
[ +2]
Elle rend l’hypothèse beaucoup plus probable.
Compétence : 4. Interfaces et classes d’implémentation
PPO7d. Scénario : Vous collaborez au développement d'un programme en Java pour lequel la
compilation se fait avec Eclipse, de manière incrémentale.
Le programme ne compile pas, avec la seule erreur de compilation suivante :
The type X must implement the inherited abstract method Y.g()
Hypothèse : Si vous pensez que le programme compilait avant la dernière modification.
Nouvelle donnée : Et qu’alors vous apprenez que la méthode retirée est une méthode privée
Quel est l’effet de cette nouvelle donnée sur votre hypothèse ?
[-2 ]
Elle rend l’hypothèse beaucoup moins probable.
[ -1]
Elle rend l’hypothèse moins probable.
[ 0]
La nouvelle donnée n’a aucun effet sur l’hypothèse
[ +1]
Elle rend l’hypothèse plus probable.
[ +2]
Elle rend l’hypothèse beaucoup plus probable.
Sophie Lorenzo, CAPE, Ecole des Mines de Nantes, décembre 2010
5
Téléchargement