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.