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
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
- Entwurf (Interfaces und Vererbung)
- Implementierung und Tests
- Polymorphe Verhaltensweisen