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 }
}