Objektorientiertes C#

Komposition (composition) statt Vererbung in C#

In dieser Lektion baust du eine Bestellung aus kleineren Objekten zusammen, die zusammenarbeiten, statt Vererbung zu verwenden.

Einführung

Komposition (composition) heißt, ein Objekt aus kleineren Objekten zusammenzusetzen, von denen jedes eine klare Aufgabe hat. Im Vergleich zur Vererbung bleiben die Klassen so schlank und leicht änderbar, und du vermeidest komplexe, starre Vererbungshierarchien.

Die Bestellung Order enthält eine Liste von Positionen LineItem, statt von ihnen zu erben. Die Eigenschaft Total überlässt die Berechnung mit Items.Sum(item => item.Price) den einzelnen Positionen. Jedes Objekt trägt nur eine Verantwortung, und der Gesamtbetrag für Buch und Stift ist 35.

Ausführbares C#-Beispiel

C#
Code ausführen →
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;

record LineItem(string Name, decimal Price);
class Order
{
    public List<LineItem> Items { get; } = new();
    public decimal Total => Items.Sum(item => item.Price);
}

class Program
{
    static void Main()
    {
        var order = new Order();
        order.Items.Add(new("Book", 30m));
        order.Items.Add(new("Pen", 5m));
        Console.WriteLine(order.Total);
    }
}
Ergebnis der Ausführung
35

Mit dem Debugger üben

Setze einen Haltepunkt auf eine wichtige Zuweisung oder Bedingung, klicke auf Debug und sieh dir die lokalen Werte an, bevor du zur nächsten Zeile gehst.