L'objectif de cette question est d'implémenter une classe Commercial qui modélise un employé commercial en utilisant l'héritage.
La classe Commercial doit hériter d'une classe existante Employe qui modélise un employé normal.
Contexte
Vous disposez d'une classe de base Employe qui représente un employé normal payé à l'heure. Son salaire est basé sur un salaire horaire qui est calculé comme :
Voici le code complet de la classe Employe :
class Employe:
def __init__(self, nom, taux_horaire, heures_travaillees):
""" Initialise un employé
pre: `nom` est une chaine de caractères
`taux_horaire` est un float positif
`heures_travaillees` est un entier positif
post: initialise un employé avec `taux_horaire` et `heures_travaillees`
"""
self.nom = nom
self.taux_horaire = taux_horaire
self.heures_travaillees = heures_travaillees
def salaire(self):
""" Calcule le salaire de l'employé
pre: -
post: retourne le salaire de cet employé calculé comme le
produit du taux_horaire et des heures_travaillees
"""
return self.taux_horaire * self.heures_travaillees
Objectifs
Vous devez implémenter une classe Commercial qui hérite de Employe et qui ajoute une prime bonus basée sur le nombre de produits vendus. Le salaire total d'un tel commercial est défini comme :
où le \(\text{salaire horaire}\) est défini comme pour un employé et la \(\text{prime bonus}\) est définie comme :
La classe Commercial doit :
Hériter de la classe
Employe.Ajouter deux variables d'instance :
produits_vendus: un entier représentant le nombre de produits vendus.bonus_par_produit: un float représentant la prime par produit vendu.
Définir un constructeur qui :
- prend en paramètres
nom,taux_horaire,heures_travaillees,produits_vendusetbonus_par_produit(dans cet ordre) - réutilise le constructeur de la classe mère.
- initialise les variables d'instance spécifiques au commercial.
- prend en paramètres
Définir une méthode
bonus()qui retourne la prime bonus du commercial (définie ci-dessus).Redéfinir la méthode
salaire()qui :- réutilise le calcul du salaire de la classe mère.
- utilise la méthode
bonus(). - retourne le salaire total du commercial (défini ci-dessus).
Exemple
Voici un exemple de comportement attendu :
# Employé normal
alice = Employe("Alice", 20.0, 160)
# Commercial
bob = Commercial("Bob", 18.0, 150, 25, 12.5)
print(alice.salaire()) # Imprime 3200.0 car 20.0 x 160 = 3200.0
print(bob.salaire()) # Imprime 3012.5 car (18.0 x 150) + (25 x 12.5) = 3012.5
print(bob.bonus()) # Imprime 312.5 car 25 x 12.5 = 312.5
INGInious