Télécharge Exercices sur la programmation orientée des objets 8 - examen et plus Examens au format PDF de Application informatique sur Docsity uniquement! 2° année filières Informatique et Télécommunication 2009-2010
Examen de Programmation Orientéc Objet
15 janvier 2010
Durée : 2h00 ; deux feuilles A4 manuscriles autorisées.
La notation tiendra compte de la présentation, du vocabulaire employé
de la qualité de synthèse,
Une sociéte de services magiques “tes magiciens d'Aquitaine” 4 besoin d'une
application pour gérer ses employés. La première version contient la classe
Magicien qui représente deux catégories d'employé. Voici son code :
final public class Magicien {
static public final int APPRENTI = 0;
static public final int MAGE = 1;
private int rang;
private final String nor;
private int manaPeBase;
private static final int DECROIT MANA = 25;
public Magicien (String nom, int rang, int mana) {
this.nom = nom;
this.rang = rang;
nanaDeBase = mana;
public String nom O {
Téturn nom;
}
public void lancerSort (}
suitch(rang) {
case APPRENTI:
etincelle ();
manaDeBase -= DECROIT_MANA;
break;
case MAGE
eclair 0);
tonnerre(};
manaDeBase -= (DECROIT_MANA * 2);
break;
publie void etincelle() {
gwitch(rang}) {
case APPRENTI:
2° année filières Informatique et Télécommunication 2009-2010
Jl declencher de petites etincelles
break;
public void eclair() {
switch(rang) {
case MAGE:
/{ generer des eclairs
break;
public void tonnerre() {
switch(rang) {
case HAGE:
Jf generer du bruit
break;
1 L’existant
D'après ce code :
1. Ecrire un exemple d'instanciation de la classe Magicien
2. À partir de votre exemple, expliquer les différences entre variable d’ins-
tance et variable de classe.
3. Dans le constructeur, comment indiquer une erreur si la valeur du pa-
ramètre rang est invalide ?
4. Quel mécanisme est mis en place par le langage java pour éviter la du-
plication du code d'initialisation dans les constructeurs? Expliquer ce
mécanisme en ajoutant à cette classe le constructeur :
nt le rang fixe une valeur par
Magicien(String nom, int rang) qui sui
défaut à la mana de be
2 Rernanier le code
Nous elions séparer le code en trois classes : Magicien, Apprenti, Mage
1. Quel défaut cherche-t-on à corriger dans la réalisation de &épart de la
classe Magicien
il nécessaire de conserver un type Magicien ?
2. Pourquoi
3. Pourquoi est-il préférable d’avoir une classe “agicien plutôt qu’une inter-
face?
4. Pourquoi la variable d'instance rang w’est-elle plus nécessaire ?
3 Lien “est-un”
Une solution est d'utiliser un lien “est-un” entre les classes Apprenti, Mage
et la classe Magicien.