Sie sind auf Seite 1von 5

31/03/2015 Prof Christophe Lemaigre

EXAMEN 4IPOO-1-A PROGRAMMATION ORIENTE-OBJET


Un hpital veut informatiser la gestion de son personnel. Vous allez donc programmer cela, en respectant les
principes et conventions de lorient-objet en Java. Cela fera partie de la cote.
Appliquez aussi les principes dune bonne programmation en gnral, notamment choisir des noms de variable
trs clairs. Nutilisez pas daccent (, , ) dans les noms de classes, variables,
Commencez par crer un projet Eclipse dont le nom est IPOO_examen_NOM.
Par exemple, IPOO_examen_KOMPANY, si vous vous appelez Kompany. Le nom du projet doit tre exactement
celui qui est demand, sinon vous perdrez des points.
Voici la structure que vous allez crer petit petit :

PACKAGE PERSONNEL
Crez un package dont le nom est personnel .

EMPLOYE
Un employ possde un prnom (String) et un nom (String), ainsi quun nombre dannes dexprience (int).
Un constructeur permet de crer un employ avec ces trois informations.
Pour chaque employ, on peut calculer son nombre de jours de congs annuels grce une mthode dont le
nom est nombreDeJoursDeCongeParAn . Le nombre de cong se calcule en faisant 20 + le nombre dannes
dexprience. Exemple : un employ qui a 5 ans dexprience aura 20+5 jours de cong par an.
Il y aura galement une mthode ajouterUneAnneDExperience , qui augmente de 1 le nombre dannes
dexprience de lemploy.

31/03/2015 Prof Christophe Lemaigre


Vous programmerez la mthode toString , qui affichera linformation exactement de cette faon :
[Employ(e) depuis x ans] nom, prenom
Par exemple :
[Employ(e) depuis 20 ans] House, Gregory
On pourra comparer deux employs grce la mthode equals , que vous devrez complter :
public boolean equals(Object autreObjet){
if (autreObjet instanceof Employe) {
Employe autreEmploye=(Employe) autreObjet ;
//
}
//
}
Cette mthode renverra true si le nom et le prnom sont gaux. Et false dans les autres cas. Rappel : pour
comparer deux objets String, on ne peut pas utiliser ==, il faut utiliser la mthode equals de lobjet String.
Une mthode calculerSalaire servira savoir quel est le salaire mensuel dun employ. La faon de calculer
le salaire sera explique par aprs.
Il ny aura aucune autre mthode.
Un seul attribut pourra tre en protected , dans tout lexamen. Pas de protected partout !

MEDECIN
Un(e) mdecin est un employ.
Tous les mdecins ont le mme salaire de base (double) : 3000 . Ce salaire de base doit tre dans une variable.
Chaque mdecin a un prnom (String), un nom (String), un nombre dannes dexprience (int), et sa spcialit
(String). Un exemple de spcialit : la chirurgie. Autre exemple : le diagnostique.
Le premier constructeur du mdecin reoit un prnom, un nom, le nombre dannes dexprience, et la
spcialit du mdecin.
Un second constructeur va recevoir un prnom, un nom et la spcialit. Ce constructeur devra appeler le
premier constructeur avec 0 annes dexprience.
La mthode calculerSalaire va effectuer le calcul suivant : (salaire de base + annes dexprience * 50)
Exemple : un docteur avec 20 ans dexprience aura (3000+(20*50))=4000 par mois.
Le toString dun mdecin affichera un mdecin exactement de la faon suivante :
[Employ(e) depuis x ans] nom, prenom : mdecin en y
Par exemple :
[Employ(e) depuis 20 ans] House, Gregory : mdecin en diagnostique
Vous remarquerez que le dbut est identique au toString de Employe.

31/03/2015 Prof Christophe Lemaigre

INFIRMIERE
Une infirmire est une employe.
Toutes les infirmires ont le mme salaire de base (double) : 2300 . Ce salaire de base doit tre dans une
variable.
Chaque infirmire a un prnom (String), un nom (String) et un nombre dannes dexprience (int).
Le constructeur reoit un prnom et un nom. Le nombre dannes dexprience est de 0 lorsquun objet
Infirmiere est cr.
La mthode calculerSalaire permet de connatre le salaire de chaque infirmire, sur base du calcul suivant :
(salaire de base + 11 * annes dexprience).
Exemple : une infirmire avec 2 ans dexprience aura (2300+(11*2))=2322 par mois
La mthode toString donnera exactement le rsultat suivant :
[Employ(e) depuis x ans] nom, prenom : infirmire
Par exemple :
[Employ(e) depuis 2 ans] Dupont, Mathilde : infirmire
Vous remarquerez que le dbut est identique au toString de Employe.

PACKAGE DEPARTEMENTS
Un dpartement est une partie de lhpital, qui contient un ensemble demploys.

DEPARTEMENT
Crez une interface Departement.
Cette interface aura trois mthodes. Le fonctionnement de ces mthodes est expliqu ici, mais il sagit bien sr
du fonctionnement de leur implmentation.
La premire mthode est ajouterEmploye . Elle reoit un objet de type Employe en paramtre. Elle renvoie
un boolen.
Fonctionnement : Si lemploy nest pas encore dans la liste, et quon a pu lajouter, la mthode renvoie true.
Sinon elle renvoie false.
La seconde mthode est calculerTotalDesSalaires . Elle renvoie un double qui correspond la somme des
salaires mensuels des employs.
Une dernire mthode sera toString .
Fonctionnement : il affichera Dpartement nom : , puis la liste des employs en ajoutant leur salaire, puis le
total des salaires du dpartement. Rappel : pour passer la ligne, on crit \r\n .

31/03/2015 Prof Christophe Lemaigre


Par exemple :
Dpartement radiologie :
-> [Employ(e) depuis 2 ans] Dupont, Mathilde : infirmire dont le salaire
est 2322.0
-> [Employ(e) depuis 20 ans] House, Gregory : mdecin en diagnostique dont
le salaire est 4000.0
Total des salaires de ce dpartement : 6322.0

CHOIX
Vous devez raliser une implmentation de Departement : DepartementAvecArrayList.java ou
DepartementAvecTableau.java, choisissez en une des deux. Ce fichier fera partie du package departements .

DEPARTEMENT AVEC ARRAYLIST


DepartementAvecArrayList.java
Cette classe va implmenter linterface Departement grce une ArrayList.
Elle utilisera lArrayList suivante pour stocker ses employs (rappel) :
ArrayList<Employe> lesEmployes=new ArrayList<Employe>()
Un DpartementAvecArrayList aura un nom (String), et un constructeur qui recevra ce nom.
Noubliez pas de programmer la mthode toString .
Attention, pour vrifier si un employ est dj dans lArrayList, le mieux est dutiliser la mthode equals plutt
que ==.

DEPARTEMENT AVEC TABLEAU


DepartementAvecTableau.java
Cette classe va elle aussi implmenter linterface Departement, mais dune autre faon : en utilisant un tableau
(array en anglais).
Pour instancier un tableau de 10 places (rappel) :
Employe[] lesEmployes = new Employe[10] ;
Un DpartementAvecTableau aura un nom (String), et un constructeur qui recevra ce nom.
Attention, pour vrifier si un employ est dj dans le tableau, le mieux est dutiliser la mthode equals plutt
que ==.
Noubliez pas de programmer la mthode toString .

31/03/2015 Prof Christophe Lemaigre

PACKAGE TESTS

TESTDEPARTEMENT
TestDepartement.java
Vous devez crire une classe de test intressante et complte, et donc tester chaque mthode que vous avez
programme. Ne supprimez pas vos tests aprs les avoir fait, ils doivent tre visibles pour la correction.
Testez limplmentation de Departement que vous avez choisie (ArrayList ou tableau).
NB : si votre mthode equals est bien programme, vous ne devez pas pouvoir ajouter dans un dpartement
deux personnes avec le mme nom et prnom.

JAVADOC
Ecrivez la Documentation Javadoc de Employe.java uniquement. Puis gnrez la Javadoc.
Pour les mthodes, il faut uniquement donner les informations suivantes : dire quoi sert la mthode,
expliquer les paramtres reus, et expliquer ce qui est retourn.

FIN
Pour envoyer votre projet, respectez exactement les consignes (sous peine de perdre des points) :
1. Cliquer (1x) sur le nom du projet (exemple : IPOO_examen_KOMPANY)
2. File / Export / General / Archive File /
3. Donner exactement le mme nom que votre projet votre fichier .zip (exemple :
IPOO_examen_KOMPANY.zip)
4. Envoyer le travail sur Claroline et demander au prof de vrifier que lenvoi est OK

Das könnte Ihnen auch gefallen