Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Interfacce c#
Forum - C# / VB.NET - Interfacce c#

Avatar
Nicola8 (Normal User)
Rookie


Messaggi: 26
Iscritto: 10/07/2015

Segnala al moderatore
Postato alle 12:58
Domenica, 06/09/2015
Salve a tutti
Vi potrà sembrare una domanda banale ma a cosa servono le interfacce?e perché vengono implementate ?
Grazie

PM Quote
Avatar
Roby94 (Member)
Guru


Messaggi: 1170
Iscritto: 28/12/2009

Segnala al moderatore
Postato alle 20:19
Domenica, 06/09/2015
Iniziamo col dire che sono costrutti che si adoperano a livelli di sviluppo avanzati, ma neanche troppo. Le interfacce offrono principalmente due grandi vantaggi, strettamente legati tra di loro.
Immaginiamo di avere un grande progetto, decidiamo quindi di dividerci in due o più squadre. Abbiamo bisogno di creare e gestire un gruppo di oggetti, che però non abbiamo idea di come verrà implementato, allora ci mettiamo a tavolino e definiamo i metodi e le proprietà che implementerà, la sua interfaccia. A questo punto delle squadre di occuperanno di implementare delle classi che si basino su quell'interfaccia, altre si occuperanno di creare metodi che accettino come argomento un estensione della stessa interfaccia. Non si puo creare confusione tra i due progetti perche le specifiche di implementazioni sono state definite insieme da tutte le squadre.
Il secondo vantaggio come accennato in precedenza è strettamente legato a questo. Le interfacce permettono a un metodo di accettare una classe ancora piu generale di quella padre, mi spiego meglio, quando definisco un metodo, non serve che sappia gia come o cosa implementerà la classe che verrà passata allo stesso ma solo cosa a grandi linee permetteranno di fare i metodi presenti nell'interfaccia.
A grandi linee è come definire una classe abstract, ma ad un livello ancora piu astratto.

Questa è una spiegazioni puramente logistica, se ti interessa qualcosa di piu tecnico chiedi pure!

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 18:30
Lunedì, 07/09/2015
Le interfacce permettono di stabilire un "contratto" tra classi.

Ad esempio se definisci un'interfaccia:

Codice sorgente - presumibilmente C# / VB.NET

  1. public interface IPrintable
  2. {
  3.    String getOutput();
  4. }



E dichiari che una classe implementa IPrintable, quella classe dovrà implementare il metodo getOutput.

Codice sorgente - presumibilmente VB.NET

  1. class MyClass : IPrintable{
  2.   public String getOutput(){ return "MyClass!"; }
  3. }
  4. class OtherClass : IPrintable{
  5.   public String getOutput(){ return "OtherClass!"; }
  6. }



Perchè non si può semplicemente dichiarare il metodo come astratto in una classe base ed ereditare da questa (come si fa in C++?). Si può, ma a quel punto non puoi implementare più di un "contratto", perchè l'ereditarietà multipla non è consentita in C#.

Codice sorgente - presumibilmente C# / VB.NET

  1. IPrintable m = new MyClass();
  2. m.getOutput();
  3. IPrintable n = new OtherClass();
  4. m.getOutput(); // nota che non ho bisogno di sapere che n è di tipo OtherClass, mi basta sapere che implementa IPrintable per accedere a getOutput.


Ultima modifica effettuata da pierotofy il 07/09/2015 alle 18:34


Il mio blog: https://piero.dev
PM Quote