Vous êtes sur la page 1sur 2

EXAMEN DE PASSAGE A LA 2EME ANNEE CDS SESSION JUIN 2006

Filière : TSDI Barème : 40_ Pis.


Niveau : TS Durée: 4H30.
Variante n°6

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.

Partie 1 : (30 points)


NB : La plupart des questions sont indépendantes. Chaque question demande une réponse souvent
courte mais toujours précise, à rédiger clairement.

I - Lesâgesdelavie (10 points)

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

II - Placcauxjeunes (12 points)

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)

4. Proposer une redéfinition de la méthode estEnfant(...) dans la classe Enfant. (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);

III - Donnerlavie (4 points)

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)

Vous aimerez peut-être aussi