Analyse de données avec Python
Master IAE
S1
2024/2025
TP 1
Problème 1 : Gestion de Stock
Vous êtes chargé de développer un système de gestion de stock pour un magasin en
utilisant la programmation orientée objet.
Le programme doit permettre d'ajouter des produits, de les vendre, de mettre à jour les
quantités, de consulter la liste des produits disponibles, et de sauvegarder les informations
dans un fichier.
Spécifications :
1. Création de la classe Produit :
o Chaque produit doit avoir un nom, une référence, une quantité en stock, et un
prix unitaire.
o Ajoutez une méthode d'affichage pour représenter un produit de manière
lisible.
2. Création de la classe GestionStock :
o Le gestionnaire de stock doit stocker une liste de produits.
o Ajoutez des méthodes pour ajouter un produit, vendre un produit (mettre à jour
la quantité), mettre à jour le stock, et afficher la liste des produits disponibles.
3. Gestion des fichiers :
o Ajoutez une fonction pour sauvegarder l'état actuel du stock dans un fichier
texte.
o Ajoutez une fonction pour charger les données du stock à partir d'un fichier
texte.
4. Gestion des exceptions :
o Gérez les exceptions pour les cas où un produit est vendu alors qu'il n'est plus
en stock, un produit est ajouté avec une référence déjà existante, etc.
Consignes supplémentaires :
Utilisez des concepts de programmation orientée objet pour implémenter les
classes Produit et GestionStock.
Utilisez des exceptions pour gérer les erreurs de manière appropriée.
Testez votre programme avec différentes actions (ajout de produits, vente, mise à
jour du stock, etc.).
Sauvegardez et chargez les données depuis un fichier texte à la fin du programme.
Problème 2 : Gestion de Tâches
Vous devez développer un système de gestion de tâches qui gère différents types de
tâches.
Chaque tâche possède des attributs de base tels que le titre, la description, la date
d'échéance, et le statut. Vous allez introduire des types de tâches spécifiques qui hériteront
de la classe de base Tâche.
Spécifications Techniques :
1. Création de la classe Tâche :
o Attributs : titre, description, date_echeance, statut (à faire, en cours, terminée).
o Méthodes :
afficher() : Affiche les détails de la tâche de manière lisible.
marquer_terminee() : Change le statut de la tâche en "terminée".
2. Création de Sous-classes pour les Types de Tâches :
o TachePersonnel :
Attribut supplémentaire : priorite (basse, moyenne, haute).
La méthode afficher() doit inclure la priorité.
o TacheProfessionnelle :
Attribut supplémentaire : responsable (nom de la personne en charge).
La méthode afficher() doit inclure le responsable.
o TacheRecurrente :
Attributs supplémentaires : frequence (quotidien, hebdomadaire,
mensuel).
La méthode afficher() doit inclure la fréquence.
3. Classe GestionnaireTâches :
o Stocke une liste de tâches, indépendamment de leur type.
o Méthodes :
ajouter_tache(tache) : Ajoute une tâche à la liste.
afficher_taches() : Parcourt la liste des tâches et utilise le polymorphisme
pour afficher chaque tâche avec sa propre méthode afficher().
marquer_terminee(titre) : Marque une tâche comme terminée en
fonction du titre.
supprimer_tache(titre) : Supprime une tâche par son titre.
compter_taches() : Affiche le nombre total de tâches.
4. Gestion des Fichiers :
o Sauvegarde : Enregistre les tâches dans un fichier JSON, en incluant le type de
chaque tâche pour pouvoir les recréer correctement lors du chargement.
o Chargement : Recharge les tâches à partir du fichier JSON en instanciant la
bonne sous-classe selon le type de tâche.
5. Gestion des Exceptions :
o Empêcher l’ajout de tâches avec des dates d’échéance passées.
o Empêcher de marquer une tâche déjà terminée.
o Gérer les erreurs lors de la suppression de tâches inexistantes.
Consignes supplémentaires :
Utilisez des concepts de programmation orientée objet pour implémenter les
classes Tâche et GestionnaireTâches.
Utilisez des exceptions pour gérer les erreurs de manière appropriée.
Testez votre programme avec différentes actions (ajout de tâches, marquage
comme terminée, suppression, etc.).
Sauvegardez et chargez les données depuis un fichier JSON à la fin du programme.