Vous êtes sur la page 1sur 4

Matière: POO2

Filière : L2SIL
Enseignant : Ben Rkaya Moez

TP n03 : héritage & polymorphisme


Hiérarchie Personne / Utilisateur

Le directeur des systèmes d’information de la société TOUBKAL-IT souhaite


développer un module pour la gestion des utilisateurs de son service informatique,
pour cela il vous a fait appel pour réaliser cette tâche.
Le diagramme de classe a été établi par un analyste afin de mettre en place une
base de données sous MySQL.

1. Développer les classes ci-dessus en JAVA dans un package de votre choix.


NB : l’identifiant est auto incrément.
2. Redéfinir la méthode calculerSalaire() et la méthode affiche() dans la classe
Utilisateur, sachant que :
 Le manager aura une augmentation de 10% par rapport à son salaire
normal
 Le directeur général aura une augmentation de 40% par rapport à son
salaire normal
3. Créer les profils :
 Chef de projet (CP),
 Manager (MN),
 Directeur de projet (DP),
 Directeur des ressources humaines (DRH),

Page 1|4
Matière: POO2
Filière : L2SIL
Enseignant : Ben Rkaya Moez
 Directeur général (DG),
 Employé (EM)
4. Créer 3 utilisateurs avec différents profils.
5. Afficher la liste des utilisateurs.
6. Filtrer la liste et afficher la liste des managers.

Correction
Class profil
package com.serie3;
public class Profil {
private int id;
private String libelle,code;
private static int cpt;
Profil(String code,String libelle){ Commenté [m1]: Constructeur de la classe Profil
this.code=code;
this.libelle=libelle;
this.id= ++cpt;
} Commenté [m2]: Id est auto-incrément
public String getLibelle() {
return libelle; Commenté [m3]: On ne liste que les guetteurs essentiels
}
}

Class Personne
package com.serie3;
public class Personne {
protected int id;
protected String nom,prenom;
protected double salaire;
private static int cpt;
public Personne(String nom,String prenom,double salaire){ Commenté [m4]: Constructeur de la classe
this.id= ++cpt; Personne

this.nom= nom;
this.prenom= prenom;
this.salaire = salaire;
}
double calculerSalaire(){
return salaire;
}
void affiche(){

Page 2|4
Matière: POO2
Filière : L2SIL
Enseignant : Ben Rkaya Moez
System.out.print("Je suis "+nom+" "+prenom);
}
}

Class Utilisateur
package com.serie3;
public class Utilisateur extends Personne{
private String service;
private Profil profil;
public Utilisateur(String nom,String prenom,double salaire,String service,Profil profil){ Commenté [m5]: Constructeur de la classe
super(nom,prenom,salaire); Utilisateur

this.service=service;
this.profil=profil;
}
Profil getProfil(){
return profil;
}
@Override Commenté [m6]: Redéfinition de la méthode
public double calculerSalaire() { calculerSalaire

if (this.profil.getLibelle()=="Manager")
return 1.1 * this.salaire;
else if (this.profil.getLibelle()=="Directeur général")
return 1.4 * this.salaire;
return super.calculerSalaire();
}
@Override Commenté [m7]: Redéfinition de la méthode
public void affiche() { affiche

super.affiche();
System.out.println(" le " +profil.getLibelle()
+ " mon salaire est : " + this.calculerSalaire());
}

Class Test
package com.serie3;
public class Test {
public static void main(String[]args){
Profil profils[] = new Profil[6]; Commenté [m8]: Création des profils
profils[0] = new Profil("CP","Chef de projet");
profils[1] = new Profil("MN","Manager");
profils[2] = new Profil("DP","Directeur de projet");
profils[3] = new Profil("DRH","Directeur des ressources humaines");
profils[4] = new Profil("DG","Directeur général");
profils[5] = new Profil("EM", "Employé"); Commenté [m9]: Création des utilisateurs avec les
différents profils
Utilisateur users[] = new Utilisateur[4];
Page 3|4
Matière: POO2
Filière : L2SIL
Enseignant : Ben Rkaya Moez
users[0] = new Utilisateur("xx","yy",1500,"Informatique",profils[1]);
users[1] = new Utilisateur("xx","yy",1400,"Finance",profils[1]);
users[2] = new Utilisateur("xx","yy",3000,"Informatique",profils[4]);
users[3] = new Utilisateur("xx","yy",2500,"Ressources humaines",profils[3]);
System.out.println("La liste des utilisateurs : "); Commenté [m10]: Afficher tous les utilisateurs
for (Utilisateur u : users) {
u.affiche();
}
System.out.println("Liste des managers : "); Commenté [m11]: Filtrer la liste des managers
for (Utilisateur u : users) {
if (u.getProfil().getLibelle()=="Manager")
u.affiche();
}
}
}

Page 4|4

Vous aimerez peut-être aussi