Domanda

Perché usiamo interfaccia?

E 'solo per la standardizzazione?

È stato utile?

Soluzione

Finalità del Interfacce

  • creare un software loosely coupled
  • per contratto (un implementor deve fornire l'intera interfaccia)
  • consentire il software plug
  • che oggetti diversi di interagire facilmente
  • dettagli nascondere implementazione di classi uno dall'altro
  • facilitare il riutilizzo del software

Analogia 1 : Molto simile la navetta spaziale statunitense, russa Soyuz e cinese Shenzhou 5 possono tutti dock per la Stazione Spaziale Internazionale, perché implementare la stessa interfaccia di aggancio. (Questo è solo un esempio - non so se è vero nella vita reale però cerchiamo di sospendere la nostra incredulità per il bene di un esempio)

Analogia 2 : Come è possibile collegare diversi monitor per computer nel computer di casa. È possibile collegare un muro-size TV in esso, un vecchio CRT (il tipo di spessore), un 20" a schermo piatto, o una macchina braille per i non vedenti di 'vedere' attraverso il tatto. C'è compatibilità tra questi diversi dispositivi / differenti e la vostra computer, perché sono tutti d'accordo su standard di interfaccia.

dettagli di C # interfacce - Con le interfacce # / OOP C si sta facendo lo stesso tipo di cosa, ma nel mondo invisibile / virtuale.

Hai ragione su standardizzazione , ma anche flessibilità , scalabilità , estensibilità , manutenibilità , riusabilità , testability e potenza .

(Quanto più si utilizza il software si interfaccia più questi "parole d'ordine" sarà capito. E sempre in considerazione le interfacce nel mondo reale perché ci hanno fatto altrettanto bene.)

Altri suggerimenti

Un'interfaccia viene utilizzata per descrivere ciò che una cosa implementato può fare. In modo da avere la possibilità di trattare diversi oggetti che di esecuzione la stessa interfaccia come un tipo di questa interfaccia.

Ad esempio:

public interface IMyInterface{
    public void DoFirst();
    public int DoSecond();
}


public class A : IMyInterface{
   //class has to implement DoFirst and DoSecond
   public void DoFirst(){
     Console.WriteLine("Blubb1");  
   }

   public int DoSecond(){
     Console.WriteLine("Blubb2");
     return 2;  
   }
}

public class B : IMyInterface{
   //class has to implement DoFirst and DoSecond
   public void DoFirst(){
     Console.WriteLine("Blibb1");  
   }

   public int DoSecond(){
     Console.WriteLine("Blibb2");  
     return 4;
   }
}

Le classi implementano l'interfaccia in diversi modi. Ma si possono usare come IMyInterface. Ad esempio:

public static void DoMethodsInInterface(IMyInterface inter){
    inter.DoFirst();
    inter.DoSecond();
}


public static void main(){

   DoMethodsInInterface(new A());
   DoMethodsInInterface(new B());
   //Or use it in a List
   List<IMyInterface> interlist = new List<IMyInterface>();
   interlist.Add(new A());
   interlist.Add(new B());
   foreach(IMyInterface inter in interlist){
      inter.DoFirst();
   }

}

Spero che questo rende un po 'chiaro perché le interfacce sono utili.

E 'per l'interfacciamento :), in modo da poter interfacciare tra roba, è utile quando si ha

  • più implementazioni dello stesso roba
  • quando si applica un'interfaccia a più classi diverse perché è necessario un qualche tipo di convenzione che queste classi sono goonna essere in grado di fare alcune cose o avere qualche funzionalità

Ecco la vista di alto livello ...

Interfacce svolgono un ruolo importante nel concetto di Information Hiding .

In sostanza aiutano a nascondere il dettagli di implementazione della classe in modo che una classe chiamata non ha alcuna dipendenza che l'attuazione. Pertanto, utilizzando interfacce è possibile modificare l'implementazione senza cambiare la classe di chiamata. Tutto questo a turno limita la complessità del codice e renderlo più facile da mantenere nel lungo periodo.

Quando ho iniziato a comprendere le interfacce sono state spiegate a me come un "contratto che fornisce una descrizione la classe." Non sono sicuro se che vi aiuterà, ma se si pensa di un'interfaccia per una macchina si potrebbe dire che Unità , pause e si trasforma . Quindi, fintanto che mi viene dal punto A al punto B, non ho veramente sapere come queste funzioni sono implementate.

Il motivo principale delle interfacce vengono utilizzate in linguaggi come C # / Java è perché queste lingue non supportano l'ereditarietà multipla (classe) (vedere Qual è il problema esatto con l'ereditarietà multipla? ).

Ma multipla (interfaccia) implementazione è permessi permettendo classi per essere utilizzato in modi differenti.

Le interfacce sono un po 'imbarazzante. Essi sostengono di progettazione per contratto solo credendo, lo stesso nome e interfaccia implementata significa lo stesso comportamento. Questo funziona solo grazie alla documentazione delle API, deve essere uomo-controllato. Questo rende le interfacce troppo debole. Un modo per aggirare che potrebbe essere specifiche formali. D'altra parte, le interfacce sono troppo forti, troppo rigida. Non si può evolvere interfacce che spesso viene nel modo di riutilizzo. Questo è risolto da protocolli - meccanismo linguaggi dinamici, che inviano messaggi (metodi di chiamata) e quando quel messaggio non è supportato dal ricevitore, callback di serie viene chiamato. Avendo protocolli concreti con vincoli sarebbe imho meglio.

servizi remoti ...

C'è un client e un server in questione qui. Diciamo che sono fisicamente separati da Internet. Il cliente sta chiamando un metodo la cui esecuzione effettiva avviene sul server. Dal punto di vista del cliente il cliente non sa nulla circa l'oggetto nel server che esegue l'esecuzione. Tuttavia sa che cosa metodo da chiamare. Perché mentre la costruzione del programma client, siamo esposti solo ad un'interfaccia (o contratto). Noi non siamo esposti a tutto l'oggetto che è in realtà vive sul server. Prova a fare alcune applicazioni dimostrative in remoto .NET, e capirai il resto. programmazione Felice.

  

Perché usiamo le interfacce?

Alcune lingue implementare il metodo polimorfico chiamate utilizzando VTables e scartare la maggior parte delle informazioni di tipo rendendo difficile non per definire le interfacce.

Quindi, a volte usiamo semplicemente interfacce perché la progettazione del linguaggio richiede.

Per iniziare con un'interfaccia, è possibile implementare un delega , consentendo così pigri carico o l'esecuzione di alcune verifiche quando si chiama i metodi di una realizzazione concreta.

Interfaccia separa il tipo di dati dalla logica attuazione.

Interfaccia fornire prototipo modale che contiene solo la dichiarazione di funzionalità di un comportamento specifico.

e se u desidera implementare questo comportamento in classe allora u deve implementare questa interfaccia in classe allora classe avere questa funzionalità comportamento o si può avere un comportamento più.

perché la classe può implementare l'interfaccia multipla.

Se qualcun altro è come me e apprende con l'esempio e facendo, piuttosto che unica spiegazione, qui è un codice ....

Ho trovato questa implementazione di una rete neurale in C #, tra cui download del progetto, che si avvale di interfacce in modo elegante e utile:

http://www.c-sharpcorner.com/UploadFile/ rmcochran / AI_OOP_NeuralNet06192006090112AM / AI_OOP_NeuralNet.aspx

In seguito sono le ragioni principali per l'utilizzo di interfacce

  1. estensibilità
  2. Attuazione Nascondere
  3. Accesso oggetto attraverso interfacce
  4. accoppiamento lasco.

visita il sapere sulle interfacce con il codice di esempio scaricabile

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top