Menu
Coddy logo textTech

Récapitulatif - Calculateur de Formes

Fait partie de la section Programmation Orientée Objet du Journey C# de Coddy — leçon 30 sur 70.

challenge icon

Défi

Facile

Construisons un calculateur de formes qui rassemble tout ce que vous avez appris sur les interfaces et le polymorphisme. Vous allez créer un système où différentes formes peuvent être traitées de manière uniforme via une interface commune, démontrant ainsi la puissance du polymorphisme à l'exécution.

Vous organiserez votre code sur quatre fichiers :

  • IShape.cs : Définissez une interface nommée IShape dans l'espace de noms Shapes. Chaque forme doit être capable de calculer son aire et de se décrire elle-même. Déclarez deux méthodes : CalculateArea() retournant un double, et GetDescription() retournant une string.
  • Circle.cs : Créez une classe Circle dans l'espace de noms Shapes qui implémente IShape. Un cercle possède une propriété Radius (double) définie via son constructeur. La formule de l'aire est Math.PI * Radius * Radius. La description doit retourner "Circle with radius {Radius}".
  • Rectangle.cs : Créez une classe Rectangle dans l'espace de noms Shapes qui implémente IShape. Un rectangle possède des propriétés Width et Height (toutes deux double) définies via son constructeur. L'aire est simplement la largeur multipliée par la hauteur. La description doit retourner "Rectangle {Width}x{Height}".
  • Program.cs : Dans votre fichier principal, créez un cercle et un rectangle en utilisant les valeurs d'entrée, puis stockez-les dans un tableau de références IShape. Parcourez le tableau et, pour chaque forme, affichez sa description suivie de son aire arrondie à deux décimales. Cela démontre comment vous pouvez traiter des formes complètement différentes via la même interface !

Vous recevrez trois entrées :

  • Rayon du cercle (double)
  • Largeur du rectangle (double)
  • Hauteur du rectangle (double)

Affichez la sortie dans ce format pour chaque forme :

{GetDescription() result}
Area: {CalculateArea() rounded to 2 decimal places}

Par exemple, si les entrées sont 5, 4, et 6, la sortie devrait être :

Circle with radius 5
Area: 78.54
Rectangle 4x6
Area: 24.00

Remarquez comment votre boucle n'a pas besoin de savoir si elle traite un cercle ou un rectangle - elle appelle simplement les méthodes de l'interface et laisse le polymorphisme gérer le reste. C'est toute l'élégance de la programmation orientée interface !

Essayez vous-même

using System;
using Shapes;

class Program
{
    public static void Main(string[] args)
    {
        // Lire les valeurs d'entrée
        double circleRadius = Convert.ToDouble(Console.ReadLine());
        double rectWidth = Convert.ToDouble(Console.ReadLine());
        double rectHeight = Convert.ToDouble(Console.ReadLine());
        
        // TODO: Créer un objet Circle avec le rayon donné
        
        // TODO: Créer un objet Rectangle avec la largeur et la hauteur données
        
        // TODO: Créer un tableau de IShape contenant les deux formes
        
        // TODO: Parcourir le tableau et pour chaque forme :
        // - Afficher la description en utilisant GetDescription()
        // - Afficher "Area: " suivi de CalculateArea() arrondi à 2 décimales
    }
}

Toutes les leçons de Programmation Orientée Objet