Exercices corrigés C# – Programmation Orientée Objet | Partie 3
Avec des exercices corrigés en C#, vous pratiquerez divers concepts du langage C#. Vous commencerez par des exercices C#de base à des exercices plus avancés. La solution est fournie pour chaque exercice. Vous devez essayer de résoudre chaque problème par vous-même avant de vérifier la solution. Si vous avez des questions concernant chaque problème, nous vous encourageons à les poster sur notre forum.
Exercice 1:
Écrire un programme C# pour créer une classe appelée « Stock » avec une collection de produits et des méthodes pour ajouter et supprimer des produits, et pour vérifier si le stock est insuffisant.
Diagrame de classe:

// Importer les classes nécessaires using System; using System.Collections.Generic; // Définir la classe Produit class Produit { // Champ privé pour stocker le nom du produit private string nom; // Champ privé pour stocker la quantité du produit private int quantite; // Constructeur pour initialiser le nom et la quantité du produit public Produit(string nom, int quantite) { this.nom = nom; this.quantite = quantite; } // Méthode pour obtenir le nom du produit public string GetNom() { return nom; } // Méthode pour définir le nom du produit public void SetNom(string nom) { this.nom = nom; } // Méthode pour obtenir la quantité du produit public int GetQuantite() { return quantite; } // Méthode pour définir la quantité du produit public void SetQuantite(int quantite) { this.quantite = quantite; } } // Définir la classe Stock class Stock { // Champ privé pour stocker une liste d'objets Produit private List<Produit> produits; // Constructeur pour initialiser le champ produits public Stock() { // Initialiser la liste des produits produits = new List<Produit>(); } // Méthode pour ajouter un produit à la liste des produits public void AddProduit(Produit produit) { produits.Add(produit); } // Méthode pour supprimer un produit de la liste des produits public void RemoveProduit(Produit produit) { produits.Remove(produit); } // Méthode pour vérifier si les produits en stock sont // insuffisants public void CheckStock() { // Itérer dans la liste des produits foreach (Produit p in produits) { // Vérifier si la quantité du produit est inférieure ou // égale à 100 if (p.GetQuantite() <= 100) { // Afficher un message indiquant que le produit est // en rupture de stock Console.WriteLine($"{p.GetNom()} est en rupture de stock. La quantité actuelle: {p.GetQuantite()}"); } } } } // Définir la classe pour tester la classe Stock et Produit class Program { // Définir la méthode Main qui est le point d'entrée du programme static void Main(string[] args) { // Créer une nouvelle instance de la classe Stock Stock stock = new Stock(); // Créer de nouveaux objets Produit avec nom et quantité Produit p1 = new Produit("Souris", 300); Produit p2 = new Produit("Clavier", 70); Produit p3 = new Produit("Tablette", 40); Console.WriteLine("Ajouter trois produits en stock:"); stock.AddProduit(p1); stock.AddProduit(p2); stock.AddProduit(p3); Console.WriteLine("\nVérifier la disponibilité des stocks:"); // Vérifier et afficher les produits dont le stock est // insuffisant stock.CheckStock(); Console.WriteLine("\nSupprimer la tablette du stock!"); // Supprimer le produit Tablette du stock stock.RemoveProduit(p3); Console.WriteLine("\nVérifier à nouveau la disponibilité des stocks:"); // Vérifier et afficher les produits dont le stock est // insuffisant stock.CheckStock(); } }
Sortie:
Ajouter trois produits en stock: Vérifier la disponibilité des stocks: Clavier est en rupture de stock. La quantité actuelle: 70 Tablette est en rupture de stock. La quantité actuelle: 40 Supprimer la tablette du stock! Vérifier à nouveau la disponibilité des stocks: Clavier est en rupture de stock. La quantité actuelle: 70
Exercice 2:
Écrivez un programme C# pour créer une classe appelée « Ecole » avec des attributs pour les étudiants, les enseignants et les classes, et des méthodes pour ajouter et supprimer des étudiants et des enseignants, et pour créer des classes (cours).
Diagrame de classe:

// Importer les classes nécessaires using System; using System.Collections.Generic; // Définir la classe Ecole class Ecole { // Champ privé pour stocker une liste d'étudiants private List<Etudiant> etudiants; // Champ privé pour stocker une liste d'enseignants private List<Enseignant> enseignants; // Champ privé pour stocker une liste de classes private List<Classe> classes; // Constructeur pour initialiser les listes public Ecole() { this.etudiants = new List<Etudiant>(); this.enseignants = new List<Enseignant>(); this.classes = new List<Classe>(); } // Méthode pour ajouter un étudiant public void AddEtudiant(Etudiant student) { etudiants.Add(student); } // Méthode pour supprimer un étudiant public void RemoveEtudiant(Etudiant student) { etudiants.Remove(student); } // Méthode pour ajouter un enseignant public void AddEnseignant(Enseignant teacher) { enseignants.Add(teacher); } // Méthode pour supprimer un enseignant public void RemoveEnseignant(Enseignant teacher) { enseignants.Remove(teacher); } // Méthode pour ajouter une classe public void AddClasse(Classe schoolClass) { classes.Add(schoolClass); } // Méthode pour supprimer une classe public void RemoveClasse(Classe schoolClass) { classes.Remove(schoolClass); } // Méthode pour récupérer la liste des étudiants public List<Etudiant> GetEtudiants() { return etudiants; } // Méthode pour récupérer la liste des enseignants public List<Enseignant> GetEnseignants() { return enseignants; } // Méthode pour récupérer la liste des classes public List<Classe> GetClasses() { return classes; } } // Définir la classe Etudiant class Etudiant { // Champs privés pour stocker le nom et l'âge de l'étudiant private string nom; private int age; // Constructeur pour initialiser les champs public Etudiant(string nom, int age) { this.nom = nom; this.age = age; } // Getter et Setter pour le nom public string GetNom() { return nom; } public void SetNom(string nom) { this.nom = nom; } // Getter et Setter pour l'âge public int GetAge() { return age; } public void SetAge(int age) { this.age = age; } } // Définir la classe Enseignant class Enseignant { // Champs privés pour stocker le nom et la matière private string nom; private string matiere; // Constructeur pour initialiser les champs public Enseignant(string nom, string matiere) { this.nom = nom; this.matiere = matiere; } // Getter et Setter pour le nom public string GetNom() { return nom; } public void SetNom(string nom) { this.nom = nom; } // Getter et Setter pour la matière public string GetMatiere() { return matiere; } public void SetMatiere(string matiere) { this.matiere = matiere; } } // Définir la classe Classe class Classe { // Champs privés pour stocker le nom de la classe, l'enseignant // et la liste d'étudiants private string nomClasse; private Enseignant enseignant; private List<Etudiant> etudiants; // Constructeur pour initialiser les champs public Classe(string nomClasse, Enseignant enseignant) { this.nomClasse = nomClasse; this.enseignant = enseignant; this.etudiants = new List<Etudiant>(); } // Getter et Setter pour le nom de la classe public string GetNomClasse() { return nomClasse; } public void SetNomClasse(string nomClasse) { this.nomClasse = nomClasse; } // Getter et Setter pour l'enseignant public Enseignant GetEnseignant() { return enseignant; } public void SetEnseignant(Enseignant enseignant) { this.enseignant = enseignant; } // Méthode pour récupérer la liste des étudiants public List<Etudiant> GetEtudiants() { return etudiants; } // Méthode pour ajouter un étudiant à la classe public void AddEtudiant(Etudiant e) { etudiants.Add(e); } // Méthode pour supprimer un étudiant de la classe public void RemoveEtudiant(Etudiant e) { etudiants.Remove(e); } } // Définir la classe Main class Program { static void Main(string[] args) { // Créer une nouvelle instance de la classe Ecole Ecole ecole = new Ecole(); // Créer des objets Etudiant Etudiant et1 = new Etudiant("Alex Babtise", 20); Etudiant et2 = new Etudiant("Bob Firok", 25); Etudiant et3 = new Etudiant("Emily Taylor", 22); Etudiant et4 = new Etudiant("Ali Binani", 23); // Ajouter les étudiants à l'école ecole.AddEtudiant(et1); ecole.AddEtudiant(et2); ecole.AddEtudiant(et3); ecole.AddEtudiant(et4); // Créer des objets Enseignant Enseignant es1 = new Enseignant("Yohan Sinor", "Math"); Enseignant es2 = new Enseignant("Thomas Fiza", "Anglais"); Enseignant es3 = new Enseignant("Olivier Bibo", "Science"); // Ajouter les enseignants à l'école ecole.AddEnseignant(es1); ecole.AddEnseignant(es2); ecole.AddEnseignant(es3); // Créer des objets Classe Classe classMath = new Classe("Mathematics", es1); classMath.AddEtudiant(et1); classMath.AddEtudiant(et2); classMath.AddEtudiant(et3); classMath.AddEtudiant(et4); Classe classAnglais = new Classe("Anglais", es2); classAnglais.AddEtudiant(et1); classAnglais.AddEtudiant(et2); classAnglais.AddEtudiant(et3); Classe classScience = new Classe("Science", es3); classScience.AddEtudiant(et1); classScience.AddEtudiant(et2); classScience.AddEtudiant(et3); classScience.AddEtudiant(et4); // Ajouter les classes à l'école ecole.AddClasse(classMath); ecole.AddClasse(classAnglais); ecole.AddClasse(classScience); // Afficher des informations sur l'école Console.WriteLine("Informations sur l'école:"); Console.WriteLine("Nombre d'étudiants: " + ecole.GetEtudiants().Count); Console.WriteLine("Nombre d'enseignants: " + ecole.GetEnseignants().Count); Console.WriteLine("Nombre de classes: " + ecole.GetClasses().Count); Console.WriteLine(); // Afficher les informations sur les cours de mathématiques Console.WriteLine("Informations sur les cours de mathématiques:"); Console.WriteLine("Nom de Classe: " + classMath.GetNomClasse()); Console.WriteLine("Enseignant: " + classMath.GetEnseignant().GetNom()); Console.WriteLine("Nombre d'étudiants: " + classMath.GetEtudiants().Count); Console.WriteLine(); // Afficher les informations sur les cours d'anglais Console.WriteLine("Informations sur les cours d'anglais:"); Console.WriteLine("Nom de Classe: " + classAnglais.GetNomClasse()); Console.WriteLine("Enseignant: " + classAnglais.GetEnseignant().GetNom()); Console.WriteLine("Nombre d'étudiants: " + classAnglais.GetEtudiants().Count); Console.WriteLine(); // Afficher les informations sur les cours de sciences Console.WriteLine("Informations sur les cours de sciences:"); Console.WriteLine("Nom de Classe: " + classScience.GetNomClasse()); Console.WriteLine("Enseignant: " + classScience.GetEnseignant().GetNom()); Console.WriteLine("Nombre d'étudiants: " + classScience.GetEtudiants().Count); Console.WriteLine(); // Supprimer un étudiant, un enseignant et une classe ecole.RemoveEtudiant(et1); ecole.RemoveEnseignant(es2); ecole.RemoveClasse(classMath); // Afficher les informations mises à jour après suppression Console.WriteLine("Informations sur l'école après suppression d'un élève, d'un enseignant et d'une classe:"); Console.WriteLine("Nombre d'étudiants: " + ecole.GetEtudiants().Count); Console.WriteLine("Nombre d'enseignants: " + ecole.GetEnseignants().Count); Console.WriteLine("Nombre de classes: " + ecole.GetClasses().Count); } }
Sortie:
Informations sur l'école: Nombre d'étudiants: 4 Nombre d'enseignants: 3 Nombre de classes: 3 Informations sur les cours de mathématiques: Nom de Class: Mathematics Enseignant: Yohan Sinor Nombre d'étudiants: 4 Informations sur les cours d'anglais: Nom de Class: Anglais Enseignant: Thomas Fiza Nombre d'étudiants: 3 Informations sur les cours de sciences: Nom de Class: Science Enseignant: Olivier Bibo Nombre d'étudiants: 4 Informations sur l'école après suppression d'un élève, d'un enseignant et d'une classe: Nombre d'étudiants: 3 Nombre d'enseignants: 2 Nombre de classes: 2
Exercice 3:
Écrire un programme C# pour créer une classe appelée « BiblioMusicale » avec une collection de chansons et des méthodes pour ajouter et supprimer des chansons, et pour jouer une chanson au hasard.
Diagrame de classe:

// Importer les bibliothèques nécessaires using System; using System.Collections.Generic; // Définir la classe BiblioMusicale class BiblioMusicale { // Champ privé pour stocker une liste de chansons private List<Chanson> chansons; // Constructeur pour initialiser la liste des chansons public BiblioMusicale() { // Créer une nouvelle liste pour stocker les objets Chanson chansons = new List<Chanson>(); } // Méthode pour ajouter une chanson à la bibliothèque public void AddChanson(Chanson song) { // Ajouter la chanson fournie à la liste des chansons chansons.Add(song); } // Méthode pour supprimer une chanson de la bibliothèque public void RemoveChanson(Chanson song) { // Supprimer la chanson fournie de la liste des chansons chansons.Remove(song); } // Méthode pour obtenir la liste de toutes les chansons de la // bibliothèque public List<Chanson> GetChansons() { // Retourner la liste des chansons return chansons; } // Méthode pour lire une chanson aléatoire de la bibliothèque public void LireChansonAleatoire() { // Récupérer le nombre de chansons dans la bibliothèque int size = chansons.Count; // Vérifier si la bibliothèque est vide if (size == 0) { // Afficher un message s'il n'y a pas de chansons à lire Console.WriteLine("Il n'y a pas de chansons à lire."); return; // Quitter la méthode } // Créer un nouvel objet Random pour générer un nombre // aléatoire Random rand = new Random(); // Générer un index aléatoire dans l'intervalle de la liste // des chansons int index = rand.Next(size); // Afficher le titre et l'artiste de la chanson sélectionnée // de manière aléatoire Console.WriteLine("Lire: " + chansons[index].GetTitre() + " par " + chansons[index].GetArtist()); } } // Définir la classe Chanson class Chanson { // Champs privés pour stocker le titre et l'artiste de la chanson private string titre; private string artiste; // Constructeur pour initialiser les champs titre et artiste public Chanson(string titre, string artiste) { // Définir le champ titre avec le titre fourni this.titre = titre; // Définir le champ artiste avec l'artiste fourni this.artiste = artiste; } // Méthode Getter pour récupérer le titre de la chanson public string GetTitre() { // Retourner la valeur du champ titre return titre; } // Méthode pour modifier le titre de la chanson public void SetTitre(string titre) { // Définir le champ titre avec le titre fourni this.titre = titre; } // Méthode Getter pour récupérer l'artiste de la chanson public string GetArtist() { // Retourner la valeur du champ artiste return artiste; } // Méthode pour modifier le nom de l'artiste de la chanson public void SetArtist(string artiste) { // Définir le champ artiste avec l'artiste fourni this.artiste = artiste; } } // Définir la classe Main class MainClass { // Définir la méthode Main qui est le point d'entrée du programme public static void Main(string[] args) { // Créer une nouvelle instance de la classe BiblioMusicale BiblioMusicale biblio = new BiblioMusicale(); // Ajouter des chansons à la bibliothèque musicale biblio.AddChanson(new Chanson("Un clair de lune", "Jean Chérasse")); biblio.AddChanson(new Chanson("Cadet Rousselle", "André Hunebelle")); biblio.AddChanson(new Chanson("Help!", "Richard Lester")); biblio.AddChanson(new Chanson("Baisers volés", "François Truffaut")); biblio.AddChanson(new Chanson("Je t'aime", "Serge Gainsbourg")); biblio.AddChanson(new Chanson("Staying Alive", "Michel Blanc")); // Afficher toutes les chansons de la bibliothèque musicale Console.WriteLine("Toutes les chansons:"); foreach (Chanson chanson in biblio.GetChansons()) { Console.WriteLine(chanson.GetTitre() + " par " + chanson.GetArtist()); } Console.WriteLine("\nLecture d'une chanson aléatoire:"); // Lire et afficher trois fois une chanson choisie au hasard // dans la bibliothèque biblio.LireChansonAleatoire(); Console.WriteLine(); biblio.LireChansonAleatoire(); Console.WriteLine(); biblio.LireChansonAleatoire(); } }
Sortie:
Toutes les chansons: Un clair de lune par Jean Chérasse Cadet Rousselle par André Hunebelle Help! par Richard Lester Baisers volés par François Truffaut Je t'aime par Serge Gainsbourg Staying Alive par Michel Blanc Lecture d'une chanson aléatoire: Lire: Help! par Richard Lester Lire: Baisers volés par François Truffaut Lire: Help! par Richard Lester
Exercice 4:
Écrivez un programme C# pour créer une classe appelée 'Forme' avec des méthodes abstraites pour calculer la surface et le périmètre, et des sous-classes pour le 'Rectangle', le 'Cercle' et le 'Triangle'.
Diagrame de classe:

// Importer les bibliothèques nécessaires using System; // Définir la classe Forme comme une classe abstraite public abstract class Forme { // Méthode abstraite pour récupérer la surface de la forme // Cette méthode doit être implémentée par toute sous-classe de // Forme public abstract double GetSurface(); // Méthode abstraite permettant d'obtenir le périmètre de la // forme // Cette méthode doit être implémentée par toute sous-classe de // Forme public abstract double GetPerimeter(); } // Définir la classe Rectangle, qui hérite de la classe Forme public class Rectangle : Forme { // Champs privés pour stocker la longueur et la largeur du // rectangle private double longueur; private double largeur; // Constructeur pour initialiser la longueur et la largeur du // rectangle public Rectangle(double longueur, double largeur) { // Définir le champ longueur à la longueur fournie this.longueur = longueur; // Définir le champ largeur à la largeur fournie this.largeur = largeur; } // Méthode pour calculer et renvoyer la surface du rectangle public override double GetSurface() { // Calculer la surface en multipliant la longueur et la // largeur return longueur * largeur; } // Méthode pour calculer et renvoyer le périmètre du rectangle public override double GetPerimeter() { // Calculer le périmètre à l'aide de la formule 2 * (longueur // + largeur) return 2 * (longueur + largeur); } } // Définir la classe Cercle, qui hérite de la classe Forme public class Cercle : Forme { // Champ privé pour stocker le rayon du cercle private double rayon; // Constructeur pour initialiser le rayon du cercle public Cercle(double rayon) { // Attribuer au champ rayon le rayon fourni this.rayon = rayon; } // Méthode pour calculer et renvoyer la surface du cercle public override double GetSurface() { // Calculer la surface en utilisant la formule π * rayon^2 return Math.PI * rayon * rayon; } // Méthode de calcul du périmètre du cercle public override double GetPerimeter() { // Calculer le périmètre en utilisant la formule 2 * π * // rayon return 2 * Math.PI * rayon; } } // Définir la classe Triangle, qui hérite de la classe Forme public class Triangle : Forme { // Champs privés pour stocker les côtés du triangle private double c1; private double c2; private double c3; // Constructeur pour initialiser les côtés du triangle public Triangle(double c1, double c2, double c3) { this.c1 = c1; this.c2 = c2; this.c3 = c3; } // Méthode pour calculer et renvoyer la surface du triangle public override double GetSurface() { // Calculer le semi-périmètre double s = (c1 + c2 + c3) / 2; // Calculer la surface à l'aide de la formule de Heron return Math.Sqrt(s * (s - c1) * (s - c2) * (s - c3)); } // Méthode pour calculer et renvoyer le périmètre du triangle public override double GetPerimeter() { // Calculer le périmètre en additionnant les côtés return c1 + c2 + c3; } } // Définir la classe Main public class MainClass { // Définir la méthode Main qui est le point d'entrée du programme public static void Main(string[] args) { // Créer un rectangle de longueur 15 et de largeur 20 Forme rectangle = new Rectangle(15, 20); // Créer un cercle de rayon 5 Forme circle = new Cercle(5); // Créer un triangle dont les côtés sont 5, 7 et 9 Forme triangle = new Triangle(5, 7, 9); Console.WriteLine("\nSurface et périmètre de différentes formes:"); // Afficher les détails et calculs du rectangle Console.WriteLine("\nRectangle:"); Console.WriteLine("Surface: " + rectangle.GetSurface()); Console.WriteLine("Périmètre: " + rectangle.GetPerimeter()); // Afficher les détails et calculs du cercle Console.WriteLine("\nCercle:"); Console.WriteLine("Surface: " + circle.GetSurface()); Console.WriteLine("Périmètre: " + circle.GetPerimeter()); // Afficher les détails et calculs du triangle Console.WriteLine("\nTriangle:"); Console.WriteLine("Surface: " + triangle.GetSurface()); Console.WriteLine("Périmètre: " + triangle.GetPerimeter()); } }
Sortie:
Surface et périmètre de différentes formes: Rectangle: Surface: 300.0 Périmètre: 70.0 Cercle: Surface: 78.53981633974483 Périmètre: 31.41592653589793 Triangle: Surface: 17.41228014936585 Périmètre: 21.0
Exercice 5:
Écrire un programme C# pour créer une classe appelée « Film » avec des attributs pour le titre, le directeur, les acteurs et les avis, et des méthodes pour ajouter et récupérer des avis.
Diagrame de classe:

// Importer les classes List et Array du namespace System.Collections.Generic using System; using System.Collections.Generic; // Définir la classe Film public class Film { // Champs privés pour stocker le titre, le directeur, les acteurs // et les avis sur le film private string titre; private string directeur; private List<string> acteurs; private List<Avis> avis; // Constructeur pour initialiser le titre, le directeur et les // acteurs du film public Film(string titre, string directeur, List<string> acteurs) { this.titre = titre; this.directeur = directeur; this.acteurs = acteurs; this.avis = new List<Avis>(); } // Méthode pour ajouter un avis sur le film public void AddAvis(Avis a) { // Ajouter l'avis fourni à la liste des avis this.avis.Add(a); } // Méthode pour récupérer la liste de toutes les avis du film public List<Avis> GetAvis() { // Renvoyer la liste des avis return this.avis; } // Méthode pour récupérer le titre du film public string GetTitre() { // Retourner la valeur du champ titre return this.titre; } // Méthode pour récupérer le directeur du film public string GetDirecteur() { // Retourner la valeur du champ directeur return this.directeur; } // Méthode pour récupérer la liste des acteurs d'un film public List<string> GetActeurs() { // Retourner la liste des acteurs return this.acteurs; } } // Définir la classe Avis public class Avis { // Champs privés pour stocker le texte de l'avis, le nom de // l'avis et la note private string textAvis; private string nomAvis; private double note; // Constructeur pour initialiser le texte de l'avis, le nom de // l'avis et la note public Avis(string textAvis, string nomAvis, double note) { this.textAvis = textAvis; this.nomAvis = nomAvis; this.note = note; } // Méthode pour récupérer le texte de l'avis public string GetTextAvis() { // Retourner la valeur du champ textAvis return textAvis; } // Méthode pour récupérer le nom de l'avis public string GetNomAvis() { // Retourner la valeur du champ nomAvis return nomAvis; } // Méthode pour récupérer la note public double GetNote() { // Retourner la valeur du champ note return note; } } // Définir la classe Main public class MainClass { // Définir la méthode Main qui est le point d'entrée du programme public static void Main(string[] args) { // Créer un objet film Film f1 = new Film("La Roue", "Jean Servais", new List<string> { "Pierre Pelletier", "Pierre Mondy" }); // Créer des objets d'avis Avis avis1 = new Avis("Excellent film!", "Alex Babtise", 5.0); Avis avis2 = new Avis("Fortement recommandé!", "Jean Zino", 4.5); Avis avis3 = new Avis("Un film magnifique", "Bob Polib", 4.0); // Ajouter un avis sur f1 f1.AddAvis(avis1); f1.AddAvis(avis2); f1.AddAvis(avis3); // Afficher tous les avis sur 'La Roue' Console.WriteLine("\nAvis pour '" + f1.GetTitre() + "':"); foreach (Avis a in f1.GetAvis()) { Console.WriteLine(a.GetTextAvis() + " par " + a.GetNomAvis() + " - " + a.GetNote()); } } }
Sortie:
Avis pour 'La Roue': Excellent film! par Alex Babtise - 5.0 Fortement recommandé! par Jean Zino - 4.5 Un film magnifique par Bob Polib - 4.0
Éditeur de code C#: Testez votre code en ligne!
Exercices corrigés C# - Programmation Orientée Objet | Partie 2
Exercices corrigés C# - Programmation Orientée Objet | Partie 3
Exercices corrigés C# - Programmation Orientée Objet | Partie 4
Exercices corrigés C# - Programmation Orientée Objet | Partie 5
Exercices corrigés C# - Programmation Orientée Objet | Partie 6

- Exercice C# Corrigé – Partie 1
- Exercice C# Corrigé – Partie 2
- Exercices corrigés C# – Programmation Orientée Objet | Partie 1
- Exercices corrigés C# – Programmation Orientée Objet | Partie 2
- Exercices corrigés C# – Programmation Orientée Objet | Partie 3
- Exercices corrigés C# – Programmation Orientée Objet | Partie 4
- Exercices corrigés C# – Programmation Orientée Objet | Partie 5
- Exercices corrigés C# – Programmation Orientée Objet | Partie 6
- Exercice C# Corrigé – POO