C# orientado a objetos

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

C#
Rodar código →
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);
    }
}
Resultado da execução
35

Pratique 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.