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:

Solution:

// 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:

Solution:

// 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:

Solution:

// 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:

Solution:

// 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:

Solution:

// 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!

qcm-csharp

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *