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
Voici une implémentation possible des classes selon les instructions données:
// Classe abstraite Employe abstract class Employe { private String prenom; private String nom; public Employe(String prenom, String nom) { this.prenom = prenom; this.nom = nom; } public String getPrenom() { return prenom; } public String getNom() { return nom; } @Override public String toString() { return "Nom: " + nom + ", Prénom: " + prenom; } public abstract double gains(); } // Classe Patron final class Patron extends Employe { private double salaireHebdo; public Patron(String prenom, String nom, double salaireHebdo) { super(prenom, nom); setSalaireHebdo(salaireHebdo); } public void setSalaireHebdo(double salaireHebdo) { this.salaireHebdo = salaireHebdo; } @Override public double gains() { return salaireHebdo; } @Override public String toString() { return super.toString() + ", Statut: Patron, Salaire hebdomadaire: " + salaireHebdo; } } // Classe TravailleurCommission final class TravailleurCommission extends Employe { private double salaire; private double commission; private int quantite; public TravailleurCommission(String prenom, String nom, double salaire, double commission, int quantite) { super(prenom, nom); setSalaire(salaire); setCommission(commission); setQuantite(quantite); } public void setCommission(double commission) { this.commission = commission; } public void setQuantite(int quantite) { this.quantite = quantite; } public void setSalaire(double salaire) { this.salaire = salaire; } @Override public double gains() { return salaire + (commission * quantite); } @Override public String toString() { return super.toString() + ", Statut: Travailleur à la commission, Salaire de base: " + salaire + ", Commission: " + commission + ", Quantité: " + quantite; } } // Classe TravailleurPiece final class TravailleurPiece extends Employe { private double retributionParPiece; private int quantite; public TravailleurPiece(String prenom, String nom, double retributionParPiece, int quantite) { super(prenom, nom); setRetribution(retributionParPiece); setQuantite(quantite); } public void setRetribution(double retributionParPiece) { this.retributionParPiece = retributionParPiece; } public void setQuantite(int quantite) { this.quantite = quantite; } @Override public double gains() { return retributionParPiece * quantite; } @Override public String toString() { return super.toString() + ", Statut: Travailleur à la pièce, Rémunération par pièce: " + retributionParPiece + ", Quantité: " + quantite; } } // Classe de test TestEmploye public class TestEmploye { public static void main(String[] args) { Employe patron = new Patron("John", "Doe", 800.0); Employe travailleurCommission = new TravailleurCommission("Jane", "Roe", 400.0, 2.5, 150); Employe travailleurPiece = new TravailleurPiece("Jim", "Beam", 5.5, 200); Employe[] employes = { patron, travailleurCommission, travailleurPiece }; for (Employe e : employes) { System.out.println(e.toString()); System.out.println("Gains: " + e.gains()); System.out.println(); } } }
Dans ce code, nous avons respecté les directives données:
Employe
est abstraite avec un constructeur initialisant les variables privées prenom
et nom
, et une méthode abstraite gains()
.Patron
, TravailleurCommission
et TravailleurPiece
) sont toutes finales et implémentent les méthodes gains()
et toString()
.Employe
a été créé et contient des instances des trois types d'employés. En itérant dessus, nous pouvons const