Exercice C# Corrigé – POO

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.
 
 
Vous pouvez utiliser l’éditeur C# suivant pour résoudre les exercices suivants: (Cliquez sur l’onglet input si vous souhaitez entrer des valeurs, cliquez sur Run pour exécuter votre programme, le résultat sera affichée sur l’onglet output).
 

 

Exercice 1:

Votre tâche consiste à créer un constructeur Cercle qui crée un cercle avec un rayon fourni par un argument. Les cercles construits doivent avoir deux getters GetArea() (PIr ^ 2) et GetPerimeter() (2PI * r) qui donnent à la fois l’aire et le périmètre respectifs.


Exemple:

Circle c = new Circle(6.25);
c.GetArea();             // Doit retourner 122.718463030851.
c.GetPerimeter();        // Doit retourner 39.2699081698724.
En géométrie, l’aire d’un cercle d’un rayon r est πr2. Ici, la lettre grecque π représente une constante, approximativement égale à 3,14159, et le périmètre d’un cercle d’un rayon r est 2πr.
Solution:

using System;

class Cercle {
	public double Rayon;
  
  public Cercle(double rayon){
    Rayon = rayon;
  }
  
  public double GetArea()
  {
    return Rayon * Rayon * Math.PI;
  }
  
  public double GetPerimeter(){
    return 2 * Rayon * Math.PI;
  }
}

public class Program{
  public static void Main(){
    var c = new Cercle(6.25);
    Console.WriteLine(c.GetArea());
    Console.WriteLine(c.GetPerimeter());
  }
}
 

Exercice 2:

– Créez une classe « Person »
– Créez une classe « Student » et une autre classe « Teacher », les deux héritent de la classe « Person ».
– La classe « Student » aura une méthode publique « GoToClasses », qui affichera à l’écran « I’m going to class. ».
– La classe « Teacher » aura une méthode publique « Explain », qui affichera à l’écran « Explanation begins ». En plus, il aura un attribut privé « subject » de type string.
– La classe « Person » doit avoir une méthode « SetAge(int n) » qui indiquera la valeur de leur âge (par exemple, 15 years old).
– La classe « Student » aura une méthode publique « DisplayAge » qui écrira sur l’écran « My age is: XX years old ».
– Vous devez créer une autre classe de test appelée « Test » qui contiendra « Main » et:
– Créez un objet Person et faites-lui dire « Hello »
– Créer un objet Student, définir son âge à 15 ans, faites-lui dire « Hello », « I’m going to class. » et afficher son âge
– Créez un objet Teacher, 40 ans, demandez-lui de dire « Hello » puis commence l’explication.
 


Exemple:

Hello
I’m going to class.
Hello
My age is: 15 years old
Hello
Explanation begins
Solution:

using System;

//La classe Person
class Person
{
    protected int age;

    public void sayHello()
    {
        Console.WriteLine("Hello");
    }

    public void SetAge(int n)
    {
        age = n;
    }
}

//La classe Student
class Student : Person
{
    public void GoToClasses()
    {
        Console.WriteLine("I’m going to class.");
    }
    public void DisplayAge()
    {
        Console.WriteLine("My age is: {0} years old", age);
    }
}

//La classe Teacher
class Teacher : Person
{
    private string subject;

    public void Explain()
    {
        Console.WriteLine("Explanation begins");
    }
}

//Classe de test
class Test
{
    static void Main()
    {
        Person p = new Person();
        p.sayHello();

        Student s = new Student();
        s.GoToClasses();
        s.SetAge(15);
        s.sayHello();
        s.DisplayAge();

        Teacher t = new Teacher();
        t.SetAge(40);
        t.sayHello();
        t.Explain();
    }
}
 

Exercice 3:

Un nombre complexe se compose de deux parties: la partie réelle et la partie imaginaire. Dans un nombre comme a + bi (1-2i, par exemple), la partie réelle serait 1 et la partie imaginaire serait -2.

Créez une classe Complex avec:

– Un constructeur pour définir les valeurs de la partie réelle et de la partie imaginaire.
– Setters et getters pour les deux.
– Une méthode « ToString », qui retournerait « (1, -2) »
– Une méthode « GetMagnitude » pour renvoyer l’ordre de grandeur du nombre complexe (racine carrée de a2 + b2)
– Une méthode « Sum », pour additionner deux nombres complexes (la partie réelle sera la somme des deux parties réelles, et la partie imaginaire sera la somme des deux parties imaginaires)

Exemple:

Le nombre est: (4,8)
Le nombre est: (4,6)
L'ordre de grandeur: 7.21110255092798
Après l'addition: (2,9)
Solution:

using System;

class Complex
{
	public double a, b;

	public Complex(double real, double imag)
	{
		a = real;
		b = imag;
	}

	public double GetReal()
	{
		return a;
	}

	public void SetReal(double a)
	{
		this.a = a;
	}

	public double GetImaginary()
	{
		return b;
	}

	public void SetImaginary(double b)
	{
		this.b = b;
	}

	public new string ToString()
	{
		return "("+a+","+b+")";
	}

	public double GetMagnitude()
	{
		return Math.Sqrt((a * a) + (b * b));
	}

	public void Sum(Complex c)
	{
		a += c.GetReal();
		b += c.GetImaginary();
	}
}

class Test
{
	static void Main()
	{
		Complex c1 = new Complex(4, 8);
		Console.WriteLine("Le nombre est: "+ c1.ToString());

		c1.SetImaginary(6);
		Console.WriteLine("Le nombre est: "+ c1.ToString());

		Console.Write("L'ordre de grandeur: ");
		Console.WriteLine(c1.GetMagnitude());

		Complex c2 = new Complex(-2, 3);
		c1.Sum(c2);
		Console.Write("Après l'addition: ");
		Console.WriteLine(c1.ToString());
	}
}
 

Exercice 4:

Créez une classe « House », avec un attribut « surface », un constructeur qui définit sa valeur et une méthode « Display » pour afficher « Je suis une maison, ma surface est de XXX m2 » (XXX: la valeur de surface). Incluez aussi des getters et des setters pour la surface.

La classe « House » contiendra une porte (Door). Chaque porte aura un attribut « color » (de type String), et une méthode « Display » qui affichera « Je suis une porte, ma couleur est bleu » (ou quelle que soit la couleur). Inclure un getter et un setter. Créez également la méthode « GetDoor » dans la classe « House ».

La classe « Apartment » est une sous-classe de la classe « House », avec une surface prédéfinie de 50m2.

Créez également une classe Person, avec un nom (de type String). Chaque personne aura une maison. La méthode « Display » pour une personne affichera son nom, les données de sa maison et les données de la porte de cette maison.

Écrivez un Main pour créer un Apartment, une personne pour y vivre et pour afficher les données de la personne.
 

des notions UML à savoir :

  • La composition peut être considérer comme une relation “fait partie de”, c’est à dire que si un objet Y fait partie d’un objet X alors Y ne peut pas exister sans X. Ainsi si X disparaît alors Y également.
  • L’agrégation peut être considérer comme une relation de type “a un”, c’est à dire que si un objet X a un objet Y alors Y peut vivre sans X.

 

Solution:

using System;

class House 
{
	protected int surface;
	protected Door door;

	public House(int surface) 
	{
		this.surface = surface;
		door = new Door();
	}
	
	public int Surface 
	{
		get { return surface; }
		set { surface = value; }
	}
	
	public Door Door
	{
		get { return door; }
		set { door = value; }
	}

	public virtual void Display() 
	{
		Console.WriteLine("Je suis une maison, ma surface est de {0} m2.",surface);
	}
}

class Door
{
	protected string color;

	public Door() 
	{
		color = "blue";
	}
	
	public Door(string color) 
	{
		this.color = color;
	}
	
	public string Color 
	{
		get { return color; }
		set { color = value; }
	}
	
	public void Display() 
	{
		Console.WriteLine("Je suis une porte, ma couleur est {0}.", color);
	}
}

class Apartment : House 
{
	public Apartment() : base (50)
	{

	}
	public override void Display()
	{
		Console.WriteLine("Je suis un appartement, ma surface est " + surface + " m2");
	}
}

class Person 
{
	protected string name;
	protected House house;

	public Person() 
	{
		name = "Thomas";
		house = new House(150);
	}

	public Person(string name, House house)
	{
		this.name = name;
		this.house = house;
	}

	public string Name 
	{
		get { return name; }
		set { name = value; }
	}

	public House House
	{
		get { return house; }
		set { house = value; }
	}

	public void Display() 
	{
		Console.WriteLine("Je m'appele {0}.",name);
		house.Display();
		house.Door.Display();
	}
}

class Test
{
	static void Main()
	{
		Apartment MyApartament = new Apartment();
		Person person = new Person();

		person.Name = "Thomas";
		person.House = MyApartament;
		person.Display();
	}
}
qcm-csharpQCM 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

Une réflexion sur “Exercice C# Corrigé – POO

  • mai 24, 2021 à 11:16
    Permalien

    Programme C# pour convertir une chaîne en minuscule. Je ne trouve pas s’il vous plait!

    Répondre

Laisser un commentaire

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