From e3f46e14d7a1dc894943370a0436b2caea4dd89a Mon Sep 17 00:00:00 2001 From: Ismail TEBIB Date: Tue, 30 Nov 2021 10:14:39 +0100 Subject: [PATCH 1/2] TP --- pom.xml | 4 +- .../ipiecoles/java/java220/Commercial.java | 79 +++++++++++++ .../com/ipiecoles/java/java220/Employe.java | 104 +++++++++++++++++- .../ipiecoles/java/java220/Entreprise.java | 15 +++ .../com/ipiecoles/java/java220/Manager.java | 60 ++++++++++ .../ipiecoles/java/java220/Technicien.java | 51 +++++++++ .../java/java220/EntrepriseTest.java | 2 +- 7 files changed, 311 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/ipiecoles/java/java220/Commercial.java create mode 100644 src/main/java/com/ipiecoles/java/java220/Entreprise.java create mode 100644 src/main/java/com/ipiecoles/java/java220/Manager.java create mode 100644 src/main/java/com/ipiecoles/java/java220/Technicien.java diff --git a/pom.xml b/pom.xml index f68bdb83..e50b90fe 100644 --- a/pom.xml +++ b/pom.xml @@ -11,8 +11,8 @@ org.apache.maven.plugins maven-compiler-plugin - 16 - 16 + 15 + 15 diff --git a/src/main/java/com/ipiecoles/java/java220/Commercial.java b/src/main/java/com/ipiecoles/java/java220/Commercial.java new file mode 100644 index 00000000..0e6c6aff --- /dev/null +++ b/src/main/java/com/ipiecoles/java/java220/Commercial.java @@ -0,0 +1,79 @@ +package com.ipiecoles.java.java220; + +import org.joda.time.LocalDate; + +import java.util.Objects; + +public class Commercial extends Employe{ + private Double caAnnuel; + private Integer performance; + + public Commercial(){ + + } + + public Commercial(String nom, String prenom, String matricule, + LocalDate dateEmbauche, Double salaire, Double caAnnuel) { + super(nom, prenom, matricule, dateEmbauche, salaire); + this.caAnnuel = caAnnuel; + } + + public Commercial(String nom, String prenom, String matricule, LocalDate dateEmbauche, Double salaire, Double caAnnuel, Integer performance) { + this(nom, prenom, matricule, dateEmbauche, salaire, caAnnuel); + this.performance = performance; + } + + @Override + public Double getPrimeAnnuelle() { + if (this.caAnnuel == null){ + return 500d; + } + return Math.max(Math.ceil(this.getCaAnnuel() * 0.05), 500d); + } + + public boolean performanceEgale(Integer performance){ + if (this.performance.equals(performance)){ + return true; + } + else + return false; + } + + public Double getCaAnnuel() { + return caAnnuel; + } + + public void setCaAnnuel(Double caAnnuel) { + this.caAnnuel = caAnnuel; + } + + public Integer getPerformance() { + return performance; + } + + public void setPerformance(Integer performance) { + this.performance = performance; + } + + @Override + public String toString() { + return "Commercial{" + + "caAnnuel=" + caAnnuel + + ", performance=" + performance + + '}'; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + if (!super.equals(o)) return false; + Commercial that = (Commercial) o; + return Objects.equals(caAnnuel, that.caAnnuel) && Objects.equals(performance, that.performance); + } + + @Override + public int hashCode() { + return Objects.hash(super.hashCode(), caAnnuel, performance); + } +} diff --git a/src/main/java/com/ipiecoles/java/java220/Employe.java b/src/main/java/com/ipiecoles/java/java220/Employe.java index c217a6f4..0df594e5 100644 --- a/src/main/java/com/ipiecoles/java/java220/Employe.java +++ b/src/main/java/com/ipiecoles/java/java220/Employe.java @@ -1,7 +1,109 @@ package com.ipiecoles.java.java220; +import org.joda.time.LocalDate; + +import java.util.Objects; + /** * Created by pjvilloud on 21/09/17. */ -public class Employe { +public abstract class Employe { + private String nom; + private String prenom; + private String matricule; + private LocalDate dateEmbauche; + private Double salaire; + + public Employe() { + } + + public Employe(String nom, String prenom, String matricule, + LocalDate dateEmbauche, Double salaire) { + this.nom = nom; + this.prenom = prenom; + this.matricule = matricule; + this.dateEmbauche = dateEmbauche; + this.salaire = salaire; + } + + public final Integer getNombreAnneeAnciennete (){ + return LocalDate.now().getYear()- dateEmbauche.getYear(); + } + + public Integer getNbConges(){ + return Entreprise.NB_CONGES_BASE; + } + + public void augmenterSalaire(Double pourcentage){ + this.salaire = this.getSalaire() * (1 + pourcentage); + } + + public abstract Double getPrimeAnnuelle(); + + public String getNom() { + return nom; + } + + public void setNom(String nom) { + this.nom = nom; + } + + public String getPrenom() { + return prenom; + } + + public void setPrenom(String prenom) { + this.prenom = prenom; + } + + public String getMatricule() { + return matricule; + } + + public void setMatricule(String matricule) { + this.matricule = matricule; + } + + public LocalDate getDateEmbauche() { + return dateEmbauche; + } + + public void setDateEmbauche(LocalDate dateEmbauche) throws Exception { + if (dateEmbauche.isAfter(LocalDate.now())){ + throw new Exception("La date d'embauche ne peut être postérieure à la date courante"); + } + this.dateEmbauche = dateEmbauche; + } + + public Double getSalaire() { + return salaire; + } + + public void setSalaire(Double salaire) { + this.salaire = salaire; + } + @Override + public String toString() { + final StringBuilder sb = new StringBuilder("Employe{"); + sb.append("nom='").append(nom).append('\''); + sb.append(", prenom='").append(prenom).append('\''); + sb.append(", matricule='").append(matricule).append('\''); + sb.append(", dateEmbauche=").append(dateEmbauche); + sb.append(", salaire=").append(salaire); + sb.append('}'); + return sb.toString(); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Employe employe = (Employe) o; + return Objects.equals(nom, employe.nom) && Objects.equals(prenom, employe.prenom) && Objects.equals(matricule, employe.matricule) && Objects.equals(dateEmbauche, employe.dateEmbauche) && Objects.equals(salaire, employe.salaire); + } + + @Override + public int hashCode() { + return Objects.hash(nom, prenom, matricule, dateEmbauche, salaire); + } } diff --git a/src/main/java/com/ipiecoles/java/java220/Entreprise.java b/src/main/java/com/ipiecoles/java/java220/Entreprise.java new file mode 100644 index 00000000..e74904f9 --- /dev/null +++ b/src/main/java/com/ipiecoles/java/java220/Entreprise.java @@ -0,0 +1,15 @@ +package com.ipiecoles.java.java220; +import org.joda.time.LocalDate; + +public class Entreprise { + public static final Double SALAIRE_BASE = 1480.27; + public static final Integer NB_CONGES_BASE = 25; + public static final Double INDICE_MANAGER = 1.3; + public static final Double PRIME_MANAGER_PAR_TECHNICIEN = 250.0; + public static final Double PRIME_ANCIENNETE = 100d; + + public static Double primeAnnuelleBase(){ + return LocalDate.now().getYear()/2d; + } + +} diff --git a/src/main/java/com/ipiecoles/java/java220/Manager.java b/src/main/java/com/ipiecoles/java/java220/Manager.java new file mode 100644 index 00000000..e402e5f6 --- /dev/null +++ b/src/main/java/com/ipiecoles/java/java220/Manager.java @@ -0,0 +1,60 @@ +package com.ipiecoles.java.java220; + +import org.joda.time.LocalDate; + +import java.util.HashSet; + +public class Manager extends Employe{ + + private HashSet equipe = new HashSet(); + + public Manager(){ + + } + + public Manager(String nom, String prenom, String matricule, LocalDate dateEmbauche, Double salaire, HashSet equipe) { + super(nom, prenom, matricule, dateEmbauche, salaire); + this.equipe = equipe; + } + + @Override + public Double getPrimeAnnuelle() { + return Entreprise.primeAnnuelleBase() + equipe.size() * Entreprise.PRIME_MANAGER_PAR_TECHNICIEN; + } + + public void ajoutTechnicienEquipe(Technicien technicien){ + equipe.add(technicien); + } + + public void ajoutTechnicienEquipe(String nom, String prenom, String matricule, LocalDate dateEmbauche, Double salaire, Integer grade) throws TechnicienException { + this.ajoutTechnicienEquipe(new Technicien(nom, prenom, matricule, dateEmbauche, salaire, grade)); + } + + @Override + public void setSalaire(Double salaire) { + super.setSalaire(salaire * Entreprise.INDICE_MANAGER + (salaire * equipe.size() / 10d)); + } + + public void augmenterSalaire(Double pourcentage) { + super.augmenterSalaire(pourcentage); + augmenterSalaireEquipe(pourcentage); + } + + private void augmenterSalaireEquipe(Double pourcentage) { + for (Technicien technicien : equipe) { + technicien.augmenterSalaire(pourcentage); + } + } + + + public HashSet getEquipe() { + return equipe; + } + + public void setEquipe(HashSet equipe) { + this.equipe = equipe; + } + + private class TechnicienException extends Exception { + } +} diff --git a/src/main/java/com/ipiecoles/java/java220/Technicien.java b/src/main/java/com/ipiecoles/java/java220/Technicien.java new file mode 100644 index 00000000..290338f9 --- /dev/null +++ b/src/main/java/com/ipiecoles/java/java220/Technicien.java @@ -0,0 +1,51 @@ +package com.ipiecoles.java.java220; + +import org.joda.time.LocalDate; + +public class Technicien extends Employe implements Comparable{ + private Integer grade; + + public Technicien(){ + + } + + public Technicien(String nom, String prenom, String matricule, LocalDate dateEmbauche, Double salaire, Integer grade) { + super(nom, prenom, matricule, dateEmbauche, salaire); + this.grade = grade; + } + + @Override + public void setSalaire(Double salaire) { + super.setSalaire(salaire * (1 + grade / 10d)); + } + + @Override + public Integer getNbConges() { + return super.getNbConges() + this.getNombreAnneeAnciennete(); + } + + @Override + public Double getPrimeAnnuelle() { + return Entreprise.primeAnnuelleBase()* (1 + grade / 10d) + + Entreprise.PRIME_ANCIENNETE * this.getNombreAnneeAnciennete(); + } + + public Integer getGrade() { + return grade; + } + + public void setGrade(Integer grade) { + this.grade = grade; + } + + @Override + public int compareTo(Technicien o) { + if (this.grade o.getGrade()){ + return 1; + } + return 0; + } +} diff --git a/src/test/java/com/ipiecoles/java/java220/EntrepriseTest.java b/src/test/java/com/ipiecoles/java/java220/EntrepriseTest.java index 8c239552..f9e84e02 100644 --- a/src/test/java/com/ipiecoles/java/java220/EntrepriseTest.java +++ b/src/test/java/com/ipiecoles/java/java220/EntrepriseTest.java @@ -116,7 +116,7 @@ public void exo003ProgGenerique() throws Exception { class Derived extends Employe { //A decommenter quand le constructeur avec les 5 arguments est codé public Derived(String nom, String prenom, String matricule, LocalDate dateEmbauche, Double salaire) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException { - //super(nom, prenom, matricule, dateEmbauche, salaire); + super(nom, prenom, matricule, dateEmbauche, salaire); } public Derived() { From 8e38d2f096836a155815918eebc8b722c1effdcf Mon Sep 17 00:00:00 2001 From: Ismail TEBIB Date: Wed, 8 Dec 2021 15:55:15 +0100 Subject: [PATCH 2/2] eval --- .../com/ipiecoles/java/java220/Cadre.java | 63 ++++++++++++++++++ .../com/ipiecoles/java/java220/Employe.java | 64 ++++++++++++++----- .../com/ipiecoles/java/java220/Manager.java | 5 ++ .../ipiecoles/java/java220/Technicien.java | 17 +++++ 4 files changed, 132 insertions(+), 17 deletions(-) create mode 100644 src/main/java/com/ipiecoles/java/java220/Cadre.java diff --git a/src/main/java/com/ipiecoles/java/java220/Cadre.java b/src/main/java/com/ipiecoles/java/java220/Cadre.java new file mode 100644 index 00000000..0c789ac7 --- /dev/null +++ b/src/main/java/com/ipiecoles/java/java220/Cadre.java @@ -0,0 +1,63 @@ +package com.ipiecoles.java.java220; + +import org.joda.time.LocalDate; + +import java.util.Objects; + +public class Cadre extends Employe{ + + private Double coefficient = 1d; + + public Cadre(Double coefficient) { + this.coefficient = coefficient; + } + + public Cadre(String nom, String prenom, String matricule, LocalDate dateEmbauche, Double salaire, Double coefficient) { + super(nom, prenom, matricule, dateEmbauche, salaire); + this.coefficient = coefficient; + } + + public Cadre(String nom, String prenom, String matricule, LocalDate dateEmbauche, Double salaire, Boolean tempsPartiel, String sexe, Double coefficient) { + super(nom, prenom, matricule, dateEmbauche, salaire, tempsPartiel, sexe); + this.coefficient = coefficient; + } + + public Double getCoefficient() { + return coefficient; + } + + public void setCoefficient(Double coefficient) { + this.coefficient = coefficient; + } + + @Override + public Double getPrimeAnnuelle() { + return Entreprise.primeAnnuelleBase() * this.coefficient; + } + + @Override + public Integer getNbConges(){ + return Entreprise.NB_CONGES_BASE+ (int) Math.round(this.coefficient); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + if (!super.equals(o)) return false; + Cadre cadre = (Cadre) o; + return Objects.equals(coefficient, cadre.coefficient); + } + + @Override + public int hashCode() { + return Objects.hash(super.hashCode(), coefficient); + } + + @Override + public String toString() { + return "Cadre{" + + "coefficient=" + coefficient + + '}'; + } +} diff --git a/src/main/java/com/ipiecoles/java/java220/Employe.java b/src/main/java/com/ipiecoles/java/java220/Employe.java index 0df594e5..2305a390 100644 --- a/src/main/java/com/ipiecoles/java/java220/Employe.java +++ b/src/main/java/com/ipiecoles/java/java220/Employe.java @@ -13,6 +13,8 @@ public abstract class Employe { private String matricule; private LocalDate dateEmbauche; private Double salaire; + private Boolean tempsPartiel; + private String sexe; public Employe() { } @@ -26,6 +28,16 @@ public Employe(String nom, String prenom, String matricule, this.salaire = salaire; } + public Employe(String nom, String prenom, String matricule, LocalDate dateEmbauche, Double salaire, Boolean tempsPartiel, String sexe) { + this.nom = nom; + this.prenom = prenom; + this.matricule = matricule; + this.dateEmbauche = dateEmbauche; + this.salaire = salaire; + this.tempsPartiel = tempsPartiel; + this.sexe = sexe; + } + public final Integer getNombreAnneeAnciennete (){ return LocalDate.now().getYear()- dateEmbauche.getYear(); } @@ -64,6 +76,26 @@ public void setMatricule(String matricule) { this.matricule = matricule; } + public void setSalaire(Double salaire) { + this.salaire = salaire; + } + + public Boolean getTempsPartiel() { + return tempsPartiel; + } + + public void setTempsPartiel(Boolean tempsPartiel) { + this.tempsPartiel = tempsPartiel; + } + + public String getSexe() { + return sexe; + } + + public void setSexe(String sexe) { + this.sexe = sexe; + } + public LocalDate getDateEmbauche() { return dateEmbauche; } @@ -79,31 +111,29 @@ public Double getSalaire() { return salaire; } - public void setSalaire(Double salaire) { - this.salaire = salaire; - } - @Override - public String toString() { - final StringBuilder sb = new StringBuilder("Employe{"); - sb.append("nom='").append(nom).append('\''); - sb.append(", prenom='").append(prenom).append('\''); - sb.append(", matricule='").append(matricule).append('\''); - sb.append(", dateEmbauche=").append(dateEmbauche); - sb.append(", salaire=").append(salaire); - sb.append('}'); - return sb.toString(); - } - @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Employe employe = (Employe) o; - return Objects.equals(nom, employe.nom) && Objects.equals(prenom, employe.prenom) && Objects.equals(matricule, employe.matricule) && Objects.equals(dateEmbauche, employe.dateEmbauche) && Objects.equals(salaire, employe.salaire); + return Objects.equals(nom, employe.nom) && Objects.equals(prenom, employe.prenom) && Objects.equals(matricule, employe.matricule) && Objects.equals(dateEmbauche, employe.dateEmbauche) && Objects.equals(salaire, employe.salaire) && Objects.equals(tempsPartiel, employe.tempsPartiel) && Objects.equals(sexe, employe.sexe); } @Override public int hashCode() { - return Objects.hash(nom, prenom, matricule, dateEmbauche, salaire); + return Objects.hash(nom, prenom, matricule, dateEmbauche, salaire, tempsPartiel, sexe); + } + + @Override + public String toString() { + return "Employe{" + + "nom='" + nom + '\'' + + ", prenom='" + prenom + '\'' + + ", matricule='" + matricule + '\'' + + ", dateEmbauche=" + dateEmbauche + + ", salaire=" + salaire + + ", tempsPartiel=" + tempsPartiel + + ", sexe='" + sexe + '\'' + + '}'; } } diff --git a/src/main/java/com/ipiecoles/java/java220/Manager.java b/src/main/java/com/ipiecoles/java/java220/Manager.java index e402e5f6..7c8489f2 100644 --- a/src/main/java/com/ipiecoles/java/java220/Manager.java +++ b/src/main/java/com/ipiecoles/java/java220/Manager.java @@ -57,4 +57,9 @@ public void setEquipe(HashSet equipe) { private class TechnicienException extends Exception { } + + @Override + public String toString() { + return "Manager{} " + super.toString(); + } } diff --git a/src/main/java/com/ipiecoles/java/java220/Technicien.java b/src/main/java/com/ipiecoles/java/java220/Technicien.java index 290338f9..abaca1ca 100644 --- a/src/main/java/com/ipiecoles/java/java220/Technicien.java +++ b/src/main/java/com/ipiecoles/java/java220/Technicien.java @@ -2,6 +2,8 @@ import org.joda.time.LocalDate; +import java.util.Objects; + public class Technicien extends Employe implements Comparable{ private Integer grade; @@ -35,9 +37,24 @@ public Integer getGrade() { } public void setGrade(Integer grade) { + this.grade = grade; } + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + if (!super.equals(o)) return false; + Technicien that = (Technicien) o; + return Objects.equals(grade, that.grade); + } + + @Override + public int hashCode() { + return Objects.hash(super.hashCode(), grade); + } + @Override public int compareTo(Technicien o) { if (this.grade