Académique Documents
Professionnel Documents
Culture Documents
Examen Passage Cds Variante 6 Revision
Examen Passage Cds Variante 6 Revision
Important :
II sera pris en considération la convivialité des interfaces et la clarté du code. La gestion des
erreurs et la robustesse de l'application seront bien appréciées. La totalité de votre travail doit
être enregistrée dans un même répertoire pour faciliter la sauvegarde par la suite. Pour
cela, il faut créer sur votre bureau un dossier qui porte votre nom <$ Prénom, et c'est dans ce
dernier que vous allez enregistrer vos réalisations par ia suite.
1. Déclarer une classe Personne dont les objets seront des personnes identifiées par leur nom et leur âge. Tous les
champs de cette classe doivent être privés (private). Ajouter un constructeur sans paramètres. (2 points)
2. Ajouter un constructeur dont les paramètres fixent le nom et l'âge d'une personne. Si le paramètre d'âge est
négatif, l'âge est fixé à zéro. (2 points)
3. Dans cette classe Personne, redéfinir la méthode toStringQ de la classe Object. Par exemple, l'affichage d'une
personne de 23 ans nommée « Pierre » doit donner « Pierre a 23 ans ». Eviter de mettre un « s » à « ans » lorsque
la personne a moins de deux ans. (2 points)
4. Programmer dans cette classe la méthode setAge(...), avec un paramètre qui permet de changer l'âge d'une
personne. Si le nouvel âge est négatif, la méthode doit lever une exception contrôlée. Fixer le nom de cette nouvelle
classe d'exceptions sans la programmer. (2 points)
5. Ajouter dans cette classe la constante statique MAJORITE en l'initialisant à 18 ans. Cette constante fixe la
charnière entre lariériodeide l'enfance-ct l'âge adulte. Un adulte a 18 ans ou plus. (1 point)
6. Ajouter dans la classcPersonne la méthode estEnfant(...) qui retourne true si l'objet appelant
peut être considère comme un enfant et false sinon. (1 point)
Paqe1/3
r
Une autre manière de distinguer les personnes est de créer trois classes : Personne, Enfant et Adulte.
1. Proposer des relations d’héritage entre les trois classes Adulte, Personne et Enfant. (2 points)
2. Ajouter un constructeur sans paramètres dans la classe Enfant et un constructeur dont les paramètres fixent le nom
et l'âge de l'enfant, en évitant de dupliquer un code existant. Comme le second constructeur doit toujours réussir, si son
paramètre d'âge dépasse l'âge de majorité (donné par la constante statique MAJORITE stockée dans là classe
Personne), on fixera l'âge l’enfant a un an de moins que cette majorité .Attention à la manière de fixer cet âge : le
champ correspondant étant privé, il n'est pas directement modifiable depuis ce constructeur. (4 points)
3. Redifinir dans la classe Enfant la méthode public String toString() pour que par exemple l’affichage d’un enfant de
7 ans nommée « Anne » soit l’enfant Anne a 7 ans » .Essayer de réutiliser le code existant sans le dupliquer.(2 Points)
5. Recopier les instructions suivantes en indiquant lesquelles sont incorrectes (erreurs détectées à la
compilation);(2 points)
•»
Enfant paul;
paul = new Personne("Paul",34);
Personne e = new EnfantQ;
paul = e; -
paul = (Enfant) e;
if (paul.estEnfantQ) {
}
paul = new Enfant("Sylvain", 65); new
Enfant("Sylvain", 10).setAge(21);
1. Dans le même package, déclarer une autre classe, exécutable, dont l'exécution (3 points)
crée un adulte et fixe son nom et son âge sans utiliser la méthode setAge(...),
• crée deux enfants d'âge zéro,
modifie l'âge des deux enfants avec la méthode setAge(...), mais en n'utilisant qu'une seule fois l'instruction
de capture de l'exception (l'effet de cette capture sera un simple affichage qui sera amélioré dans la question
suivante),
évalue sur chaque personne la méthode estEnfant(...).
2. Dans la capture unique de l'exception générée par les deux appels à la méthode setAge(...), comment faire pour
savoir sur lequel des deux enfants le changement d'âge n'a pas été correct ? Indiquer tout ce qu'il faudrait
modifier pour obtenir ce résultat. (1 point)
VI - Devcniradulte (4 points)
Quand on connaît l'âge d'une personne, on sait la construire comme enfant ou comme adulte, donc on n'a plus
besoin du constructeur avec paramètres de lardasse Personne.
1. Proposer une méthode de la classe Personne qui aurait le même effet que l'instruction new sur ce constructeur
supprimé, mais qui construirait tantôt un adulte, tantôt un enfant. (3 points)
2. Donner un exemple complet d'utilisation de cette méthode. (1 point)