Sobes.tech
Junior — Middle

Pode explicar a ideia principal do princípio de abertura e fechamento na 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 para extensão, mas fechadas para modificação.

Isto significa que o comportamento do sistema pode ser estendido sem alterar o código existente. Essa abordagem ajuda a evitar erros que podem ocorrer ao modificar código testado, e facilita a manutenção e o desenvolvimento do programa.

Por exemplo, se precisar adicionar uma nova funcionalidade, é melhor criar uma nova classe que estenda a existente, em vez de modificar diretamente a classe original.

Exemplo em Swift:

protocol Shape {
    func area() -> Double
}

class Circle: Shape {
    var radius: Double
    init(radius: Double) { self.radius = radius }
    func area() -> Double { return .pi * radius * radius }
}

class Rectangle: Shape {
    var width: Double, height: Double
    init(width: Double, height: Double) {
        self.width = width
        self.height = height
    }
    func area() -> Double { return width * height }
}

// Para adicionar uma nova figura, por exemplo Triângulo, não modificamos as classes existentes, mas criamos uma nova:
class Triangle: Shape {
    var base: Double, height: Double
    init(base: Double, height: Double) {
        self.base = base
        self.height = height
    }
    func area() -> Double { return 0.5 * base * height }
}