0Pricing
C# Academy · Lektion

Polymorphe Verhaltensweisen

Verwenden Sie interfacebasierten Polymorphismus: Verarbeiten Sie gemischte Shapes einheitlich, fügen Sie neue Shapes hinzu, ohne die Aufrufer zu ändern, und kombinieren Sie kleine Verhaltensweisen.

Polymorphe Verhaltensweisen ist eine kostenlose C# Academy-Lektion auf CoddyKit. Dies ist Lektion 3 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.

Überblick über Polymorphismus

Ziel: Verwenden Sie Polymorphismus, um Aufrufer einfach zu halten.

  • Arbeiten Sie überall mit IShape.
  • Mischen Sie viele Formen in einer Liste.
  • Fügen Sie neue Formen hinzu, ohne den Code zu ändern.
  • Setzen Sie kleine Verhaltensweisen zusammen (Formatierung, Filterung).

Eine API für alle Formen

Nehmen Sie in Hilfsfunktionen die IShape-Schnittstelle entgegen. Die Laufzeitauflösung wählt die richtige Implementierung aus.

using System;

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

public sealed 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 sealed 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
{
  // One function works for any IShape (dynamic dispatch on overrides)
  static void PrintSummary(IShape s)
  {
    Console.WriteLine("A=" + s.Area() + " P=" + s.Perimeter());
  }

  public static void Main(string[] args)
  {
    PrintSummary(new Rectangle(3, 4));
    PrintSummary(new Circle(2));
  }
}

Verarbeitung einer gemischten Liste

Speichern Sie viele Formen in einer List<IShape>. Die Iteration bleibt einfach, während das Verhalten je nach Instanz variiert.

using System;
using System.Collections.Generic;

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

public sealed 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 sealed 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));
    shapes.Add(new Rectangle(1, 1));

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

Offen für Erweiterungen

Polymorphismus unterstützt die offene Erweiterung: Neue Formen lassen sich integrieren, ohne vorhandene Aufrufer zu ändern.

using System;

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

public sealed class Triangle : IShape
{
  private readonly double _a, _b, _c;
  public Triangle(double a, double b, double c) { _a = a; _b = b; _c = c; }
  public double Perimeter() { return _a + _b + _c; }
  public double Area()
  {
    double s = (_a + _b + _c) / 2.0;
    return Math.Sqrt(s * (s - _a) * (s - _b) * (s - _c));
  }
}

public class Program
{
  // Existing helper still works; no changes needed
  static void Show(IShape s) { Console.WriteLine("A=" + s.Area() + " P=" + s.Perimeter()); }

  public static void Main(string[] args)
  {
    Show(new Triangle(3, 4, 5)); // new type plugs in
  }
}

Zusammensetzen von Verhalten (Strategie)

Setzen Sie kleine Verhaltensweisen über kleine Schnittstellen zusammen, etwa einen Formatter. Wechseln Sie Strategien aus, ohne die Form zu ändern.

using System;

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

public sealed 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); }
}

// Small strategy interface for formatting
public interface IShapeFormatter
{
  string Format(IShape s);
}

public sealed class SimpleFormatter : IShapeFormatter
{
  public string Format(IShape s) { return "A=" + s.Area() + " P=" + s.Perimeter(); }
}

public class Program
{
  static void Print(IShape s, IShapeFormatter f)
  {
    Console.WriteLine(f.Format(s));
  }

  public static void Main(string[] args)
  {
    Print(new Rectangle(3, 2), new SimpleFormatter());
  }
}

Tipps zum Polymorphismus

Tipps:

  • Übergeben Sie IShape an Hilfsfunktionen und vermeiden Sie Typprüfungen.
  • Halten Sie Hilfsfunktionen möglichst klein und nebenwirkungsfrei.
  • Fügen Sie neue Formen frei hinzu und ändern Sie vorhandene Aufrufer nicht.
  • Verwenden Sie kleine Schnittstellen für Verhaltensweisen (Formatierung, Filterung), um Funktionen zu erweitern.

Vorteil der Schnittstelle

Kurze Frage: Was ist der wichtigste Vorteil, wenn diese Bibliothek gegen die IShape-Schnittstelle programmiert?

Zusammenfassung

Zusammenfassung: Verwenden Sie IShape als Parametertyp, verarbeiten Sie gemischte Listen und fügen Sie Formen hinzu, ohne Aufrufer anzupassen. Setzen Sie kleine Verhaltensweisen für Formatierung oder Filterung zusammen, damit der Code flexibel bleibt.

Häufig gestellte Fragen

Ist die Lektion „Polymorphe Verhaltensweisen“ kostenlos?

Ja — der vollständige Text von „Polymorphe Verhaltensweisen“ 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 „Polymorphe Verhaltensweisen“?

Verwenden Sie interfacebasierten Polymorphismus: Verarbeiten Sie gemischte Shapes einheitlich, fügen Sie neue Shapes hinzu, ohne die Aufrufer zu ändern, und kombinieren Sie kleine Verhaltensweisen. 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 3 von 3.

Wie lange dauert die Lektion „Polymorphe Verhaltensweisen“?

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