Conception par objet et programmation Java

Programming, Object-Oriented Design · exam

Browse all programmation documents

Année Universitaire : 2015-2016

DS

Module : Conception par objet et programmation Java

Documents autorisés : Non

Enseignants : Equipe Java

Nombre de pages : 4

Date : 30/10/2015

Heure :9h00

Durée : 1h00

Classes : 3 INFO A, 4 INFINI

PARTIE 1 : (4.5)

Choisir la bonne réponse en justifiant votre choix. Toute réponse non justifiée ne sera pas

comptabilisée.

Question 1 :

Soit le code suivant :

class One {

public One() { System.out.print(1); }

}

class Two extends One {

public Two() { System.out.print(2); }

}

class Three extends Two {

public Three() { System.out.print(3); }

}

public class Numbers{

Advertisement

public static void main( String[] args) {

new Three(); }

}

Quel est le résultat lorsque ce code est exécuté ?

A. 1

B. 3

C. 123

D. 321

E. Aucun affichage

Réponse C : Un appel implicite au constructeur par défaut de la classe mère s’effectue avant

d’exécuter le contenu du constructeur de la classe courante

Réponse C : Avant d’exécuter ses instructions le constructeur de la classe Three appel le

constructeur par défaut de la classe mère via un super() implicite, et pareil pour la classe

Two().

Question 2 :

Soit le code suivant :

1. class Person {

2. String name = "No name";

3. public Person(String nm) { name = nm; }

4. }

5. class Employee extends Person {

6. String emplD = “0000”;

7. public Employee(String id) { empID = id; }

8 }

9. public class EmployeeTest {

Advertisement

10. public static void main(String[] args) {

11. Employee e = new Employee(”4321”);

12. System.out.println(e.empID); }

14. }

Quel est le résultat ?

A. 4321

B. 0000

C. Une exception est levée lors de l'exécution.

D. Compilation échoue en raison d'une erreur dans la ligne 7.

Réponse D : Constructeur par défaut de la classe mère manquant OU appel au

constructeur paramétré de la classe mère manquant

Question 3:

Soit le code suivant :

1. int []x= {1, 2,3,4, 5};

2.int y[] =x;

3. System.out.println(y[2]);

Quelle est la bonne réponse ?

A. Ligne 3 affiche la valeur 2.

B. Ligne 3 affiche la valeur 3.

C. Compilation échoue en raison d'une erreur dans la ligne 2.

D. Compilation échoue en raison d'une erreur dans la ligne 3.

Réponse B : Au niveau de la ligne 2 on a affecté les objets de x à y et vu que l’indexation

d’un tableau commence de 0, l’index 2 affiche la valeur de la troisième case

PARTIE 2 : (15.5)

Après La suspension temporaire de Joseph "Sepp" Blatter l’actuel président de la Fifa. Et en

Advertisement

prévision du pire vue qu’Issa Hayatou assura l’intérim, certaines fédérations de football ont

jugé utile de se doter de leur propre application pour la gestion des équipes et des joueurs. Dans

ce contexte et après une brève analyse il apparait que :

  • Une équipe est caractérisée par un identifiant de type entier et un nom de type chaine

de caractère.

  • Un membre est caractérisé par un identifiant de type entier, un nom de type chaine de

caractère.

  • Un joueur est un membre spécialisé par son numéro de type entier
  • Un entraineur est un membre spécialisé par le nombre de ses années d’expériences de

type entier.

  • Une équipe possède plusieurs membres qui sont au nombre maximal de 30.

Travail demandé :

Respecter les Règles (Conventions) du Nommage Java

Les Getters et les setters ne sont à implémenter que si leur demande est explicite.

I.

Implémenter la classe Membre. Elle doit comprendre : (2.5)

o Uniquement un constructeur paramétré. (0.5)

o Les Getters et les Setters seulement pour l’attribut identifiant. (0.5)

o La méthode String toString().(0.5)

o La méthode boolean equals(Membre m). sachant que deux membres sont

égaux s’ils ont le même id et le même nom. (1)

II.

Implémenter les classes Joueur et Entraineur. Veiller à ce qu’elles contiennent un

constructeur et la méthode toString().(2)

III.

Advertisement

Implémenter la classe Equipe. Elle doit comprendre :

1. La méthode int rechercher(Membre membre) : cette méthode retourne l’indice

(position) du membre s’il existe, -1 sinon. (1)

2. La méthode void ajouter (Membre membre) : cette méthode permet d’ajouter un

nouveau membre à l’équipe, tout en prenant en considération qu’une équipe ne peut

dépasser sa capacité maximale (30 membres) et qu’un membre ne peut être affecté

deux fois à la même équipe. (1.5)

3. La méthode void supprimer(Membre membre) : cette méthode permet de

supprimer un membre de l’équipe. (2)

4. La méthode String toString() : cette méthode retourne une chaine de caractère

contenant l’id, le nom de l’équipe et uniquement la liste de ses joueurs. (1.5)

5. La méthode void valider() : cette méthode affiche le message suivant « Equipe

valide » si l’équipe possède un et un seul entraineur parmi ses membres, et déclenche

une Exception personnalisée de type EquipeNonValideException sinon. (1.5)

6. La méthode void afficherNumeros() : cette méthode affiche uniquement les

numéros des joueurs de l’équipe. (1.5)

7. La méthode void transfererJoueur(Joueur joueur, Equipe e1, Equipe e2) : cette

méthode permet de transférer le joueur de l’équipe e1 vers l’équipe e2. Si le joueur

n’est pas dans l’équipe e1, une Exception personnalisée TransfertException sera

levée avec le message suivant « Transfert impossible » (2)