Sobes.tech
Junior — Middle

Pode explicar o princípio de abertura/fecho no contexto da programação orientada a objetos?

sobes.tech IA

Resposta da IA

O Princípio Aberto/Fechado na programação orientada a objetos significa que as entidades de software (classes, módulos, funções) devem estar abertas à extensão, mas fechadas à modificação.

Isto significa que o comportamento do sistema pode ser expandido sem alterar o código existente, o que reduz o risco de erros e facilita a manutenção.

Em C#, isso é frequentemente alcançado através do uso de abstrações, interfaces e herança. Por exemplo, ao adicionar uma nova funcionalidade, criamos uma nova classe que implementa uma interface, em vez de modificar a existente.

Exemplo:

public interface IShape
{
    double Area();
}

public class Circle : IShape
{
    public double Radius { get; set; }
    public double Area() => Math.PI * Radius * Radius;
}

public class Square : IShape
{
    public double Side { get; set; }
    public double Area() => Side * Side;
}

// Agora podemos adicionar novas figuras sem alterar o código existente

Dessa forma, o sistema é expandido adicionando novas classes, em vez de modificar as antigas.