Información

Fecha de entrega 22/01/2026 17:00:00
Tiempo límite de envío Sin límite de envío

Inicia sesión

[Q5] Salaire d'un commercial

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 :

\begin{equation*} \text{salaire horaire} = \text{nombre d'heures travaillées} \times \text{taux horaire} \end{equation*}

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 :

\begin{equation*} \text{salaire total} = \text{salaire horaire} + \text{prime bonus} \end{equation*}

où le \(\text{salaire horaire}\) est défini comme pour un employé et la \(\text{prime bonus}\) est définie comme :

\begin{equation*} \text{prime bonus} = \text{nombre de produits vendus} \times \text{bonus par produit} \end{equation*}

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_vendus et bonus_par_produit (dans cet ordre)
    • réutilise le constructeur de la classe mère.
    • initialise les variables d'instance spécifiques au commercial.
  • 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

Pregunta 1: La classe Commercial

Implémentez la classe Commercial decrite ci-dessus. La classe Employe est déjà implémentée et est accessible.

Pregunta 2: Zone de test

Insérez votre code de test optionnel ci-dessous. Vous pouvez utiliser assert et print pour tester votre programme. Votre code de test sera exécuté à la suite de la définition de votre fonction (il ne faut pas la recopier ici). Ce code test sera ignoré lors de l'évaluation. Il vous sert seulement à tester votre propre code.