Interfacce in C#
Le interfacce sono un altro concetto fondamentale della programmazione orientata agli oggetti (OOP) che consente di definire un contratto che le classi devono rispettare. Un’interfaccia definisce firme di metodi e proprietà , ma non fornisce implementazioni concrete. Le classi possono implementare più interfacce, consentendo di aderire a diversi contratti. In questa lezione, esploreremo in dettaglio cos’è un’interfaccia, come definirla e come usarla in C#.
ProprietĂ delle Interfacce
-
Definizione: Un’interfaccia è un contratto che specifica i metodi e le proprietà che le classi che la implementano devono fornire. Non contiene implementazioni concrete.
-
Metodi e Proprietà : Un’interfaccia può contenere firme di metodi e proprietà . Le classi che implementano l’interfaccia devono fornire l’implementazione di tali membri.
-
Multipla Implementazione: Una classe può implementare più interfacce, consentendo di aderire a più contratti.
Definizione di un’Interfaccia
Per definire un’interfaccia, utilizziamo la parola chiave interface
.
Esempio di Definizione di un’Interfaccia:
interface ICalcolabile{ double CalcolaArea(); double CalcolaPerimetro();}
Nell’esempio sopra, ICalcolabile
è un’interfaccia che contiene le firme dei metodi CalcolaArea()
e CalcolaPerimetro()
.
Implementazione di un’Interfaccia
Le classi implementano un’interfaccia fornendo l’implementazione dei metodi definiti dall’interfaccia.
Esempio di Implementazione di un’Interfaccia:
class Rettangolo : ICalcolabile{ public double Larghezza { get; set; } public double Altezza { get; set; }
public double CalcolaArea() { return Larghezza * Altezza; }
public double CalcolaPerimetro() { return 2 * (Larghezza + Altezza); }}
Vantaggi delle Interfacce
Le interfacce favoriscono la flessibilità e la riusabilità del codice. Consentono di definire contratti che diverse classi possono aderire senza dover condividere una gerarchia di classi comune. Le interfacce promuovono la progettazione orientata ai contratti, consentendo agli sviluppatori di concentrarsi su ciò che un oggetto fa invece di come lo fa.
Differenze tra Interfacce e Classi Astratte
Le interfacce e le classi astratte sono simili nel senso che entrambe definiscono contratti, ma ci sono alcune differenze chiave:
- Le interfacce possono contenere solo firme di metodi e proprietĂ , mentre le classi astratte possono anche contenere metodi concreti.
- Una classe può implementare più interfacce, ma può derivare da una sola classe astratta.
- Le interfacce promuovono una maggiore flessibilità , poiché una classe può implementare interfacce diverse senza dover derivare da una classe specifica.
Conclusione
Le interfacce sono uno strumento potente per definire contratti che le classi devono rispettare. Consentono la creazione di codice flessibile e riutilizzabile, consentendo alle classi di aderire a più contratti senza condividere una gerarchia di classi comune. Utilizzando le interfacce, è possibile progettare sistemi software più modulare e orientato ai contratti.