Évaluation Formative Pratique : Système de Station Météo
Objectif
Démontrer la compétence en encapsulation, gestion d'erreurs et architecture logicielle en C#.
Mise en situation
Vous devez créer un module de gestion pour une station météo. Ce module doit valider les données de température et d'humidité avant de les traiter par le reste du système.
Tâche 1 : Architecture de la Solution
- Créez une solution Visual Studio nommée
SolutionStationMeteo. - Ajoutez un projet de type Bibliothèque de classes (.NET) nommé
StationMeteo.Metier. - Ajoutez un projet de type Application Console nommé
StationMeteo.App. - Configurez le projet
StationMeteo.Apppour qu'il puisse utiliser les classes du projetMetier(Ajout de référence).
Tâche 2 : Conception de la classe CapteurMeteo
Dans le projet Metier, créez la classe CapteurMeteo en respectant les critères suivants :
A. Attributs (Champs privés)
- Déclarez les champs privés pour le
_nom, la_temperatureet l'_humidite. Respectez la convention de nommage C# (_casseChameau).
B. Méthode de validation privée
- Créez une méthode privée nommée
ContientDesChiffres(string texte)qui retournetruesi la chaîne passée en paramètre contient au moins un chiffre, etfalsesinon. - Indice : Utilisez une boucle
foreachpour tester chaque caractère avecchar.IsDigit(c).
C. Propriétés (Encapsulation)
Nom:- Ne peut pas être nul ou vide (utilisez
string.IsNullOrWhiteSpace). - Ne doit pas contenir de chiffres (utilisez votre méthode privée
ContientDesChiffres). - Si une de ces conditions n'est pas respectée, lancez une
ArgumentExceptionavec un message clair.
- Ne peut pas être nul ou vide (utilisez
Temperature: Doit être bornée entre -60.0 et 60.0. Si la valeur reçue dépasse ces limites, ramenez-la à la limite la plus proche (ne pas lancer d'exception).Humidite: Doit être entre 0 et 100 %. Si la valeur est hors limite, lancez uneArgumentOutOfRangeException.
D. Constructeurs
- Créez un constructeur qui accepte uniquement le
nom. - Créez un second constructeur qui accepte les 3 paramètres.
- Important : Vos constructeurs doivent passer par les Propriétés (Majuscules) pour garantir que les validations s'exécutent dès l'instanciation.
Tâche 3 : Utilisation dans le Main
Dans le projet App, instanciez les objets suivants en entourant vos appels de blocs try-catch appropriés :
1. Un capteur valide : "Capteur_Nord", 12.5, 45.
2. Un capteur invalide : "Capteur123" (doit lever une exception à cause du chiffre).
3. Un capteur invalide : Humidité de -10 (doit lever une exception).
Tâche 4 : Gestion de versions (Git)
- Initialisez un dépôt Git et faites un commit initial de votre structure.
- Créez une branche nommée
test-unitaire. - Dans cette branche, ajoutez une ligne dans le
Mainqui affiche le résultat de la lecture du capteur. - Effectuez un commit sur votre branche, puis fusionnez (merge) la branche dans
main.