Categories: C# (sharp)

Interfacce in C#

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 CorsoIndice LezioniLezione Successiva >>

Share
Giampaolo Rossi

Sviluppatore di software gestionale da oltre 28 anni.

Published by
Giampaolo Rossi

Recent Posts

Un Abbonamento per Tutti i Software

Sono arrivato alla convinzione che un abbonamento per tutti i miei software gestionali sia il…

10 mesi ago

Software di Magazzino Gratuito

MerciGest è un software per la gestione del magazzino completamente gratuito. Continua a leggere→

11 mesi ago

Mettere il PC in Lock Screen

In ufficio può capitare di doversi allontanare dal proprio posto di lavoro, ecco che allora…

3 anni ago

Fare il reset togliendo la corrente

In questo articolo vedremo quando è più o meno utile togliere la corrente ad un…

3 anni ago

Prossimi Aggiornamenti Software

Dopo la pausa invernale dovuta al lavoro che devo fare per sostentarmi, eccomi di nuovo…

3 anni ago

Come Eliminare i Files in Windows

Vediamo come eliminare i files direttamente da Windows senza utilizzare il cestino. Continua a leggere→

3 anni ago