Sobes.tech
Junior — Middle

¿Puede explicar la idea principal del principio de apertura y cierre en la programación orientada a objetos?

sobes.tech AI

Respuesta de la IA

El principio de abierto/cerrado en programación orientada a objetos significa que las entidades de software (clases, módulos, funciones) deben estar abiertas para la extensión, pero cerradas para la modificación.

Esto significa que el comportamiento del sistema puede extenderse sin cambiar el código existente. Este enfoque ayuda a evitar errores que pueden surgir al modificar código probado y facilita el mantenimiento y desarrollo del programa.

Por ejemplo, si necesitas agregar una nueva funcionalidad, es mejor crear una nueva clase que extienda la existente, en lugar de modificar directamente la clase original.

Ejemplo en 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 agregar una nueva figura, por ejemplo Triángulo, no modificamos las clases existentes, sino que creamos una nueva:
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 }
}