5
31/03/2015 – Prof Christophe Lemaigre EXAMEN 4IPOO-1-A PROGRAMMATION ORIENTÉE-OBJET Un hôpital veut informatiser la gestion de son personnel. Vous allez donc programmer cela, en respectant les principes et conventions de l’orienté-objet en Java. Cela fera partie de la cote. Appliquez aussi les principes d’une bonne programmation en général, notamment choisir des noms de variable très clairs. N’utilisez pas d’accent (é, è, …) dans les noms de classes, variables, … Commencez par créer 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 créer petit à petit : PACKAGE PERSONNEL Créez un package dont le nom est « personnel ». EMPLOYE Un employé possède un prénom (String) et un nom (String), ainsi qu’un nombre d’années d’expérience (int). Un constructeur permet de créer un employé avec ces trois informations. Pour chaque employé, on peut calculer son nombre de jours de congés annuels grâce à une méthode dont le nom est « nombreDeJoursDeCongeParAn ». Le nombre de congé se calcule en faisant 20 + le nombre d’années d’expérience. Exemple : un employé qui a 5 ans d’expérience aura 20+5 jours de congé par an. Il y aura également une méthode « ajouterUneAnneDExperience », qui augmente de 1 le nombre d’années d’expérience de l’employé.

4IPOO-1-A_examen

Embed Size (px)

DESCRIPTION

pid

Citation preview

  • 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 lesEmployes=new ArrayList()

    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