Junior — Middle
Puoi spiegare l'idea principale del principio di apertura e chiusura nella programmazione orientata agli oggetti?
sobes.tech AI
Risposta dell'AI
Il principio di apertura/chiusura nella programmazione orientata agli oggetti significa che le entità software (classi, moduli, funzioni) devono essere aperte all'estensione, ma chiuse alla modifica.
Ciò significa che il comportamento del sistema può essere esteso senza modificare il codice esistente. Questo approccio aiuta a evitare errori che possono verificarsi modificando il codice testato, e facilita la manutenzione e lo sviluppo del programma.
Ad esempio, se è necessario aggiungere una nuova funzionalità, è meglio creare una nuova classe che estende quella esistente, piuttosto che modificare direttamente la classe originale.
Esempio in 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 }
}
// Per aggiungere una nuova figura, ad esempio Triangolo, non modifichiamo le classi esistenti, ma ne creiamo una nuova:
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 }
}