Bonjour a tous
je voudrais faire un système de calcul de paie pour les employés d'une entreprise.
L'entreprise comporte des téléphonistes qui sont payés à l'heure, des vendeurs qui sont payés à l'heure ET à commission,
et des superviseurs, qui ont un salaire annuel fixe. À chaque semaine, la structure créé sera remplie avec les informations suivantes pour chaque employé : les téléphonistes ont un salaire horaire, et des
heures, les vendeurs ont la même chose mais ont aussi un taux de commission et un total de ventes en dollars.
Les superviseurs n'ont pas ces informations.
j'ai donc créé une classe abstraite pour employé puis le premier type d'employé(téléphoniste hérite de cette classe),le deuxième type d’employé hérite du premier type employé tout fonctionnait mais quand je rajoute le dernier type superviseur la ça marche plus si quelqu’un peut m'aider ce serait apprécié voici mon code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
 
abstract class Employe
        {
                //ici il faudrait ajouter l'encapsulation
                public $nom;
                public $numeroassurance;
                public $nombreheure;
                public function __construct($nom, $numeroassurance,$nombreheure)
                {
                        $this->setNom($nom);
                        $this->setNumeroAssurance($numeroassurance);
                        $this->setNombreheure($nombreheure);
 
                }
                function setNom($nom)
                {
                        $this->nom = $nom;
                }
 
                function getNom()
                {
                        return $this->nom;
                }
 
                function setNumeroAssurance($numeroassurance)
                {
                        $this->numeroassurance = $numeroassurance;
                }
 
                function getnumeroassurance()
                {
                        return $this->numeroassurance;
                }
                function setNombreheure($nombreheure)
                {
                        $this->nombreheure = $nombreheure;
                }
 
                function getNombreheure()
                {
                        return $this->nombreheure;
                }
 
 
 
 
                //cette méthode abstraite force l'implémentation d'afficheResume dans les classes qui héritent de Produit
                abstract function CalculSalaire();
        }
 
        class EmployeSalaireHoraire extends Employe
        {              
                public $tauxhoraire;
 
                public function __construct($nom, $numeroassurance, $nombreheure,$tauxhoraire)
                {
                        parent::__construct($nom,$numeroassurance,$nombreheure);
                        //$this->nombreDePistes = $nombreDePistes;
 
                $this->tauxhoraire = $tauxhoraire;
                }
 
                public function CalculSalaire()
                {
                        $salaire=$this->tauxhoraire*$this->nombreheure;
                        return $salaire;
 
                }
 
 
                function affiche(){
 
                                return "Je suis un employe qui a un salaire de " . $this->CalculSalaire() ;
                }
        }
 
        class EmployeCommission extends EmployeSalaireHoraire
        {
                public $commission;
 
                public function __construct($nom, $numeroassurance, $nombreheure,$tauxhoraire, $commission)
                {
                        parent::__construct($nom,$numeroassurance,$nombreheure,$tauxhoraire);                  
                        $this->commission = $commission;
                        //$this->nombreDePages = $nombreDePages;
                }
 
                public function CalculSalaire()
                {
                        $salaire=$this->tauxhoraire*$this->nombreheure+$this->commission;
                        return $salaire;
                }
 
                function affiche(){
 
                                return "Je suis un employe qui a salaire de " . $this->CalculSalaire() ;
                }
 
        }
        class EmployeSuperviseur extends EmployeSalaireHoraire
        {
                public $salaireAnnuelle;
                public function __construct($nom,$numeroassurance,$salaireAnnuelle)
                {
                parent::__construct($nom,$numeroassurance);
                $this->salaireAnnuelle=$salaireAnnuelle;
                }
 
        }
        class Paie
        {
 
                private $tabPaie = array();
 
 
                public function ajoutePaie(Employe $employe)
                {
                        $this->tabPaie[] = $employe;           
                }      
 
                public function affiche()
                {
                        echo "<ul>";
                        foreach($this->tabPaie as $employe)
                        {
                                echo "<h2>"."<li> Nom de l'employe: "."</h2>" . $employe->nom . "</li>";
                                echo "<h2>"."<li>Numero d'assurance social: " ."</h2>". $employe->numeroassurance . "</li>";
                                echo "<h2>"."<li>Nombre d'heures travailles: " ."</h2>". $employe->nombreheure . "</li>";
                                echo "<h2>"."<li>Taux horaire: " ."</h2>". $employe->tauxhoraire . "</li>";
                                echo "<h2>"."<li>Salaire: " ."</h2>". $employe->CalculSalaire() . "</li>";
 
 
                        }
                        echo "</ul>";
                }
        }
 
        $telephoniste = new EmployeSalaireHoraire("mona lisa", 265369874, 25, 15);
        $vendeur = new EmployeCommission("jean claude bernard", 256369987, 35, 19, 100);
        $superviseur =new EmployeSuperviseur("michel drolet",296333152,60000);
        $InfosEmploye = new Paie();
        $InfosEmploye->ajoutePaie($telephoniste);
        $InfosEmploye->ajoutePaie($vendeur);
        $InfosEmploye->ajoutePaie($superviseur);
        $InfosEmploye->affiche();
        //echo "salaire : " . $telephoniste->CalculSalaire() . "<br/>";
        //echo "salaire : " . $vendeur->CalculSalaire() . "<br/>";