Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. 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: 1127
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!


La programmazione è arte... fa che i tuoi script siano degni di un museo.
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6116
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


Seguimi su Twitter: http://www.twitter.com/pierotofy

Fai quello che ti piace, e fallo bene.
PM Quote