Module C#.13 – Mini-projet
Objectif
Créer une application console complète en C# pour valider toutes les compétences C# acquises.
Théorie
Application : Gestionnaire de tâches console
Application complète utilisant toutes les fonctionnalités C# apprises.
Spécifications du projet
Fonctionnalités
1. CRUD complet (Create, Read, Update, Delete)
- Créer une nouvelle tâche
- Afficher toutes les tâches
- Modifier une tâche existante
- Supprimer une tâche
2. POO complète
- Classes avec encapsulation
- Interfaces pour abstraction
- Héritage si approprié
- Polymorphisme
3. Gestion d'exceptions
- Exceptions personnalisées
- try/catch approprié
- Messages clairs
4. Persistance
- Sauvegarde en JSON (System.Text.Json)
- Chargement au démarrage
- Gestion d'erreurs de fichier
5. LINQ
- Requêtes pour recherche et filtrage
- Tri et groupement
- Calculs statistiques
6. Interface console
- Menu interactif
- Affichage formaté
- Validation des entrées
Structure de données
public class Task
{
public int Id { get; set; }
public string Titre { get; set; }
public string Description { get; set; }
public string Priorite { get; set; }
public DateTime Date { get; set; }
public bool Termine { get; set; }
public DateTime DateCreation { get; set; }
}
Architecture recommandée
Structure :
gestionnaire-taches/
├── Program.cs
├── Models/
│ └── Task.cs
├── Services/
│ ├── TaskService.cs
│ └── FichierService.cs
├── Controllers/
│ └── TaskController.cs
├── Exceptions/
│ └── TaskNotFoundException.cs
├── data/
│ └── tasks.json
└── README.md
Guide de développement
Étape 1 : Modèle
// Models/Task.cs
public class Task
{
public int Id { get; set; }
public string Titre { get; set; }
// ... autres propriétés
}
Étape 2 : Service de données
// Services/TaskService.cs
public class TaskService
{
private List<Task> _tasks = new List<Task>();
public void Ajouter(Task task) { }
public Task? Trouver(int id) { }
public void Modifier(Task task) { }
public void Supprimer(int id) { }
public List<Task> Lister() { }
}
Étape 3 : Persistance
// Services/FichierService.cs
using System.Text.Json;
public class FichierService
{
public void Sauvegarder(List<Task> tasks) { }
public List<Task> Charger() { }
}
Étape 4 : Controller
// Controllers/TaskController.cs
public class TaskController
{
private TaskService _service = new TaskService();
private FichierService _fichierService = new FichierService();
public void Demarrer() { }
public void AfficherMenu() { }
public void CreerTask() { }
public void ListerTasks() { }
public void ModifierTask() { }
public void SupprimerTask() { }
}
Étape 5 : Main
// Program.cs
using GestionnaireTaches.Controllers;
var controller = new TaskController();
controller.Demarrer();
Critères d'évaluation
Fonctionnalité (40%) :
- CRUD complet fonctionnel
- Persistance JSON opérationnelle
- Interface utilisateur claire
Code (30%) :
- POO bien utilisée
- Architecture organisée
- Code propre et commenté
C# (20%) :
- Utilisation appropriée des concepts
- Gestion d'exceptions
- LINQ utilisé
Documentation (10%) :
- Commentaires XML
- README avec instructions
Exercice - Développement
Suivez ces étapes :
-
Setup (30 min)
- Créez la structure de dossiers
- Configurez le projet .csproj
- Créez le fichier JSON initial
-
Modèle (1h)
- Créez la classe Task
- Implémentez toutes les propriétés
- Testez avec main simple
-
Services (2h)
- Créez TaskService
- Créez FichierService avec JSON
- Testez sauvegarde/chargement
-
Controller (1h30)
- Créez TaskController
- Implémentez le menu
- Gèrez les interactions
-
Intégration (1h)
- Connectez tout
- Testez toutes les fonctionnalités
- Corrigez les bugs
-
Améliorations (1h)
- Ajoutez exceptions personnalisées
- Utilisez LINQ pour requêtes
- Finalisez la documentation
Quiz de révision
Avant de commencer, vérifiez vos connaissances :
- Comment créer une classe en C# ?
- Comment gérer les exceptions ?
- Comment utiliser System.Text.Json ?
- Comment organiser en namespaces ?
- Comment créer un menu console ?
Ressources
Si vous êtes bloqué :
- Revisitez les modules précédents
- Documentation .NET officielle : learn.microsoft.com
- Stack Overflow
Bonnes pratiques :
- Code organisé
- POO bien utilisée
- Gestion d'erreurs
- Documentation complète
Objectif final
Créer une application C# console complète qui démontre :
- Maîtrise de la syntaxe C#
- Compréhension de la POO
- Gestion des exceptions
- Manipulation de fichiers et JSON
- Utilisation de LINQ
- Architecture professionnelle
- Bonnes pratiques
Validation : Vous avez terminé C# quand votre application est fonctionnelle, bien structurée et utilise toutes les fonctionnalités apprises.
Félicitations ! Vous avez terminé l'apprentissage complet de C#. Vous êtes maintenant capable de créer des applications C# professionnelles.