Devoir surveillé - Conception par objet et programmation Java

Programming, Java · exam

Voir tous les documents en programmation

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() ;

Publicité

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).

Publicité

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

Publicité

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.

Publicité

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)