Sobes.tech
Junior — Middle

Può spiegare il principio di apertura/chiusura nel contesto della 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, riducendo il rischio di errori e semplificando la manutenzione.

In C#, questo si ottiene spesso attraverso l'uso di astrazioni, interfacce e ereditarietà. Ad esempio, aggiungendo una nuova funzionalità, creiamo una nuova classe che implementa un'interfaccia, invece di modificare quella esistente.

Esempio:

public interface IShape
{
    double Area();
}

public class Circle : IShape
{
    public double Radius { get; set; }
    public double Area() => Math.PI * Radius * Radius;
}

public class Square : IShape
{
    public double Side { get; set; }
    public double Area() => Side * Side;
}

// Ora si possono aggiungere nuove figure senza cambiare il codice esistente

In questo modo, il sistema si espande aggiungendo nuove classi, anziché modificare quelle esistenti.