Le interfacce sono dei modelli di classe che non possono essere implementate, ma servono solo per delineare i metodi che la classe che ne deriva deve avere. Se creiamo ad esempio l’interfaccia ICorre, questa può servire per creare le classi di animali che corrono, ma non per le piante. Facciamo un esempio concreto per capire meglio:
using System; interface IPerimetro { int GetPerimetro(); int iLato { get; set; } } public class CQuadrato : IPerimetro { private int m_iLato; public int iLato { get { return m_iLato; } set { m_iLato = value; } } public int GetPerimetro() { return m_iLato * 4; } } public class Corso { static void Main(string[] args) { CQuadrato cQ = new CQuadrato(); cQ.iLato = 12; Console.WriteLine("Il perimetro del quadrato di lato {0,0:d} è di {1,0:d}", cQ.iLato, cQ.GetPerimetro()); Console.ReadKey(); } }
In questo esempio molto semplice abbiamo descritto l’interfaccia IPerimetro e le abbiamo implementato la classe CQuadrato che può avere un perimetro, un cerchio non può essere derivata da questa interfaccia perché non ha perimetro, ma circonferenza. Da notare solamente il nuovo modo che ho implentato per trattare una proprietà membro privata con i metodi get e set, in pratica con get otteniamo il valore e con set lo impostiamo e per farlo concretamente basta richiamare il nome metodo get, set. Ora aggiungiamo un’altra interfaccia e la chiamiamo IArea:
using System; interface IPerimetro .... interface IArea { double GetArea(); int iLato { get; set; } } public class CQuadrato : IPerimetro, IArea { private int m_iLato; public int iLato { ..... } public int GetPerimetro() .... public double GetArea() { return m_iLato * m_iLato; } } public class CCerchio : IArea { private int m_iRaggio; public int iLato { get { return m_iRaggio; } set { m_iRaggio = value; } } public double GetArea() { return Math.PI * m_iRaggio * m_iRaggio; } } public class Corso { ... Console.WriteLine("L'area del quadrato di lato {0,0:d} è di {1,0:n}", cQ.iLato, cQ.GetArea()); CCerchio cCer = new CCerchio(); cCer.iLato = 14; Console.WriteLine("L'area del cerchio di raggio {0,0:d} è di {1,0:n}", cCer.iLato, cCer.GetArea()); ... }
Per risparmiare spazio le istruzioni in comune con l’esempio precedente sono state sostituite con …
Ovviamente anche le interfacce possono essere derivate tra di loro.
<< Lezione Precedente – Inizio Corso – Indice Lezioni – Lezione Successiva >>
Sono arrivato alla convinzione che un abbonamento per tutti i miei software gestionali sia il…
MerciGest è un software per la gestione del magazzino completamente gratuito. Continua a leggere→
In ufficio può capitare di doversi allontanare dal proprio posto di lavoro, ecco che allora…
In questo articolo vedremo quando è più o meno utile togliere la corrente ad un…
Dopo la pausa invernale dovuta al lavoro che devo fare per sostentarmi, eccomi di nuovo…
Vediamo come eliminare i files direttamente da Windows senza utilizzare il cestino. Continua a leggere→