Exercices POO Système de notification (héritage)
🎉

Bravo!

Avancé 🧠 Fondamentaux 30 XP 0 personnes ont réussi

Système de notification (héritage)

En situation professionnelle, l'héritage sert souvent a definir un comportement commun dans une classe de base, puis a specialiser ce comportement dans des sous-classes.

Voici un cas concret : un système de notifications. Toutes les notifications ont un message et un destinataire, mais la facon d'envoyer change selon le canal (email, SMS, push).

Crée cette hierarchie :

1. Notification (classe de base)
- __init__(self, destinataire, message)
- envoyer() qui renvoie 'Notification envoyee' (comportement par défaut)
- formater() qui renvoie le message tel quel

2. NotificationEmail(Notification)
- ajoute un attribut objet (sujet de l'email)
- formater() renvoie 'Objet: OBJET -- MESSAGE'
- envoyer() renvoie 'Email envoye a DESTINATAIRE'

3. NotificationSMS(Notification)
- formater() tronque le message a 160 caracteres max
- envoyer() renvoie 'SMS envoye a DESTINATAIRE'

Écris une fonction envoyer_toutes(notifications) qui appelle envoyer() sur chaque notification et renvoie la liste des résultats.

Exemple :
e = NotificationEmail('alice@mail.com', 'Bienvenue', 'Nouveau compte')
e.formater() renvoie 'Objet: Nouveau compte -- Bienvenue'
e.envoyer() renvoie 'Email envoye a alice@mail.com'

Tests (4/5)

Email envoyer
e = NotificationEmail('alice@mail.com', 'Bienvenue', 'Nouveau compte')
assert e.envoyer() == 'Email envoye a alice@mail.com'
Email formater
e = NotificationEmail('a@b.com', 'Salut', 'Hello')
assert e.formater() == 'Objet: Hello -- Salut'
SMS tronque
s = NotificationSMS('0601', 'x' * 200)
assert len(s.formater()) == 160
SMS envoyer
s = NotificationSMS('0601', 'Test')
assert s.envoyer() == 'SMS envoye a 0601'

+ 0 tests cachés

Indices (3 disponibles)

solution.py