Prefira composição (composition) a herança em C#
Nesta lição, você vai montar um pedido a partir de objetos menores que trabalham juntos, em vez de usar herança.
Introdução
Composição (composition) é construir um objeto juntando objetos menores, cada um com uma tarefa clara. Comparada à herança, essa abordagem deixa as classes mais enxutas e fáceis de mudar e evita árvores de herança complexas e rígidas.
O pedido Order contém uma lista de itens LineItem em vez de herdar deles. A propriedade Total delega o cálculo a cada item com Items.Sum(item => item.Price). Cada objeto tem uma única responsabilidade, e o total do livro com a caneta é 35.
Exemplo de C# executável
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);
}
}
35Pratique com o depurador
Coloque um breakpoint em uma atribuição ou condição importante, clique em Debug e veja os valores das variáveis locais antes de passar para a próxima linha.