Sobes.tech
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 }
}