comment comprendre l'affichage du code suivant?
Bonjour!
je suis en pleine révision de java et j'ai énormément de mal:
J'ai un code qui modélise la gestion des personnels d'une société ainsi que l’ensemble de ses sites (il sont répartis en deux groupes : sites de production et sites de vente). La classe Personnels décrit un employé et ses éléments de rémunération : la classe interne ElementSalaire contient le salaire de base et les primes de l’employé, la classe interne HistoriqueServices contient les emplois successifs occupés par l’employé.
A chaque site est associé un type de prime (ex. prime de résultat pour un site de vente). La classe Site regroupe un ensemble de méthodes permettant la gestion du personnel : ajoutPersonnel(p), suppressionPersonnel(p) réalisent l’ajout, la suppression du personnel p au site courant, tranfertPersonnel(p,ns) réalise le transfert du personnel p du site courant vers le site ns. Le conteneur listePersonnels contient l’ensemble des personnels associés à un site. |
Je n'arrive pas à savoir comment on choisit l'un ou l'autre des Primes de Résultats ou des Primes d'ancienneté,
plus précisément je ne comprends pas le résultat d'affichage des primes dans le résultat.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153
|
import java.util.*;
interface PersonnelsStandard{
List historique();
void ajoutHistorique(Sites s);
}
public class TestPersonnelsv1 {
public static void main(String[] args) {
Personnels p1=new Personnels(101,"Dupont","Paris",2000,2);
Personnels p2=new Personnels(102,"Martin","Lyon",2500,10);
Sites siteVente1= new SiteVente("Paris");
Sites siteVente2= new SiteVente("Lyon");
Sites siteProd1= new SiteProduction("Lille");
siteVente1.ajoutPersonnel(p1);
siteVente1.ajoutPersonnel(p2);
System.out.println(p1);
System.out.println(p2);
siteVente1.transfertPersonnel(p1,siteVente2);
siteVente1.transfertPersonnel(p2,siteProd1);
System.out.println(p1);
System.out.println(p2);
}
}
class Personnels implements Comparable, PersonnelsStandard{
int no;
int anciennete;
String nom;
String adresse;
ElementsSalaire es;
HistoriqueServices histo;
Personnels(int no,String n,String a, int base,int anc){
this.no=no; à compléter
}
public String toString(){
return no + " " + nom + " " + " base "+ es.salaireBase+" Primes " + es.primes + " sal. Total "+es.salaireTotal()+
" Histo Serv. "+historique();
}
public List historique(){
return histo.services;}
public void ajoutHistorique(Sites s){histo.services.add(s);}
public void ajoutPrime(String pr){
if (pr=="PA") {es.primes.add(es.new PrimeAnciennete(this));}
if (pr=="PR") {es.primes.add(es.new PrimeResultat(this));}
}
public void suppressionPrime(String pr){
à compléter
}
public int compareTo(Object o){
return(no-((Personnels)o).no);
}
private class ElementsSalaire{
int salaireBase;
List primes;
ElementsSalaire(int b){salaireBase=b;primes= new ArrayList();}
int salaireTotal(){
int x=0;
for (int i=0;i<primes.size();i++)x=x+((Prime)(primes.get(i))).montant;
return salaireBase+x;}
class PrimeAnciennete extends Prime{
PrimeAnciennete(Personnels p){
super(p);type="PA";calculPrime();
}
void calculPrime(){
montant=(int)(p.es.salaireBase*anciennete*0.02);
}
public String toString(){return "PA= "+montant;}
}
class PrimeResultat extends Prime{ PrimeResultat(Personnels p){
super(p);type="PR";calculPrime();
}
void calculPrime(){
montant=(int) (p.es.salaireBase*0.05);
}
public String toString(){
return type+" "+montant;}
}
}
class HistoriqueServices{
List services;
HistoriqueServices(){services= new ArrayList();}
}
}
abstract class Prime implements Comparable{
Personnels p;
int montant; String type;
static List L=new ArrayList(); Prime(Personnels p){this.p=p;L.add(this);}
abstract void calculPrime();
public String toString(){return type;}
public int compareTo(Object o){return montant - ((Prime)o).montant;}
}
/*****************************************SITES************************************************/
abstract class Sites{ String localisation; String refSite;Set listePesrsonnels;}
Sites(){ à compléter }
void transfertPersonnel(Personnels p, Sites ns){
ns.ajoutPersonnel(p);
suppressionPersonnel(p);
}
void affectationPersonnel(Personnels p){
ajoutPersonnel(p);
}
void ajoutPersonnel(Personnels p){
listePesrsonnels.add(p);
p.ajoutHistorique(this);
}
void suppressionPersonnel(Personnels p){
listePesrsonnels.remove(p);
}
static Set listePersonnelsSSPrime(){
à compléter
}
}
class SiteProduction extends Sites{
int capaciteProduction;
SiteProduction(String l){localisation = l; capaciteProduction = 1000;} public String toString(){return "Site Prod. " + localisation;}
void ajoutPersonnel(Personnels p){
super.ajoutPersonnel(p);
p.ajoutPrime("PA");
}
void suppressionPersonnel(Personnels p){
super.suppressionPersonnel(p);
p.suppressionPrime("PA");
}
}
class SiteVente extends Sites{
int capacitéStock;
SiteVente(String l){localisation = l;}
public String toString(){return "Site Vente. " + localisation;} void ajoutPersonnel(Personnels p){
super.ajoutPersonnel(p);
p.ajoutPrime("PR");
}
void suppressionPersonnel(Personnels p){
super.suppressionPersonnel(p);
p.suppressionPrime("PR");
}
} |
Les résultats donnés sont:
Code:
1 2 3 4 5
|
101 Dupont base 2000 Primes [PR 100] sal. Total 2100 Histo Serv. [Site Vente Paris]
102 Martin base 2500 Primes [PR 125] sal. Total 2625 Histo Serv. [Site Vente Paris]
101 Dupont base 2000 Primes [PR 100] sal. Total 2100 Histo Serv. [Site Vente Paris, Site Vente Lyon]
//il en manque un en PA |
Je ne sais pas comment on choisit PR ou PA...