Université IBN-ZOHR (UIZ)
Faculté des Sciences Agadir
Gestion entreprise de produits Toxiques
Le directeur d'une entreprise de produits Toxiques souhaite gérer les salaires et primes de ses employés au
moyen d'un programme Java. Un employé est caractérisé par son nom, son prénom, son âge et sa date
d'entrée en service dans l'entreprise.
Le calcul du salaire mensuel dépend du type de l'employé. On distingue les types d'employés suivants :
Ceux affectés aux activités commerciales. Deux sous classe à envisager :
o Ceux affectée à la Vente. Leur salaire mensuel est le 20 % du chiffre d'affaire qu'ils réalisent
mensuellement, plus 1000 Dirhams.
o Ceux affectés à la Représentation. Leur salaire mensuel est également le 20 % du chiffre
d'affaire qu'ils réalisent mensuellement, plus 2000 dirhams.
Ceux affectés à la Production. Leur salaire vaut le nombre d'unités produites mensuellement
multipliées par 5 avec une prime de risque.
Ceux affectés à la Manutention. Leur salaire vaut leur nombre d'heures de travail mensuel
multipliées par 90 dirhams.
1- Définissez la représentation UML des classes. La super-classe de la hiérarchie doit être la classe
Employe.
2- Définissez la classe Employe Cette dernière est dotée des attributs nécessaires, d'une méthode
calculerSalaire (ce calcul dépendra en effet du type de l'employé) et d'une méthode getNom retournant
une chaine de caractère obtenue en concaténant la chaine de caractères "L'employé " avec le prénom et
le nom.
Les nouvelles classes doivent contenir les attributs qui leur sont spécifiques ainsi que le codage
approprié des méthodes calculerSalaire et getNom, en changeant le mot "employé" par la catégorie
correspondante.
3- Définissez les classes Commercial, Représentation et Vente. Chaque sous classe est dotée de
constructeur avec argument l'ensemble des attributs nécessaires.
4- Définissez les classes Production et Manutention. Chaque sous classe est dotée de constructeur avec
argument l'ensemble des attributs nécessaires.
1 Page Atelier N°6
Université IBN-ZOHR (UIZ)
Faculté des Sciences Agadir
5- Satisfait de la hiérarchie proposée, notre directeur souhaite maintenant l'exploiter pour afficher le salaire
de tous ses employés ainsi que le salaire moyen en utilisant une classe Paie.
A- Créer des objets employés suivants dans la classe paie :
Vendeur ("Karim", "Business", 45, "1995", 30000);
Representant("Taha", "Vendeur", 25, "2001", 20000);
Technicien("Ahmed", "Bosseur", 28, "1998", 1000);
Manutentionnaire ("Jeanne", "maga", 32, "1998", 45);
B- Ajoutez collections de type vector. Il s'agira d'une collection polymorphique de type
Employe. Ajoutez à cette collection les Employées déjà crées dans la question 5-a;
C- Afficher le salaire de tous les employés ainsi que le salaire moyen.
2 Page Atelier N°6
Université IBN-ZOHR (UIZ)
Faculté des Sciences Agadir
Correction
/* **********************************************************************
* La classe Employe
* **********************************************************************/
abstract class Employe {
private String nom;
private String prenom;
private int age;
private String date;
public Employe(String prenom, String nom, int age, String date) {
[Link] = nom;
[Link] = prenom;
[Link] = age;
[Link] = date;
}
public abstract double calculerSalaire();
public String getTitre()
{ return "L'employé " ; }
public String getNom() {
return getTitre() + prenom + " " + nom;
}
}
/* **********************************************************************
* La classe Commercial (regroupe Vendeur et Représentant)
* **********************************************************************/
abstract class Commercial extends Employe {
private double chiffreAffaire;
public Commercial(String prenom, String nom, int age, String date, double chiffreAffaire)
{ super(prenom, nom, age, date);
[Link] = chiffreAffaire;
}
public double getChiffreAffaire()
{ return chiffreAffaire; }
3 Page Atelier N°6
Université IBN-ZOHR (UIZ)
Faculté des Sciences Agadir
/* **********************************************************************
* La classe Vendeur
* **********************************************************************/
class Vendeur extends Commercial {
private final static double POURCENT_VENDEUR = 0.2;
private final static int BONUS_VENDEUR = 400;
public Vendeur(String prenom, String nom, int age, String date, double chiffreAffaire) {
super(prenom, nom, age, date, chiffreAffaire);
}
public double calculerSalaire() {
return (POURCENT_VENDEUR * getChiffreAffaire()) + BONUS_VENDEUR;
}
public String getTitre()
{ return "Le vendeur "; }
/* **********************************************************************
* La classe Représentant
* **********************************************************************/
class Representant extends Commercial {
private final static double POURCENT_REPRESENTANT = 0.2;
private final static int BONUS_REPRESENTANT = 800;
public Representant(String prenom, String nom, int age, String date, double chiffreAffaire) {
super(prenom, nom, age, date, chiffreAffaire);
}
public double calculerSalaire() {
return (POURCENT_REPRESENTANT * getChiffreAffaire()) + BONUS_REPRESENTANT;
}
public String getTitre()
{ return "Le représentant "; }
}
4 Page Atelier N°6
Université IBN-ZOHR (UIZ)
Faculté des Sciences Agadir
/* **********************************************************************
* La classe Technicien (Production)
* **********************************************************************/
class Technicien extends Employe {
private final static double FACTEUR_UNITE = 5.0;
private int unites;
public Technicien(String prenom, String nom, int age, String date, int unites) {
super(prenom, nom, age, date);
[Link] = unites;
}
public double calculerSalaire() { return FACTEUR_UNITE * unites; }
public String getTitre()
{ return "Le technicien "; }
}
/* **********************************************************************
* La classe Manutentionnaire
* **********************************************************************/
class Manutentionnaire extends Employe {
private final static double SALAIRE_HORAIRE = 65.0;
private int heures;
public Manutentionnaire(String prenom, String nom, int age, String date, int heures) {
super(prenom, nom, age, date);
[Link] = heures; }
public double calculerSalaire() { return SALAIRE_HORAIRE * heures; }
public String getTitre() { return "Le manut. " ; }
}
/* **********************************************************************
* L'interface d'employés à risque
* **********************************************************************/
interface ARisque {
int PRIME = 200;
}
/* **********************************************************************
* Une première sous-classe d'employé à risque
* **********************************************************************/
5 Page Atelier N°6
Université IBN-ZOHR (UIZ)
Faculté des Sciences Agadir
class TechnARisque extends Technicien implements ARisque {
public TechnARisque(String prenom, String nom, int age, String date, int unites) {
super(prenom, nom, age, date, unites);
}
public double calculerSalaire() {
return [Link]() + PRIME; }
/* **********************************************************************
* Une autre sous-classe d'employé à risque
* **********************************************************************/
class ManutARisque extends Manutentionnaire implements ARisque {
public ManutARisque(String prenom, String nom, int age, String date, int heures) {
super(prenom, nom, age, date, heures); }
public double calculerSalaire() {
return [Link]() + PRIME; }
/* **********************************************************************
* La classe Personnel
* **********************************************************************/
class Personnel {
private Employe[] staff;
private int nbreEmploye;
private final static int MAXEMPLOYE = 200;
public Personnel() {
staff = new Employe[MAXEMPLOYE];
nbreEmploye = 0; }
public void ajouterEmploye(Employe e) {
++nbreEmploye;
if (nbreEmploye <= MAXEMPLOYE) {
staff[nbreEmploye - 1] = e;
} else { [Link]("Pas plus de " + MAXEMPLOYE + " employés"); }
}
6 Page Atelier N°6
Université IBN-ZOHR (UIZ)
Faculté des Sciences Agadir
public double salaireMoyen() {
double somme = 0.0;
for (int i = 0; i < nbreEmploye; i++) { somme += staff[i].calculerSalaire(); }
return somme / nbreEmploye;
}
public void afficherSalaires() {
for (int i = 0; i < nbreEmploye; i++) {
[Link](staff[i].getNom() + " gagne " + staff[i].calculerSalaire() + " francs."); }
}
}
//
================================================================
======
class Salaires {
public static void main(String[] args) {
Personnel p = new Personnel();
[Link](new Vendeur("Pierre", "Business", 45, "1995", 30000));
[Link](new Representant("Léon", "Vendtout", 25, "2001", 20000));
[Link](new Technicien("Yves", "Bosseur", 28, "1998", 1000));
[Link](new Manutentionnaire("Jeanne", "Stocketout", 32, "1998", 45));
[Link](new TechnARisque("Jean", "Flippe", 28, "2000", 1000));
[Link](new ManutARisque("Al", "Abordage", 30, "2001", 45));
[Link]();
[Link]("Le salaire moyen dans l'entreprise est de " + [Link]() + " francs.");
}
}
7 Page Atelier N°6