Vous êtes sur la page 1sur 3

Faculté des sciences économiques et AU : 2021/2022

de gestion de Sfax

Enseignants : N. Zaaboub Haddar,


M. Ben Abdallah,
I. Elleuch
Filière : LFI 2
Matière : Programmation OO Avancée
Examen Final de Programmation
Orientée Objets II

Durée : 1h30
Nombre de pages : 3
Documents autorisés.

Exercice :

On vous demande d’écrire un programme Java qui gère les pannes et les
réparations des machines d’une usine, et calcule des indicateurs de
performance de ces machines. Toutes les machines fonctionnent 7 jours par
semaine et 12 heures par jour.

Le programme doit être composé de deux paquetages : entites et gestionnaires.


Le paquetage entités contient deux classes : Machine et Panne (voir Figure 1).

Une machine a un code, une date d’achat (dateAchat). On précise également la


date et l’heure de début de son exploitation (debutExploitation) et la liste des
pannes qui l’ont affecté. Une panne a comme propriété la date de son occurence
(datePanne), une description, la date de debut de réparation (debutReparation)
et la date de fin de réparation (finReparation).

Figure 1. Classes du paquetage entites.

1
Par ailleurs, le paquetage gestionnaires possède deux classes :
DatePanneInvalide qui est une classe d’exception et GestionMaintenance (voir
Figure 2). Cette dernière contient des méthodes suivantes :

Figure 2. Classes du paquetage gestionnaires.

• boolean ajouterPanne(Machine m, Panne p) : elle prend comme


argument une machine m et une panne p et ajoute p à la liste des pannes
de m. De plus, elle trie la liste selon l’ordre croissant des dates de pannes.
Cette méthode n’ajoute pas p et lance une exception de type
DatePanneInvalide si la date de la panne p est inférieure à la date de mise
en exploitation de m. Elle renvoie true si l’ajout s’effectue avec succès, et
false autrement.

• int nbreReparations(Machine m) : Elle renvoie le nombre de pannes


réparées de la machine m.

• long tfapp(Machine m) : elle reçoit comme argument une machine m et


calcule la durée de fonctionnement de cette machine, depuis sa mise en
exploitation jusqu’avant la première panne. Cette durée doit être
exprimée en nombre d’heures. Si m n’a pas de pannes, alors la méthode
renvoie sa durée de fonctionnement jusqu’à l’heure actuelle.

Travail à faire :
1. Lancez Eclipse et créez un nouveau projet dont le nom est composé de votre
matricule, nom et prénom (ex. 011111_Foulen_Ben_Foulen).
2. Définissez les deux paquetages entites et gestionnaires.
3. Ecrivez les classes Panne et Machine.
4. Ajoutez aux classes Panne et Machine tous les getters et setters.
5. Modifiez le setter de debutReparation de sorte qu’il lance une exception
de type IllegalArgumentException si la valeur à affecter à cet attribut est
inférieure à la date de la panne.
6. Ecrivez les classes DatePanneInvalide et GestionMaintenance .

2
7. Définissez dans la classe GestionMaintenance la méthode main(). Ajoutez
à cette méthode les instructions qui permettent de définir la machine m
suivante :
Code : 111
Date d’achat : 01/01/2020
Date de début d’exploitation : 02/01/2020 à 8h00
Pannes :
Date panne Debut réparation Fin réparation
20/03/2021 à 20/03/2021 à 20/03/2021 à
12h30 14h00 17h28
20/01/2019 à 20/01/2022 à 20/01/2022 à
9h30 10h00 17h00
28/03/2022 à null null
14h00

8. Ajoutez à main() les instructions permettant le calcul des indicateurs de


performance de m. Le programme doit afficher les résultats suivants :

La date 20/01/2019 n'est pas valide


Nombre de pannes de la machine 111 : 2
Nombre de réparations : 1
Nombre d'heures de fonctionnement avant première panne : 5316 heures

Bonne Chance

Vous aimerez peut-être aussi