Aller au contenu principal

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 :

  1. Setup (30 min)

    • Créez la structure de dossiers
    • Configurez le projet .csproj
    • Créez le fichier JSON initial
  2. Modèle (1h)

    • Créez la classe Task
    • Implémentez toutes les propriétés
    • Testez avec main simple
  3. Services (2h)

    • Créez TaskService
    • Créez FichierService avec JSON
    • Testez sauvegarde/chargement
  4. Controller (1h30)

    • Créez TaskController
    • Implémentez le menu
    • Gèrez les interactions
  5. Intégration (1h)

    • Connectez tout
    • Testez toutes les fonctionnalités
    • Corrigez les bugs
  6. 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 :

  1. Comment créer une classe en C# ?
  2. Comment gérer les exceptions ?
  3. Comment utiliser System.Text.Json ?
  4. Comment organiser en namespaces ?
  5. 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.