Genie logiciel igl235
Thème :
Junior
4 vues ·4/6 leçons

📚 10 TD + 10 TP - Programmation Événementielle et IHM II


🎓 TRAVAUX DIRIGÉS (TD)

TD 1 : Concepts Fondamentaux de la POO

Durée : 2h | Niveau : Débutant

  1. Expliquez les quatre piliers de la programmation orientée objet (POO) : encapsulation, héritage, polymorphisme et abstraction.

  2. Donnez un exemple concret pour chacun des piliers avec du code C#.

  3. Qu’est-ce qu’une classe ? Qu’est-ce qu’un objet ? Quelle est la différence ?

  4. Expliquez le concept d’encapsulation et pourquoi c’est important pour la sécurité des données.

  5. Comparez les modificateurs d’accès en C# (public, private, protected, internal) et expliquez leur utilité.


TD 2 : Héritage et Polymorphisme

Durée : 2h | Niveau : Intermédiaire

  1. Expliquez la différence entre héritage simple et héritage multiple. Pourquoi C# n’autorise-t-il pas l’héritage multiple de classes ?

  2. Qu’est-ce qu’une interface ? Donnez un exemple d’interface et expliquez comment l’implémenter dans une classe.

  3. Expliquez le polymorphisme. Donnez un exemple avec des méthodes virtuelles (virtual) et des méthodes surchargées (override).

  4. Qu’est-ce qu’une classe abstraite ? Quand l’utiliser plutôt qu’une interface ?

  5. Écrivez une hiérarchie de classes pour un système de gestion d’employés (Employe, Manager, Directeur) avec héritage et polymorphisme.


TD 3 : Patterns de Conception - Singleton et Factory

Durée : 2h | Niveau : Avancé

  1. Qu’est-ce qu’un pattern de conception ? Donnez 3 exemples de patterns et leur utilité.

  2. Expliquez le pattern Singleton. Quand l’utiliser ? Donnez un exemple d’implémentation en C#.

  3. Expliquez le pattern Factory. Comment l’utiliser pour créer des objets de manière flexible ?

  4. Expliquez le pattern Observer. Donnez un exemple oĂą ce pattern serait utile.

  5. Comparez les patterns Strategy et Decorator. Quand utiliser l’un ou l’autre ?


TD 4 : Principes SOLID

Durée : 2h | Niveau : Avancé

  1. Énumérez et expliquez les 5 principes SOLID.

  2. Donnez un exemple de violation du principe Single Responsibility et proposez une correction.

  3. Expliquez le principe Open/Closed avec un exemple concret.

  4. Qu’est-ce que le principe Liskov Substitution ? Donnez un exemple de violation et sa correction.

  5. Expliquez le principe Dependency Inversion. Comment l’appliquer dans une application C# ?


TD 5 : Gestion des Exceptions

Durée : 2h | Niveau : Intermédiaire

  1. Expliquez la différence entre une exception et une erreur en C#.

  2. Qu’est-ce qu’un bloc try-catch-finally ? Expliquez le rôle de chaque partie.

  3. Donnez 5 exemples d’exceptions courantes en C# et expliquez quand elles se produisent.

  4. Comment créer une exception personnalisée en C# ?

  5. Expliquez le concept de “throwing exceptions” et quand l’utiliser.


TD 6 : Conception d’Interfaces Utilisateur (UI/UX)

Durée : 2h | Niveau : Intermédiaire

  1. Qu’est-ce que le wireframing ? Donnez les étapes pour créer un wireframe professionnel.

  2. Expliquez les principes de base du design UI/UX (hiérarchie visuelle, feedback utilisateur, accessibilité).

  3. Qu’est-ce que la responsivité ? Pourquoi est-elle importante dans le design web et desktop ?

  4. Expliquez les normes WCAG pour l’accessibilité. Donnez 3 exemples de bonnes pratiques.

  5. Comparez WPF et WinForms. Quand utiliser l’un ou l’autre ?


TD 7 : Architecture et Patterns d’Application

Durée : 2h | Niveau : Avancé

  1. Qu’est-ce que l’architecture MVC (Model-View-Controller) ? Expliquez chaque composant.

  2. Qu’est-ce que l’architecture MVVM (Model-View-ViewModel) ? Quand l’utiliser ?

  3. Expliquez la séparation des responsabilités dans une application. Pourquoi est-ce important ?

  4. Qu’est-ce qu’une couche métier (Business Logic Layer) ? Donnez un exemple.

  5. Comparez une architecture monolithique et une architecture microservices.


TD 8 : Bases de Données et ADO.NET

Durée : 2h | Niveau : Intermédiaire

  1. Expliquez les deux modèles ADO.NET : Connected Model et Disconnected Model.

  2. Qu’est-ce qu’une injection SQL ? Comment la prévenir en utilisant les paramètres ADO.NET ?

  3. Expliquez le concept de transaction en base de données. Donnez un exemple avec ACID.

  4. Qu’est-ce qu’une clé étrangère ? Pourquoi est-ce important pour l’intégrité des données ?

  5. Écrivez une requête SQL pour créer une table Produits avec les colonnes : id, nom, prix, quantité, date_ajout.


TD 9 : Déploiement et Distribution

Durée : 2h | Niveau : Avancé

  1. Qu’est-ce que ClickOnce ? Quels sont ses avantages et inconvénients ?

  2. Expliquez le Semantic Versioning (Major.Minor.Patch). Donnez des exemples.

  3. Qu’est-ce qu’un installateur MSI ? Comment le créer avec WiX Toolset ?

  4. Expliquez les stratégies de migration : Big Bang, Progressive et Parallèle.

  5. Qu’est-ce que le CI/CD (Continuous Integration/Continuous Deployment) ? Pourquoi est-ce important ?


TD 10 : Étude de Cas - Conception d’un Système Complet

Durée : 2h | Niveau : Avancé

  1. Vous devez concevoir un système de commerce électronique. Proposez une architecture complète avec :

    • Modèles de donnĂ©es (Produits, CatĂ©gories, Commandes, Clients)
    • HiĂ©rarchie de classes avec hĂ©ritage
    • Interfaces pour les mĂ©thodes de paiement
    • Gestion des erreurs
  2. Identifiez les patterns de conception qui pourraient être utilisés.

  3. Proposez une séparation des responsabilités (couches métier, données, présentation).

  4. Expliquez comment gérer les promotions qui s’appliquent à certains produits.

  5. Décrivez comment vous testeriez cette application.



đź’» TRAVAUX PRATIQUES (TP)

TP 1 : Création de Classes et Objets en C#

Durée : 3h | Niveau : Débutant

Objectif : Créer une hiérarchie de classes pour un système de gestion de véhicules

Tâches :

  1. Créez une classe Vehicule avec les propriétés :

    • Marque (string)
    • Modèle (string)
    • AnnĂ©e (int)
    • Couleur (string)
  2. Ajoutez des méthodes :

    • Demarrer() : affiche “Le vĂ©hicule dĂ©marre”
    • Arreter() : affiche “Le vĂ©hicule s’arrĂŞte”
    • AfficherInfos() : affiche toutes les informations du vĂ©hicule
  3. Créez une classe Voiture qui hérite de Vehicule avec :

    • PropriĂ©tĂ© supplĂ©mentaire : NombrePortes (int)
    • MĂ©thode OuvrirCoffre() : affiche “Le coffre s’ouvre”
  4. Créez une classe Moto qui hérite de Vehicule avec :

    • PropriĂ©tĂ© supplĂ©mentaire : TypeGuidon (string)
    • MĂ©thode FaireWheeling() : affiche “La moto fait un wheelie”
  5. Dans le programme principal :

    • CrĂ©ez une instance de Voiture et une instance de Moto
    • Appelez toutes les mĂ©thodes
    • Affichez les informations
  6. Testez votre code et documentez-le.


TP 2 : Encapsulation et Propriétés

Durée : 3h | Niveau : Intermédiaire

Objectif : Implémenter l’encapsulation pour un système de gestion de comptes bancaires

Tâches :

  1. Créez une classe CompteBancaire avec :

    • Champ privĂ© solde (decimal)
    • PropriĂ©tĂ© Titulaire (string) avec validation
    • PropriĂ©tĂ© Solde (decimal) en lecture seule
  2. Implémentez les méthodes :

    • Deposer(decimal montant) : ajoute au solde avec validation
    • Retirer(decimal montant) : retire du solde avec vĂ©rification de solde suffisant
    • AfficherSolde() : affiche le solde actuel
  3. Ajoutez une gestion des erreurs :

    • Levez une exception si le montant est nĂ©gatif
    • Levez une exception si le solde est insuffisant pour un retrait
  4. Créez un programme de test qui :

    • CrĂ©e un compte bancaire
    • Effectue plusieurs dĂ©pĂ´ts et retraits
    • Gère les erreurs avec try-catch
    • Affiche le solde final
  5. Testez tous les cas d’utilisation (montants valides, invalides, solde insuffisant).


TP 3 : Interfaces et Polymorphisme

Durée : 3h | Niveau : Intermédiaire

Objectif : Créer un système de paiement flexible avec interfaces

Tâches :

  1. Créez une interface IMethodePaiement avec la méthode :

    • Payer(decimal montant) : bool
  2. Créez des classes implémentant l’interface :

    • PaiementCarte : simule un paiement par carte
    • PaiementVirement : simule un virement bancaire
    • PaiementPayPal : simule un paiement PayPal
  3. Chaque classe doit :

    • Valider le montant
    • Afficher un message de confirmation
    • Retourner true si succès, false sinon
  4. Créez une classe Commande qui :

    • Accepte une IMethodePaiement
    • Traite le paiement via la mĂ©thode polymorphe
    • Gère les erreurs
  5. Dans le programme principal :

    • CrĂ©ez plusieurs commandes avec diffĂ©rentes mĂ©thodes de paiement
    • Testez le polymorphisme
  6. Testez et documentez votre code.


TP 4 : Patterns de Conception - Singleton

Durée : 3h | Niveau : Avancé

Objectif : Implémenter le pattern Singleton pour un gestionnaire de configuration

Tâches :

  1. Créez une classe ConfigurationApp (Singleton) qui :

    • Stocke les paramètres de l’application (nom, version, langue)
    • Assure qu’une seule instance existe
    • Fournit des mĂ©thodes pour lire/modifier la configuration
  2. Implémentez le Singleton avec :

    • Constructeur privĂ©
    • PropriĂ©tĂ© statique Instance
    • Lazy initialization
  3. Créez des méthodes :

    • ObtenirValeur(string cle) : string
    • DefinirValeur(string cle, string valeur)
    • AfficherConfiguration()
  4. Dans le programme principal :

    • AccĂ©dez Ă  l’instance unique depuis plusieurs endroits
    • VĂ©rifiez que c’est la mĂŞme instance
    • Modifiez la configuration et vĂ©rifiez les changements
  5. Testez que le Singleton fonctionne correctement.


TP 5 : Gestion des Exceptions

Durée : 3h | Niveau : Intermédiaire

Objectif : Créer une application robuste avec gestion complète des exceptions

Tâches :

  1. Créez une classe GestionnaireUtilisateurs qui :

    • Charge les utilisateurs depuis un fichier
    • Valide les donnĂ©es utilisateur
    • Gère les erreurs de fichier
  2. Implémentez une exception personnalisée :

    • UtilisateurInvalideException
  3. Créez des méthodes qui lèvent des exceptions :

    • ChargerUtilisateurs(string cheminFichier) : FileNotFoundException
    • AjouterUtilisateur(string nom, string email) : UtilisateurInvalideException
    • SupprimerUtilisateur(int id) : ArgumentException
  4. Dans le programme principal :

    • Utilisez try-catch-finally
    • GĂ©rez les diffĂ©rents types d’exceptions
    • Affichez des messages d’erreur clairs
    • Loggez les erreurs dans un fichier
  5. Testez tous les scénarios d’erreur.


TP 6 : Architecture MVC - Application de Gestion de Tâches

Durée : 4h | Niveau : Avancé

Objectif : Implémenter une application console suivant le pattern MVC

Tâches :

  1. Créez le Model :

    • Classe Tache avec propriĂ©tĂ©s : id, titre, description, statut, dateCreation
    • Classe ListeTaches pour gĂ©rer une collection de tâches
  2. Créez le View :

    • Classe AffichageTaches pour afficher les tâches
    • MĂ©thodes pour afficher la liste, les dĂ©tails, les messages
  3. Créez le Controller :

    • Classe ControllerTaches pour gĂ©rer la logique
    • MĂ©thodes : AjouterTache(), SupprimerTache(), ModifierTache(), AfficherTaches()
  4. Implémentez les fonctionnalités :

    • Ajouter une tâche
    • Modifier une tâche
    • Supprimer une tâche
    • Marquer comme complĂ©tĂ©e
    • Afficher toutes les tâches
  5. Créez un menu interactif pour l’utilisateur.

  6. Testez l’application complète.


TP 7 : Application WPF - Interface Graphique

Durée : 4h | Niveau : Avancé

Objectif : Créer une application WPF pour gérer une liste de contacts

Tâches :

  1. Créez le modèle Contact avec :

    • PropriĂ©tĂ©s : id, nom, email, telephone, adresse
    • ImplĂ©mentez INotifyPropertyChanged pour la liaison de donnĂ©es
  2. Créez l’interface WPF avec :

    • ListBox pour afficher les contacts
    • TextBox pour les informations du contact
    • Boutons : Ajouter, Modifier, Supprimer, Effacer
  3. Implémentez le ViewModel (MVVM) :

    • ContactViewModel avec ObservableCollection
    • Commandes pour les actions (RelayCommand)
    • PropriĂ©tĂ©s pour la liaison de donnĂ©es
  4. Ajoutez des styles et des templates :

    • Style personnalisĂ© pour les boutons
    • Template pour afficher les contacts
  5. Implémentez les fonctionnalités :

    • Ajouter un contact
    • Modifier un contact sĂ©lectionnĂ©
    • Supprimer un contact
    • Validation des donnĂ©es
  6. Testez l’application et vérifiez la liaison de données.


TP 8 : Base de Données avec ADO.NET

Durée : 4h | Niveau : Avancé

Objectif : Créer une application CRUD complète avec SQL Server

Tâches :

  1. Créez une base de données GestionProduits avec les tables :

    • Produits (id, nom, prix, quantite, dateAjout)
    • Categories (id, nom, description)
    • Relation entre les deux tables
  2. Créez une classe ConnexionBD :

    • Gère la connexion Ă  la base de donnĂ©es
    • Utilise ADO.NET avec SqlConnection et SqlCommand
    • ImplĂ©mente le pattern Singleton
  3. Créez une classe RepositoryProduits :

    • MĂ©thode AjouterProduit(Produit produit)
    • MĂ©thode ObtenirTousProduits() : List<Produit>
    • MĂ©thode ModifierProduit(Produit produit)
    • MĂ©thode SupprimerProduit(int id)
    • MĂ©thode RechercherProduit(string nom) : List<Produit>
  4. Utilisez les paramètres ADO.NET pour éviter les injections SQL.

  5. Implémentez la gestion des transactions pour les opérations critiques.

  6. Créez une application console pour tester les opérations CRUD.

  7. Testez tous les cas d’utilisation.


TP 9 : Déploiement avec ClickOnce

Durée : 3h | Niveau : Avancé

Objectif : Déployer une application WPF via ClickOnce

Tâches :

  1. Préparez l’application WPF du TP 7 pour le déploiement :

    • VĂ©rifiez que le code est optimisĂ©
    • Configurez les paramètres de l’application
    • CrĂ©ez un fichier de configuration
  2. Configurez ClickOnce :

    • Ouvrez les propriĂ©tĂ©s du projet
    • Onglet “Publier”
    • Configurez l’emplacement de publication
    • DĂ©finissez les paramètres de mise Ă  jour
  3. Créez un certificat de signature (optionnel pour test).

  4. Publiez l’application :

    • GĂ©nĂ©rez les fichiers de dĂ©ploiement
    • CrĂ©ez un raccourci d’installation
  5. Testez l’installation :

    • Installez l’application sur une autre machine
    • VĂ©rifiez que toutes les fonctionnalitĂ©s fonctionnent
    • Testez la mise Ă  jour automatique
  6. Documentez le processus de déploiement.


TP 10 : Projet Complet - Application de Gestion de Bibliothèque

Durée : 6h | Niveau : Avancé

Objectif : Créer une application complète intégrant tous les concepts

Tâches :

  1. Architecture :

    • Modèles : Livre, Auteur, Emprunt, Utilisateur
    • Interfaces pour les opĂ©rations CRUD
    • Repository pattern pour l’accès aux donnĂ©es
  2. Base de Données :

    • CrĂ©ez les tables nĂ©cessaires
    • DĂ©finissez les relations
    • ImplĂ©mentez les contraintes d’intĂ©gritĂ©
  3. Logique Métier :

    • Gestion des emprunts (date limite, pĂ©nalitĂ©s)
    • Calcul des frais de retard
    • VĂ©rification de la disponibilitĂ© des livres
  4. Interface Utilisateur (WPF ou Console) :

    • Affichage des livres disponibles
    • Gestion des emprunts
    • Historique des emprunts
    • Gestion des utilisateurs
  5. Gestion des Erreurs :

    • Exceptions personnalisĂ©es
    • Validation des donnĂ©es
    • Logging
  6. Tests :

    • Testez toutes les fonctionnalitĂ©s
    • VĂ©rifiez la gestion des erreurs
    • Testez les cas limites
  7. Documentation :

    • Diagramme UML
    • Documentation du code
    • Manuel utilisateur
  8. Présentation :

    • DĂ©monstration de l’application
    • Explication de l’architecture
    • RĂ©ponses aux questions


📋 Critères d’Évaluation

Pour les TD :

  • âś… ComprĂ©hension des concepts POO
  • âś… ClartĂ© des explications
  • âś… Exemples de code pertinents
  • âś… RĂ©ponses complètes et dĂ©taillĂ©es

Pour les TP :

  • âś… FonctionnalitĂ© complète
  • âś… Code bien structurĂ© et commentĂ©
  • âś… Respect des principes SOLID et patterns
  • âś… Gestion appropriĂ©e des erreurs
  • âś… Tests effectuĂ©s
  • âś… Documentation adĂ©quate

🎯 Ressources Supplémentaires


🏆 Compétences Acquises

À l’issue de ce cours, vous serez capable de :

✅ Concevoir des architectures logicielles robustes et maintenables ✅ Implémenter les principes SOLID et les patterns de conception ✅ Créer des interfaces utilisateur professionnelles (WPF) ✅ Gérer les bases de données avec ADO.NET ✅ Gérer les exceptions et les erreurs de manière appropriée ✅ Déployer des applications professionnelles ✅ Tester et déboguer des applications complexes ✅ Collaborer efficacement dans une équipe de développement


Bon courage pour vos travaux ! 🚀

PrĂŞt Ă  passer Ă  la suite ?

Vous avez terminé cette leçon sur 📚 10 TD + 10 TP - Programmation Événementielle et IHM II. Continuez votre apprentissage avec la prochaine leçon ou explorez d'autres formations.