probléme avec ma structure POO
Posté : 05 mai 2013, 05:10
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:
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:
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/>";