0Pricing
C# Academy · Leçon

Conception (interfaces et héritage)

Concevez une API Shape simple avec une interface et une petite classe de base ; décidez ce qui relève du contrat et ce qui constitue un détail d’implémentation.

Conception (interfaces et héritage) est une leçon C# Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 3. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C# Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C# Academy comprend 3 leçons au total.

Vue d’ensemble du projet

Objectif : définir un contrat très simple et clair pour les formes.

  • Utiliser une interface pour le comportement
  • Garder une surface minimale
  • Permettre à de nombreuses formes de s’intégrer

Le contrat d’abord

Créez un petit contrat IShape avec Area() et Perimeter(). Les utilitaires peuvent dépendre de l’interface.

using System;

// Interface: minimal behavior all shapes must provide
public interface IShape
{
  double Area();
  double Perimeter();
}

// A tiny helper to print any IShape
public static class ShapePrinter
{
  public static void Print(IShape s)
  {
    Console.WriteLine("A=" + s.Area() + " P=" + s.Perimeter());
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    // No concrete shapes yet; interface compiles and is ready.
    Console.WriteLine("Shape API ready");
  }
}

Classe de base facultative

Vous pouvez ajouter une petite classe de base abstract pour les utilitaires partagés, mais gardez l’interface comme contrat officiel.

using System;

// Optional base for helpers; interface stays the main contract
public abstract class ShapeBase : IShape
{
  public abstract double Area();
  public abstract double Perimeter();

  // Shared rounding helper
  protected double Round2(double x)
  {
    return Math.Round(x, 2);
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    Console.WriteLine("Base class prepared for shared helpers");
  }
}

Formes concrètes

Les formes concrètes implémentent l’interface. Les clients peuvent les traiter uniformément via IShape.

using System;

public interface IShape
{
  double Area();
  double Perimeter();
}

public class Rectangle : IShape
{
  private readonly double _w, _h;
  public Rectangle(double w, double h) { _w = w; _h = h; }
  public double Area() { return _w * _h; }
  public double Perimeter() { return 2 * (_w + _h); }
}

public class Circle : IShape
{
  private readonly double _r;
  public Circle(double r) { _r = r; }
  public double Area() { return 3.14159 * _r * _r; }
  public double Perimeter() { return 2 * 3.14159 * _r; }
}

public class Program
{
  public static void Main(string[] args)
  {
    IShape a = new Rectangle(3, 4);
    IShape b = new Circle(2);
    Console.WriteLine("Rect A=" + a.Area() + " P=" + a.Perimeter());
    Console.WriteLine("Circ A=" + b.Area() + " P=" + b.Perimeter());
  }
}

Collections de IShape

Utilisez une List<IShape> pour stocker de nombreuses formes et les traiter de la même manière.

using System;
using System.Collections.Generic;

public interface IShape
{
  double Area();
  double Perimeter();
}

public class Rectangle : IShape
{
  private readonly double _w, _h;
  public Rectangle(double w, double h) { _w = w; _h = h; }
  public double Area() { return _w * _h; }
  public double Perimeter() { return 2 * (_w + _h); }
}

public class Circle : IShape
{
  private readonly double _r;
  public Circle(double r) { _r = r; }
  public double Area() { return 3.14159 * _r * _r; }
  public double Perimeter() { return 2 * 3.14159 * _r; }
}

public class Program
{
  public static void Main(string[] args)
  {
    List<IShape> shapes = new List<IShape>();
    shapes.Add(new Rectangle(2, 5));
    shapes.Add(new Circle(1.5));

    foreach (IShape s in shapes)
    {
      Console.WriteLine("A=" + s.Area() + " P=" + s.Perimeter());
    }
  }
}

Liste de contrôle de la conception

Liste de contrôle :

  • L’interface constitue le contrat : elle doit être petite et claire.
  • Les formes concrètes gardent leurs champs private.
  • Utilisez le type double pour les calculs simples et gardez les constantes locales.
  • Privilégiez le polymorphisme aux vérifications de type.

Choix du contrat

Vérification rapide : pour une bibliothèque de formes destinée à fonctionner avec de nombreuses formes différentes, que doit exposer le contrat public ?

Récapitulatif

Récapitulatif : définissez une petite interface IShape, gardez les éléments internes private et utilisez des collections de l’interface pour le traitement polymorphe.

Questions Fréquemment Posées

La leçon « Conception (interfaces et héritage) » est-elle gratuite ?

Oui — le texte complet de « Conception (interfaces et héritage) » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C# Academy, passe à CoddyKit PRO. Le cours C# Academy comprend 3 leçons au total.

Qu'est-ce que j'apprendrai dans « Conception (interfaces et héritage) » ?

Concevez une API Shape simple avec une interface et une petite classe de base ; décidez ce qui relève du contrat et ce qui constitue un détail d’implémentation. Tu pratiques C# Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer C# Academy ?

Aucune expérience préalable n'est requise. C# Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 3.

Combien de temps prend la leçon « Conception (interfaces et héritage) » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon C# Academy ?

Oui. Chaque leçon C# Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Conception (interfaces et héritage)
  2. Implémentation et tests
  3. Comportements polymorphes
← Retour à C# Academy