Vous êtes sur la page 1sur 5

Examen Java Objet

Enseignante : Mme Fatma CHAKER KHARRAT


Niveau d’études : M1 BIG DATA
Durée de l’épreuve : 2h
Remarques : Les Documents, calculatrices, téléphone portable sont interdits. Veuillez rendre une
copie propre et claire. Si la syntaxe d’une instruction est fausse alors la note est 0. La qualité de
l’écriture et de la présentation sera prise en compte dans la note finale.

Exercice 1 :

Nous souhaitons réaliser une solution de gestion d’une agence de location de Voitures. Les
classes principales de ce programme sont : la classe Voiture, la classe Client et la classe
Agence. On vous propose quelques codes incomplets pouvant vous guider à implémenter
les classes. S’il y a d’autres classes à développer n’hésitez pas à les écrire.

Une voiture est caractérisée par son immatriculation, sa marque et son prix. Deux voitures
sont égales s’ils ont la même immatriculation et la même marque.

Q1. Compléter la classe Voiture ? (1.5 points)

public class Voiture {


private int immariculation;
private String marque;
private float prixLocation;
public Voiture(int immariculation, String marque, float prixLocation) {
this.immatricualtion=immatriculation ;
this.marque=marque ;
this.prixLocation=prixLocation ;
}
public int getImmariculation() {
return immariculation;
}
public void setImmariculation(int immariculation) {
this.immariculation = immariculation;
}
public String getMarque() {
return marque;
}
public void setMarque(String marque) {
this.marque = marque;}

public float getPrixLocation() {


return prixLocation;}
public void setPrixLocation(float prixLocation) {
this.prixLocation = prixLocation;
}

public boolean equals(Object obj) {


//à compléter. Attention obj est de type Object !
}
public String toString(){
//à compléter
}
}

Un client est caractérisé par un code, un nom et un prénom. Deux clients sont égaux s’ils ont
le même code.

Q2. Compléter la classe Client ? (1.5 points)


public class Client {
private int code;
private String nom;
private String prenom;
public Client(int code, String nom, String prenom) {
this.code=code,
this.nom=nom ;
this.prenom=prenom ;
}
public int getCode() {
return code;}

public void setCode(int code) {


this.code = code;}

public String getNom() {


return nom;}

public void setNom(String nom) {


this.nom = nom;}

public String getPrenom() {


return prenom;}

public void setPrenom(String prenom) {


this.prenom = prenom;}

public boolean equals(Object obj) {


//à completer
}
public String toString(){
//à completer
}}

Cette agence a mis à la disposition de ces clients la possibilité de louer plusieurs voitures,
pour cela on a créé une classe ListVoitures qui permet de stocker un ensemble de voiture
dans une liste. Cette classe permet d’ajouter, de supprimer une voiture et d’afficher la liste
des voitures.
Q3. Compléter la classe ListVoitures ? (8 points)
public class ListVoitures {
private List<Voiture> voitures;
public ListVoitures(List<Voiture> voitures) {
//à compléter
}
public ListVoitures() {
//à compléter
}
public List<Voiture> getVoitures() {
//à compléter
}
public void setVoitures(List<Voiture> voitures) {
//à compléter
}
public void ajoutVoiture(Voiture v) throws VoitureException{
// à compléter en tenant compte de l’exception qui affiche un message lorsque la voiture à
//ajouter existe déjà
}
public void supprimeVoiture(Voiture v) throws VoitureException{
// à compléter en tenant compte de l’exception qui affiche un message lorsque la voiture à
//supprimer n’existe pas
}
public Iterator<Voiture> iterateur(){
return voitures.iterator();
}
public int size(){
return voitures.size();
}
public void affiche(){
// à completer
}
}
On définit l’exception VoitureException comme suit :

public class VoitureException extends Exception {

public VoitureException(String msg) {


System.err.println(msg);
}
}

Cette agence offre à ces clients la possibilité de choisir les voitures à louer en fonction de
différents critères. Il est possible de sélectionner dans la liste des voitures à louer toutes les
voitures satisfaisant un critère donné. On définit l’interface Critère ainsi :

public interface Critere {


boolean estSatisfaitPar(Voiture v);
}

Q4. Compléter la classe CritereMarque (Choix selon la marque) ? (0.5 point)

public class CritereMarque implements Critere {


private String marque;
public CritereMarque(String marque) {
this.marque = marque;
}
public boolean estSatisfaitPar(Voiture v) {
// à compléter
}
}
Q5. Compléter la classe CriterePrix (Choix selon le prix) ? (0.5 point)

public class CriterePrix implements Critere {


private float prix;
public CriterePrix(float prix) {
this.prix = prix;
}
public boolean estSatisfaitPar(Voiture v) {
//à Compléter
}
}

Une agence est caractérisée par un nom, un parking de type ListVoiture qui permet
d'enregistrer les voitures de l'agence de location et un ClientVoitureLoue de type Map (la
partie clé est Client, la partie valeur est ListVoitures) qui permet d'enregistrer pour chaque
client la liste des voitures actuellement louées.

Q6. Compléter la déclaration de la classe Agence ? (2 points)


public class Agence {
// Déclaration des attributs à compéter

public Agence(String nom) {


// Constructeur à compléter
}

Exercice 2 : (6 points)

Examinez attentivement le code Java suivant. Certaines lignes provoquent une erreur.
1. class A
2. {
3. protected void affiche() {
4. System.out.println(this) ;
5. }
6. public void a() {
7. System.out.print("a de A dans ");
8. affiche();
9. }
10. public void b() {
11. System.out.print("b de A dans ");
12. affiche() ;
13. }
14. }
15. class B extends A
16. {
17. public void b() {
18. super();
19. System.out.print("b de B dans ") ;
20. affiche();
21. }
22. public void c() {
23. super.c();
24. System.out.print("c de B dans ") ;
25. affiche();
26. }
27. }
28. public class Exercice
29. {
30. public static void main(String[] args) {
31. A a1 = new A();
32. A b1 = new B();
33. B a2 = new A();
34. B b2 = new B();
35. a1.a();
36. b1.a();
37. a2.a();
38. b2.a();
39. a1.b();
40. b1.b();
41. a2.b();
42. b2.b();
43. a1.c();
44. b1.c();
45. a2.c();
46. b2.c();
47. ((B) a1).c();
48. ((B) b1).c();
49. ((B) a2).c();
50. ((B) b2).c();
51. }
52. }

Six erreurs ont été détectées dans ce programme. Donnez une explication pour chaque
erreur en indiquant si l'erreur se produit à l'exécution ou à la compilation

Ligne 18 : erreur à ………….


Explication : …..

Ligne 23 : erreur à …………..


Explication : ……………

Ligne 33 : erreur à …………..


Explication : ………………….

Ligne 43 : erreur à …………..


Explication : …………………
Ligne 44 : erreur à ………….
Explication : ……………………..

Ligne 47 : erreur à ………….


Explication : …………………………………

Bon travail

Vous aimerez peut-être aussi