Deux données membre privées "prenom" et "nom". Un constructeur à deux paramètres pour initialiser "prenom" et "nom". Deux méthodes "getprenom()" et getnom(). Une méthode toString(). Une méthode abstraite "gains()".
Créer un tableau dont les éléments sont de types "Employe", mettre les trois employés dans ce tableau et appeler les méthodes "toString(" et "gains()" à partir des éléments de ce tableau. Que remarque-t-on ? Bon Travail
Pour réaliser l'application de paie demandée, il faut définir les classes selon les directives fournies. Voici exemple d'implémentation en Java :
Classe Employe
:
public abstract class Employe { String prenom; private String nom; public Employe(String prenom, nom) { this.prenom = prenom; this.nom = nom; } public String getprenom() { return prenom; public String getnom() { return nom; } @Override public String toString() { return String.format("L'employé %s %s", pre, nom); } public abstract double gains(); }
Classe Patron
:
public final class extends Employe { private double salaireHebdo; public Patron(String prenom, String nom, double salaire) { super(prenom, nom); setSalaireHebdo(sala); } public void setSalaireHebdo(double salaireHebdo) { this.sireHebdo = salaireHebdo; @Override public double gains() { return salaireHebdo; } @Override public String toString() { return String.format("Le patron %s %s", getprenom(), getnom()); } }
Cl TravailleurCommission
:
public final class TravailleurCommission extends Employe { private double salaire; // Salaire base private double commission; private int quantite; public TravailleurCommission(String prenom, String nom, double salaire, double commission, quantite) { super(prenom, nom); setSalaire(salaire); setCommission(commission); setQuantite(quantite); } public void setSalaire(double salaire) { this.salaire = salaire; } public void set(double commission) { this.commission = commission; } public void setQuantite(int quantite) { this.quantite = quantite; } @Override public double gains() { return salaire + (commission * quantite); } @Override public String toString() { return String.format("Le travailleur à la commission %s %s", getprenom(), getnom()); } }
Classe TravailleurPiece
:
public final class TravailleurPiece Employe { private double retributionParPiece; private int quantite; public Travailleur(String prenom, String nom, double retributionParPiece, int quantite) { superrenom, nom); setRetribution(retributionParPiece); setQuantite(quantite); } public void setRetrib(double retributionParPiece) { this.retributionParPiece = retributionParPiece; public void setQuantite(int quantite) { .quantite = quantite; } @Override public double gains() { return retributionParPiece * quantite; } @Override public String toString() { return String.format("Le travailleur à la pièce %s %s", getprenom(),nom()); } }
Classe TestEmploy
:
public class TestEmploye { public static void main(String[] args) { Patron patron = new Patron("Jean", "Dupont", 1000.0); TravleurCommission travailleurCommission = new TravailleurCommission("Marie", "Curie", 400.0, 30., 50); TravailleurPiece travailleurPiece new TravailleurPiece("Henri", "Poincaré", 5.0, 300); Employe[] employes = new Employe[] { patron, travailleur, travailleurPiece }; for (Employe employe employes) { System.out.println(employe.toString() + " a un de " + employe.gains()); } }
À la fin du programme TestEmploye
, remarque que bien que chaque objet soit instancié à partir d'une classe différente, leorphisme nous permet de traiter ces objets de man générale via une référence de la superclasse Employe En utilisant les méthodes
toString()et
gains()` définies (et évent surchargées) dans chaque classe, on peut obtenir les informations pertinentes pour chaque type d'employé sans avoir besoin de savoir de quel type spécifique