C# orientado a objetos

Preferir la composición (composition) a la herencia en C#

En esta lección vas a construir un pedido a partir de objetos pequeños que colaboran, en lugar de usar la herencia.

Introducción

La composición (composition) consiste en construir un objeto juntando objetos más pequeños, cada uno con una tarea clara. Comparado con la herencia, este enfoque mantiene las clases ligeras y fáciles de cambiar, y evita jerarquías de herencia complejas y rígidas.

El pedido Order contiene una lista de líneas LineItem en lugar de heredar de ellas. La propiedad Total delega el cálculo en cada línea con Items.Sum(item => item.Price). Cada objeto tiene una sola responsabilidad, y el total del libro y el bolígrafo es 35.

Ejemplo de C# ejecutable

C#
Ejecutar 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 de la ejecución
35

Practica con el depurador

Pon un punto de interrupción en una asignación o condición importante, pulsa Debug y revisa los valores locales antes de pasar a la siguiente línea.