Exercices corrigés C# – Programmation Orientée Objet | Partie 2
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:
Écrivez un programme C# pour créer une classe appelée « FeuDeCirculation » avec des attributs pour la couleur et la durée, et des méthodes pour changer la couleur et vérifier si le feu est rouge ou vert.
Diagrame de classe:

// Importer les bibliothèques nécessaires pour les collections
using System;
// Définir la classe FeuDeCirculation
class FeuDeCirculation
{
// Déclarer une variable privée pour stocker la couleur du feu de
// circulation
private string couleur;
// Déclarer une variable privée pour stocker la durée du feu en
// secondes
private int duree;
// Constructeur pour la classe FeuDeCirculation
public FeuDeCirculation(string couleur, int duree)
{
// Initialiser la couleur du feu de circulation
this.couleur = couleur;
// Initialiser la durée du feu de circulation
this.duree = duree;
}
// Méthode pour changer la couleur du feu de circulation
public void ChangerCouleur(string nouvelleCouleur)
{
// Mettre à jour la variable couleur avec la nouvelle couleur
couleur = nouvelleCouleur;
}
// Méthode pour vérifier si le feu est rouge
public bool EstRouge()
{
// Retourne true si la couleur est rouge, sinon retourne
// false
return couleur == "Rouge";
}
// Méthode pour vérifier si le feu est vert
public bool EstVert()
{
// Retourne true si la couleur est verte, sinon retourne
// false
return couleur == "Vert";
}
// Méthode pour obtenir la durée du feu de circulation
public int GetDuree()
{
// Renvoyer la valeur de la durée
return duree;
}
// Méthode pour définir la durée du feu de circulation
public void SetDuree(int duree)
{
// Mettre à jour la variable durée avec la nouvelle valeur
this.duree = duree;
}
}
// Définir la classe Main
class MainClass
{
// Définir la méthode Main qui est le point d'entrée du programme
static void Main(string[] args)
{
// Créer un nouvel objet FeuDeCirculation avec une couleur
// initiale 'Rouge' et une durée de 30 secondes
FeuDeCirculation fc = new FeuDeCirculation("Rouge", 30);
// Afficher si le feu est rouge
Console.WriteLine("Le feu est rouge: " + fc.EstRouge());
// Afficher si le feu est vert
Console.WriteLine("Le feu est vert: " + fc.EstVert());
// Changer la couleur du feu de circulation en 'Vert'
fc.ChangerCouleur("Vert");
// Afficher si le feu de circulation est maintenant vert
Console.WriteLine("Le feu de circulation est maintenant vert: " + fc.EstVert());
// Afficher la durée du feu de circulation
Console.WriteLine("La durée du feu est: " + fc.GetDuree());
// Définir une nouvelle durée pour le feu de circulation à 15
// secondes
fc.SetDuree(15);
// Afficher la durée actualisée du feu de circulation
Console.WriteLine("La durée du feu est maintenant: " + fc.GetDuree());
}
}
Sortie:
Le feu est rouge: true Le feu est vert: false Le feu de circulation est maintenant vert: true La durée du feu est: 30 La durée du feu est maintenant: 15
Exercice 2:
Écrire un programme C# pour créer une classe appelée « Employee » avec un nom, un salaire, une date d’embauche et une méthode pour calculer les années de service.
Diagrame de classe:

// Importer les classes nécessaires du package System
using System;
using System.Globalization;
// Définir la classe Employee
class Employee
{
// Déclarer une variable privée pour stocker le nom de l'employé
private string nom;
// Déclarer une variable privée pour stocker le salaire de
// l'employé
private double salaire;
// Déclarer une variable privée pour stocker la date d'embauche
// de l'employé
private DateTime datEmbauche;
// Constructeur pour la classe Employee
public Employee(string nom, double salaire, DateTime datEmbauche)
{
// Initialiser le nom de l'employé
this.nom = nom;
// Initialiser le salaire de l'employé
this.salaire = salaire;
// Initialiser la date d'embauche de l'employé
this.datEmbauche = datEmbauche;
}
// Méthode pour récupérer le nom de l'employé
public string GetNom()
{
// Renvoyer le nom de l'employé
return nom;
}
// Méthode pour définir le nom de l'employé
public void SetNom(string nom)
{
// Mettre à jour la variable nom avec la nouvelle
// valeur
this.nom = nom;
}
// Méthode pour récupérer le salaire de l'employé
public double GetSalaire()
{
// Renvoyer le salaire de l'employé
return salaire;
}
// Méthode pour définir le salaire de l'employé
public void SetSalaire(double salaire)
{
// Mettre à jour la variable salaire avec la nouvelle valeur
this.salaire = salaire;
}
// Méthode pour récupérer la date d'embauche de l'employé
public DateTime GetDatEmbauche()
{
// Renvoyer la date d'embauche de l'employé
return datEmbauche;
}
// Méthode pour définir la date d'embauche de l'employé
public void SetDatEmbauche(DateTime datEmbauche)
{
// Mettre à jour la variable datEmbauche avec la nouvelle valeur
this.datEmbauche = datEmbauche;
}
// Méthode de calcul des années de service de l'employé
public int CalculerAnneeService()
{
// Calculer la période entre la date d'embauche et la date
// actuelle et renvoyer le nombre d'années
return DateTime.Now.Year - datEmbauche.Year;
}
// Méthode pour afficher les détails de l'employé
public void AfficherEmployee()
{
// Afficher le nom de l'employé
Console.WriteLine("\nNom: " + nom);
// Afficher le salaire de l'employé
Console.WriteLine("Salaire: " + salaire);
// Afficher la date d'embauche de l'employé
Console.WriteLine("Date d'embauche: " + datEmbauche.ToString("yyyy-MM-dd"));
}
}
// Définir la classe Main
class MainClass
{
// Définir la méthode Main qui est le point d'entrée du programme
static void Main(string[] args)
{
// Créer un nouvel objet Employee nommé emp1
Employee emp1 = new Employee("Alex Babtise", 80000, DateTime.ParseExact("2024-05-01", "yyyy-MM-dd", CultureInfo.InvariantCulture));
// Créer un nouvel objet Employee nommé emp2
Employee emp2 = new Employee("Bob Kimo", 40000, DateTime.ParseExact("2022-03-01", "yyyy-MM-dd", CultureInfo.InvariantCulture));
// Afficher les détails de l'employé 1
emp1.AfficherEmployee();
// Afficher les années de service de l'employé 1
Console.WriteLine("Années de service: " + emp1.CalculerAnneeService());
// Afficher les détails de l'employé 2
emp2.AfficherEmployee();
// Afficher les années de service de l'employé 2
Console.WriteLine("Années de service: " + emp2.CalculerAnneeService());
}
}
Sortie:
Nom: Alex Babtise Salaire: 80000.0 Date d'embauche: 2024-05-01 Années de service: 0 Nom: Bob Kimo Salaire: 40000.0 Date d'embauche: 2022-03-01 Années de service: 2
Exercice 3:
Écrire un programme C# pour créer une classe appelée « Etudiant » avec un nom, une note et des cours, ainsi que des méthodes pour ajouter et supprimer des cours.
Diagrame de classe:

// Importer les classes nécessaires
using System;
using System.Collections.Generic;
// Définir la classe Etudiant
class Etudiant
{
// Déclarer une variable privée pour stocker le nom de l'étudiant
private string nom;
// Déclarer une variable privée pour stocker note de l'étudiant
private int note;
// Déclarer une liste privée pour stocker les cours de l'étudiant
private List<string> cours;
// Constructeur pour la classe Etudiant
public Etudiant(string nom, int note)
{
// Initialiser le nom de l'étudiant
this.nom = nom;
// Initialiser la note de l'étudiant
this.note = note;
// Initialiser la liste de cours
this.cours = new List<string>();
}
// Méthode pour récupérer le nom de l'étudiant
public string GetNom()
{
// Retourner le nom de l'étudiant
return nom;
}
// Méthode pour récupérer la note de l'étudiant
public int GetNote()
{
// Retourner la note de l'étudiant
return note;
}
// Méthode pour récupérer la liste de cours de l'étudiant
public List<string> GetCours()
{
// Retourner la liste de cours
return cours;
}
// Méthode pour ajouter un cours à la liste des cours de
// l'étudiant
public void AjouterCours(string c)
{
// Ajouter le cours donné à la liste des cours
cours.Add(c);
}
// Méthode pour supprimer un cours de la liste des cours de
// l'étudiant
public void SupprimerCours(string c)
{
// Supprimer le cours donné de la liste des cours
cours.Remove(c);
}
// Méthode pour afficher les détails de l'étudiant
public void AfficherEtudiant()
{
// Afficher le nom de l'étudiant
Console.WriteLine("Nom: " + nom);
// Afficher la note de l'étudiant
Console.WriteLine("Note: " + note);
}
}
// Définir la classe Main
class MainClass
{
// Définir la méthode Main qui est le point d'entrée du programme
static void Main(string[] args)
{
// Créer un nouvel objet Etudiant nommé e1
Etudiant e1 = new Etudiant("Alex Babtise", 18);
// Créer un nouvel objet Etudiant nommé e2
Etudiant e2 = new Etudiant("Bob Kimo", 16);
// Afficher un en-tête pour les détails de l'étudiant
Console.WriteLine("Détails de l'étudiant:");
// Afficher les données de l'étudiant 1
e1.AfficherEtudiant();
// Afficher les données de l'étudiant 2
e2.AfficherEtudiant();
// Afficher un message indiquant que des cours sont ajoutés
// pour l'étudiant 1
Console.WriteLine("Ajouter des cours pour " + e1.GetNom());
e1.AjouterCours("Mathématiques");
e1.AjouterCours("Biologie");
e1.AjouterCours("Histoire");
// Afficher le nom de e1 et sa liste de cours
Console.WriteLine("Les cours de " + e1.GetNom() + " : " + string.Join(", ", e1.GetCours()));
// Afficher un message indiquant que des cours sont ajoutés
// pour l'étudiant 2
Console.WriteLine("\nAjouter des cours pour " + e2.GetNom());
e2.AjouterCours("Anglais");
e2.AjouterCours("Géologie");
e2.AjouterCours("Physique");
// Afficher le nom de e2 et sa liste de cours
Console.WriteLine("Les cours de " + e2.GetNom() + " : " + string.Join(", ", e2.GetCours()));
// Afficher un message indiquant que le cours 'Biologie' est
// supprimé pour e1
Console.WriteLine("\nSuppression du cours 'Biologie' pour " + e1.GetNom());
// Supprimer le cours 'Biologie' des cours de e1
e1.SupprimerCours("Biologie");
// Afficher le nom de e1 et sa liste de cours mise à jour
Console.WriteLine("Les cours de " + e1.GetNom() + " : " + string.Join(", ", e1.GetCours()));
}
}
Sortie:
Détails de l'étudiant: Nom: Alex Babtise Note: 18 Nom: Bob Kimo Note: 16 Ajouter des cours pour Alex Babtise Les cours de Alex Babtise : [Mathématiques, Biologie, Histoire] Ajouter des cours pour Bob Kimo Les cours de Bob Kimo : [Anglais, Géologie, Physique] Suppression du cours 'Biologie' pour Alex Babtise Les cours de Alex Babtise : [Mathématiques, Histoire]
Exercice 4:
Écrire un programme C# pour créer une classe appelée « Bibliotheque » avec une collection de livres et des méthodes pour ajouter et supprimer des livres.
Diagrame de classe:

// Importer les classes nécessaires
using System;
using System.Collections.Generic;
// Définir la classe Livre
class Livre
{
// Attribut privé pour stocker le titre du livre
private string titre;
// Attribut privé pour stocker l'auteur du livre
private string auteur;
// Constructeur pour initialiser les champs titre et auteur
public Livre(string titre, string auteur)
{
// Attribuer le paramètre titre au champ titre
this.titre = titre;
// Attribuer le paramètre auteur au champ auteur
this.auteur = auteur;
}
// Méthode pour récupérer le titre
public string GetTitre()
{
// Retourner la valeur du champ titre
return titre;
}
// Méthode Setter pour le titre
public void SetTitre(string titre)
{
// Attribuer le paramètre titre au champ titre
this.titre = titre;
}
// Méthode pour récupérer l'auteur
public string GetAuteur()
{
// Retourner la valeur du champ auteur
return auteur;
}
// Méthode Setter pour l'auteur
public void SetAuteur(string auteur)
{
// Attribuer le paramètre auteur au champ auteur
this.auteur = auteur;
}
}
// Définir la classe Bibliotheque
class Bibliotheque
{
// Attribut privé pour stocker une liste d'objets Livre
private List<Livre> livres;
// Constructeur pour initialiser la variable livres
public Bibliotheque()
{
// Créer une nouvelle liste pour contenir les objets Livre
livres = new List<Livre>();
}
// Méthode pour ajouter un livre à la liste des livres
public void AddLivre(Livre livre)
{
// Ajouter le livre spécifié à la liste des livres
livres.Add(livre);
}
// Méthode pour supprimer un livre de la liste des livres
public void RemoveLivre(Livre livre)
{
// Supprimer le livre spécifié de la liste des livres
livres.Remove(livre);
}
// Méthode pour récupérer la liste des livres
public List<Livre> GetLivres()
{
// Retourner la liste des livres
return livres;
}
}
// Définir la classe Main
class MainClass
{
// 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 Bibliotheque
Bibliotheque biblio = new Bibliotheque();
// Créer de nouveaux objets Livre avec le titre et l'auteur
Livre livre1 = new Livre("Les Misérables", "Victor Hugo");
Livre livre2 = new Livre("Nana", "Émile Zola");
Livre livre3 = new Livre("Les Fleurs du mal", "Baudelaire");
Livre livre4 = new Livre("Le Cid", "Corneille");
// Ajouter les livres à la biblio
biblio.AddLivre(livre1);
biblio.AddLivre(livre2);
biblio.AddLivre(livre3);
biblio.AddLivre(livre4);
Console.WriteLine("Livres dans la bibliothéque:");
// Parcourir la liste des livres de la biblio
foreach (Livre livre in biblio.GetLivres())
{
// Afficher le titre et l'auteur de chaque livre
Console.WriteLine(livre.GetTitre() + " par " + livre.GetAuteur());
}
// Supprimer un livre de la biblio
biblio.RemoveLivre(livre2);
Console.WriteLine("\nLivres dans la bibliothéque après suppression de " + livre2.GetTitre() + ":");
// Parcourir la liste mise à jour des livres dans la biblio
foreach (Livre livre in biblio.GetLivres())
{
// Afficher le titre et l'auteur de chaque livre
Console.WriteLine(livre.GetTitre() + " par " + livre.GetAuteur());
}
}
}
Sortie:
Livres dans la bibliothéque: Les Misérables par Victor Hugo Nana par Émile Zola Les fleurs du mal par Baudelaire Le Cid par Corneille Livres dans la biblio après suppression Nana: Les Misérables par Victor Hugo Les fleurs du mal par Baudelaire Le Cid par Corneille
Exercice 5:
Écrire un programme C# pour créer une classe appelée « Avion » avec un numéro de vol, une destination et des attributs d’heure de départ, ainsi que des méthodes pour vérifier l’état et le retard du vol.
Diagrame de classe:

// Importer les classes nécessaires
using System;
// Définir la classe Avion
class Avion
{
// Attribut privé pour stocker le numéro de vol
private string numVol;
// Attribut privé pour stocker la destination
private string destination;
// Attribut privé pour stocker l'heure de départ prévue
private DateTime heureDepart;
// Attribut privé pour stocker le temps de retard en minutes
private int tempsRetard;
// Constructeur pour initialiser le numéro de vol, la destination
// et l'heure de départ prévue
public Avion(string numVol, string destination, DateTime heureDepart)
{
// Attribuer le paramètre numVol au champ numVol
this.numVol = numVol;
// Attribuer le paramètre destination au champ destination
this.destination = destination;
// Attribuer le paramètre heureDepart au champ heureDepart
this.heureDepart = heureDepart;
// Initialiser le temps de retard à 0
this.tempsRetard = 0;
}
// Méthode pour obtenir le numéro de vol
public string GetNumVol()
{
return numVol;
}
// Méthode pour définir le numéro de vol
public void SetNumVol(string numVol)
{
this.numVol = numVol;
}
// Méthode pour obtenir la destination
public string GetDestination()
{
return destination;
}
// Méthode pour définir la destination
public void SetDestination(string destination)
{
this.destination = destination;
}
// Méthode pour obtenir l'heure de départ
public DateTime GetHeureDepart()
{
return heureDepart;
}
// Méthode pour définir l'heure de départ
public void SetHeureDepart(DateTime heureDepart)
{
this.heureDepart = heureDepart;
}
// Méthode pour obtenir le temps de retard
public int GetTempsRetard()
{
return tempsRetard;
}
// Méthode pour fixer un délai et mettre à jour l'heure de départ
// prévue
public void Retarder(int minutes)
{
this.tempsRetard = minutes;
this.heureDepart = this.heureDepart.AddMinutes(minutes);
}
// Méthode pour vérifier le statut du vol
public void CheckStatutVol()
{
if (tempsRetard == 0)
{
Console.WriteLine("Le vol " + numVol + " est à l'heure.");
}
else
{
Console.WriteLine("Le vol " + numVol + " est retardé de " + tempsRetard + " minutes.");
}
}
}
// Définir la classe Main
class MainClass
{
// Définir la méthode Main qui est le point d'entrée du programme
static void Main(string[] args)
{
// Créer de nouveaux objets Avion
Avion a1 = new Avion("ABC123", "Paris", new DateTime(2024, 10, 4, 11, 30, 0));
Avion a2 = new Avion("POM569", "CasaBlanca", new DateTime(2024, 10, 4, 15, 0, 0));
Avion a3 = new Avion("UYT852", "Bruxelles", new DateTime(2024, 10, 4, 12, 0, 0));
// Afficher le statut initial du vol
Console.WriteLine("Statut du vol:");
a1.CheckStatutVol();
a2.CheckStatutVol();
a3.CheckStatutVol();
// Retarder les vols
a1.Retarder(30);
a2.Retarder(90);
// Afficher l'état actuel du vol après les retards
Console.WriteLine("\nStatut actuel du vol:");
a1.CheckStatutVol();
a2.CheckStatutVol();
a3.CheckStatutVol();
}
}
Sortie:
Statut du vol: Le vol ABC123 est à l'heure. Le vol POM569 est à l'heure. Le vol UYT852 est à l'heure. Statut actuel du vol: Le vol ABC123 est retardé de 30 minutes. Le vol POM569 est retardé de 90 minutes. Le vol UYT852 est à l'heure.
É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
QCM C# – Framework .NET – Partie 1QCM sur C# avec des réponses pour la préparation des entretiens d’embauche, des tests en ligne, aux examens et aux certifications. Ces questions et réponses…Lire plus
- 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


