Vous êtes sur la page 1sur 8

Année Universitaire : 2016-2017

Devoir surveillé

Module : Conception par objet et programmation Java Documents autorisés : non

Enseignant : Equipe Java Nombre de pages : 3

Date : Vendredi 28/10/2016 Heure : 09h:00 Durée : 1h00

Classes : 3A, 4 Infini

Partie I (5 points)

Soit A, B, C, D quatre classes qui sont implémentées de la manière suivante :

public class A {}

public class B extends A {}

public class C extends B {}

public class D extends C {}

Etant donné les différentes instantes suivantes qui ont été déclarées et instanciées de la manière
suivante :

A a = new B() ;

B b = new B() ;

C c = new D() ;

D d = new D() ;

Parmi les instructions suivantes qu’elles sont les instructions qui s’exécutent normalement,
celles qui ont une erreur de compilation et celles qui déclenchent une exception au niveau de
l’exécution.

NB : Vous devez traiter chaque instruction d’une manière indépendante

Vous devez justifier chaque réponse. Une réponse non justifiée ne sera pas comptabilisée
a = b ; s’exécute normalement car B est une classe fille de A (upcast implicite)

b = (B) a ; s’exécute normalement car :

- Au niveau de la compilation ‘b’ est une instance de la classe B, un cast


explicite avec la classe B permet de passer la phase de compilation avec succès
- Au niveau de l’exécution ‘a’ est une instance de la classe B donc le cast est
permet

b = (D) c ; s’exécute normalement car :

- Au niveau de la compilation ‘b’ est une instance de la classe B, un cast


explicite avec la classe B ou n’importe quelles classes fille de B permet de
passer la phase de compilation avec succès
- Au niveau de l’exécution ‘c’ est une instance de la classe D donc un cast avec
la classe D est permet

c = (C) b ; Déclenche une exception au niveau de l’exécution car :

- Au niveau de la compilation ‘c’ est une instance de la classe C, un cast explicite


avec la classe C permet de passer la phase de compilation avec succès
- Au niveau de l’exécution ‘b’ est une instance de la classe B elle ne peut jamais
se transformer à une instance d’une classe fille (C).

b = (C) (D) d ; s’exécute normalement car :

- Au niveau de la compilation ‘b’ est une instance de la classe B, un cast


explicite avec la classe B ou n’importe quelles classes fille de B permet de
passer la phase de compilation avec succès
- Au niveau de l’exécution ‘d’ est une instance de la classe D donc un cast avec
la classe D ou n’importe quelles classes mère est permet
Partie II (15 points)

L’entreprise "Just Smart" spécialisée dans le développement Java, désire développer une
application Java destinée aux stations de lavage. L’objectif de l’application est de donner des
informations instantanées aux administrateurs des stations sur les différents véhicules qui sont
en cours de traitement.

L’application est composée des différentes classes suivantes :

- La classe "Vehicule" caractérisée par un identifiant (id : de type entier), une marque
(marque : de type String), une date de lavage (dateDeLavage : de type date) et un type
du carburant (typeDeCarburant : de type String).
- La classe "Voiture" qui est un véhicule et qui est caractérisée aussi par une couleur
(couleur : de type String)
- La classe "Camion" qui est un véhicule et qui est caractérisée aussi par un nombre de
place (nbrPlace : de type entier).
- La classe "Station" caractérisée par un identifiant (id : de type entier), nom (nom : de
type String) et un ensemble de véhicules (vehicules : un tableau)

NB : Vous devez prendre en considération qu’une station ne peut pas traiter plus que 10
véhicules au même temps.

1- Créer la classe "Vehicule", en implémentant seulement un constructeur paramétré, ainsi


les méthodes Getters et Setters pour les attributs date du lavage et marque, la méthode
"toString" et la méthode "equals" sachant que des véhicules sont identiques si et
seulement s’ils ont le même identifiant et la même date du lavage.

Constructeur paramétré (0.5 point)


Getters et Setters (1 point)

toString (0.5 point)

equals (1 point)

2- Créer la classe "Voiture" en implémentant seulement un constructeur qui nous permet


de créer la voiture en spécifiant toutes ses caractéristiques, ainsi la méthode "toString".
Constructeur paramétré (1 point)

toString (1 point)

NB : On va considérer que les Getters et les Setters de la classe "Voiture" sont déjà
implémentées, et que la classe "Camion" est implémentée avec toutes ses méthodes.

3- Créer la classe "Station" :


a- Créer 2 constructeurs : un constructeur par défaut et un constructeur paramétré
contient tous les attributs de la classe.

2 Constructeurs (0.5 + 0.5 point)


b- Implémenter la méthode "ajouterVehicule" qui permet d’ajouter un nouveau
véhicule pour le traitement. Cette méthode doit vérifier si le véhicule est déjà en
cours de traitement ou non.

ajouterVehicule (1.5 points)

c- Implémenter la méthode "supprimerVehicule" qui permet de supprimer un


véhicule qui a terminé son traitement.

supprimerVehicule (1.5 points)

d- Implémenter la méthode toString" qui permet d’afficher toutes les caractéristiques


d’une station du lavage ainsi l’ensemble de ses véhicules.
toString (1.5 points)

e- Implémenter la méthode "NbrVoitureEssence" qui permet de retourner le nombre


des voitures en cours de traitement et qui ont comme type de carburant "essence"
NbrVoitureEssence (1.5 points)

f- Implémenter la méthode "NbrVoitureNoire" qui permet de retourner le nombre


des voitures en cours de traitement et qui ont la couleur noire

NbrVoitureNoire (1.5 points)


g- Implémenter la méthode "AfficherCamion" qui permet d’afficher les camions en
cours du traitement. Cette méthode doit déclencher une exception de type :
"NullPointerException" s’il n’y a aucun camion à afficher.

AfficherCamion (1.5 points)