1
Correction Série : classes abstraites et interfaces
Exercice (Société)
salaireBrutIngenieur = salaireMensuel + prime
salaireBrutTechnicien = salaireMensuel + nbHeureSupp * prixHeureSupp
salaireBrutOuvrier = nbHeure * prixHeure
1
2
package societe;
public interface CalculSalaire {
float calculerSalaireBrut();
float calculerSalaireNet();
float calculerImpot();
void afficherDetails();
package societe;
public abstract class Employe implements CalculSalaire{
protected String matricule;
protected String nom;
protected String prenom;
protected float salaireBrut;
public String getMatricule() {
return matricule;
}
public String getNom() {
return nom;
}
public String getPrenom() {
return prenom;
}
public Employe(String matricule, String nom, String prenom)
{
[Link]=matricule;
[Link] = nom;
[Link] = prenom;
}
public void afficher() {
[Link]("Matricule : "+ matricule + "Nom: "
+ nom + ", Prénom: " + prenom );
}
class Ouvrier
public class Ouvrier extends Employe {
protected int nbHeure;
protected float prixHeure;
public Ouvrier(String matricule,String nom, String
prenom,int nbHeure,float prixHeure) {
super(matricule,nom, prenom);
[Link]=nbHeure;
2
3
[Link]=prixHeure;
}
public void setNbHeure(int nbHeure) {
[Link] = nbHeure;
}
@Override
public float calculerSalaireBrut() {
return nbHeure * prixHeure;
}
@Override
public float calculerSalaireNet() {
return (float) (salaireBrut * 0.8);
}
@Override
public float calculerImpot() {
return (float) (salaireBrut * 0.1);
}
public void afficherDetails(){
[Link]();
[Link]("nombre d'heures est " + nbHeure +
"prix de lehure est " + prixHeure);
}
}
class Technicien
class Technicien extends Employe {
protected float salaireMensuel;
protected float prixHeureSupp;
protected int nbHeureSupp;
protected String specialite;
public Technicien(String matricule,String nom, String
prenom,float salaireMensuel,float prixHeureSupp,int
nbHeureSupp,String specialite ) {
super(matricule,nom, prenom);
[Link]=salaireMensuel;
[Link]=prixHeureSupp;
[Link]=nbHeureSupp;
[Link]=specialite;
}
public void setNbHeureSupp(int nbHeureSupp) {
[Link] = nbHeureSupp;
}
3
4
@Override
public float calculerSalaireBrut() {
salaireBrut = salaireMensuel + nbHeureSupp *
prixHeureSupp;
return salaireBrut;
}
@Override
public float calculerSalaireNet() {
return salaireBrut * 0.82f;
}
@Override
public float calculerImpot() {
return salaireBrut * 0.15f;
}
@Override
public void afficherDetails() {
[Link]();
[Link]("salaire mensuel" +
salaireMensuel);
}
class Ingenieur
public class Ingenieur extends Employe {
private float prime;
private float salaireMensuel;
private String specialite;
public Ingenieur(String matricule,String nom, String
prenom,float prime,float salaireMensuel,String specialite) {
super(matricule,nom, prenom);
[Link]=prime;
[Link]=salaireMensuel;
[Link]=specialite;
public void setPrime(float prime) {
[Link] = prime;
}
@Override
public float calculerSalaireBrut() {
salaireBrut = salaireMensuel + prime;
return salaireBrut;
4
5
@Override
public float calculerSalaireNet() {
return salaireBrut * 0.85f;
}
@Override
public float calculerImpot() {
return salaireBrut * 0.18f;
}
public void afficherDetails() {
[Link]();
[Link]("SalaireMensuel :" +
salaireMensuel);
[Link]("Prime :" + prime);
[Link]("Specialite :" + specialite);
}
}
Programme Principale
import [Link];
import [Link];
public class Gestemploye {
public static void main(String[] args) {
// Création de la liste d'employés
ArrayList<Employe> listeEmployes = new
ArrayList<>();
// Ajout d'employés
[Link](new
Ingenieur("1882585","John", "Doe", 450,
2200,"Informatique"));
[Link](new
Technicien("1452545555","Jane", "Smith", 1200,
14, 25,"genie mecanique"));
[Link](new
Ouvrier("78744444","Bob", "Johnson", 164, 8));
5
6
// Calcul et affichage des salaires
initiaux
calculerSalaires(listeEmployes);
// Affichage initial
afficherListeEmployes(listeEmployes);
// Modification de l'employé
modifierEmploye(listeEmployes, "John",
"Doe");
[Link]("aprés
modification");
afficherListeEmployes(listeEmployes);
// Suppression d'un employé
supprimerEmploye(listeEmployes, "Jane",
"Smith");
[Link]("Affichage après
suppression de lemploye Jane");
afficherListeEmployes(listeEmployes);
}
// Méthode pour afficher la liste des
employés
private static void
afficherListeEmployes(ArrayList<Employe>
listeEmployes) {
[Link]("Liste des employés
:");
for (Employe employe : listeEmployes) {
[Link]();
}
[Link]("-------------------
-----------");
}
6
7
// Méthode pour calculer les salaires pour
chaque employé
private static void
calculerSalaires(ArrayList<Employe>
listeEmployes) {
for (Employe employe : listeEmployes) {
[Link]();
[Link]("Salaire Brut :"
+ [Link]());
[Link]("Salaire Net :"
+ [Link]());
[Link]("Impot imposable
:" + [Link]());
}
}
// Méthode pour modifier un employé
private static void
modifierEmploye(ArrayList<Employe>
listeEmployes, String nom, String prenom) {
Iterator<Employe> iterator =
[Link]();
while ([Link]()) {
Employe employe = [Link]();
if ([Link]().equals(nom) &&
[Link]().equals(prenom)) {
// Modification spécifique à
votre logique d'application
if (employe instanceof
Ingenieur) {
((Ingenieur)
employe).setPrime(300);
} else if (employe instanceof
Technicien) {
((Technicien)
employe).setNbHeureSupp(50);
} else if (employe instanceof
Ouvrier) {
7
8
((Ouvrier)
employe).setNbHeure(185);
}
}
}
}
// Méthode pour supprimer un employé
private static void
supprimerEmploye(ArrayList<Employe>
listeEmployes, String nom, String prenom) {
Iterator<Employe> iterator =
[Link]();
while ([Link]()) {
Employe employe = [Link]();
if ([Link]().equals(nom) &&
[Link]().equals(prenom)) {
[Link](); //
Utilisation de l'itérateur pour supprimer en
toute sécurité
}
}
}