0Pricing
C# Academy · Lektion

Entwurf (Interfaces und Vererbung)

Entwerfen Sie eine einfache Shape-API mit einem Interface und einer kleinen Basisklasse. Entscheiden Sie, was zum Vertrag und was zum Implementierungsdetail gehört.

Entwurf (Interfaces und Vererbung) ist eine kostenlose C# Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 3. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C# Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C# Academy-Kurs umfasst insgesamt 3 Lektionen.

Projektüberblick

Ziel: Einen kleinen, klaren Vertrag für Formen definieren.

  • Verwenden Sie für Verhalten eine Schnittstelle.
  • Halten Sie die Oberfläche minimal.
  • Ermöglichen Sie die Einbindung vieler Formen.

Der Vertrag zuerst

Erstellen Sie einen kleinen IShape-Vertrag mit Area() und Perimeter(). Hilfsfunktionen können von der Schnittstelle abhängen.

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");
  }
}

Optionale Basisklasse

Sie können eine kleine abstrakte Basisklasse für gemeinsame Hilfsfunktionen hinzufügen, aber die Schnittstelle sollte der offizielle Vertrag bleiben.

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");
  }
}

Konkrete Formen

Konkrete Formen implementieren die Schnittstelle. Clients können sie über IShape einheitlich behandeln.

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());
  }
}

Sammlungen von IShape

Verwenden Sie eine List<IShape>, um viele Formen zu speichern und auf dieselbe Weise zu verarbeiten.

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());
    }
  }
}

Design-Checkliste

Checkliste:

  • Die Schnittstelle ist der Vertrag (klein und klar).
  • Konkrete Formen halten Felder private.
  • Verwenden Sie für einfache Berechnungen doubles und halten Sie Konstanten lokal.
  • Bevorzugen Sie Polymorphismus gegenüber Typprüfungen.

Wahl des Vertrags

Kurze Frage: Was sollte der öffentliche Vertrag einer Formenbibliothek, die mit vielen verschiedenen Formen funktionieren muss, bereitstellen?

Zusammenfassung

Zusammenfassung: Definieren Sie eine kleine IShape-Schnittstelle, halten Sie Interna private und verwenden Sie Sammlungen der Schnittstelle für polymorphe Verarbeitung.

Häufig gestellte Fragen

Ist die Lektion „Entwurf (Interfaces und Vererbung)“ kostenlos?

Ja — der vollständige Text von „Entwurf (Interfaces und Vererbung)“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C# Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C# Academy-Kurs umfasst insgesamt 3 Lektionen.

Was lerne ich in „Entwurf (Interfaces und Vererbung)“?

Entwerfen Sie eine einfache Shape-API mit einem Interface und einer kleinen Basisklasse. Entscheiden Sie, was zum Vertrag und was zum Implementierungsdetail gehört. Du übst C# Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um C# Academy zu starten?

Keine Vorkenntnisse erforderlich. C# Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 3.

Wie lange dauert die Lektion „Entwurf (Interfaces und Vererbung)“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser C# Academy-Lektion Code schreiben und ausführen?

Ja. Jede C# Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Entwurf (Interfaces und Vererbung)
  2. Implementierung und Tests
  3. Polymorphe Verhaltensweisen
← Zurück zu C# Academy