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
Forum - C# / VB.NET - Interfacce

Avatar
Jymmy (Normal User)
Newbie


Messaggi: 19
Iscritto: 18/03/2011

Segnala al moderatore
Postato alle 17:05
Sabato, 16/04/2011
Ho visitato parecchi siti web ma non ho capito bene:
A cosa servono le interfacce?:-?
Grazie per le risposte!!:):)

PM
Avatar
carmine (Member)
Pro


Messaggi: 168
Iscritto: 20/04/2010

Up
1
Down
V
Segnala al moderatore
Postato alle 17:16
Sabato, 16/04/2011
io le uso per una sorta di ereditarietà multipla!

http://totemslair.org/guide/viewchapter.php?guida=vb&id=37

Ultima modifica effettuata da carmine il 16/04/2011 alle 17:19
Grazie, quindi un'interfaccia è lo scheletro di una classe se non ho capito male. - Jymmy - 18/04/11 20:37
PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Up
2
Down
V
Segnala al moderatore
Postato alle 13:16
Domenica, 17/04/2011
Vorrei sottolineare il paragrafo finale del capitolo:
Testo quotato

La differenza sostanziale tra una classe astratta e un'interfaccia è che la prima definisce l'essenza di un oggetto (che cosa è), mentre la seconda ne indica il comportamento (che cosa fa). Inoltre una classe astratta è in grado di definire membri che verranno acquisiti dalla classe derivata, e quindi dichiara delle funzionalità di base ereditabili da tutti i discendenti; l'interfaccia, al contrario, "ordina" a chi la implementa di definire un certo membro con una certa funzione, ma non fornisce alcun codice di base, né alcuna direttiva su come un dato compito debba essere svolto. Ecco che, sulla base di queste osservazioni, possiamo individuare alcune casistiche in cui sia meglio l'una o l'altra:
Quando esistono comportamenti comuni : interfacce
Quando esistono classi non riconducibili ad alcun archetipo o classe base: interfacce
Quando tutte le classi hanno fondamentalmente la stessa essenza : classe astratta
Quando tutte le classi, assimilabili ad un unico archetipo, hanno bisogno di implementare la stessa funzionalità o gli stessi membri : classe astratta


PM
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Up
1
Down
V
Segnala al moderatore
Postato alle 19:48
Sabato, 16/04/2011
Il primo uso delle interfacce è separare il contratto dall'implementazione.

Potendo quindi avere un codice come:

Codice sorgente - presumibilmente C#

  1. public class BusinessLogic {
  2. private IDataAccessLogic dal;
  3.  
  4. public BusinessLogic(IDataAccessLogic dal) {
  5. this.dal = dal;
  6. }
  7.  
  8. public List<string> GetUsers() {
  9.         // qui in un caso reale ci sarebbe della logica che manipola i dati
  10.       return dal.GetUsers();
  11. }
  12.  
  13. }



In questo modo la tua logica di business non saprà come i dati saranno letti, se da un DB, se da un file, se da un stub object o altro. E ti sarà possibile quindi iniettare la dipendenza da fuori.

Il secondo uso è creare una vista su un tipo, ovvero sfruttare la relazione is-a fra oggetto concreto e interfaccia per fare un if di tipo e nel caso in cui un oggetto supporta il contratto richiesto, sfruttarlo richiamandone i metodi.

Grazie a tutti quanti!! - Jymmy - 18/04/11 20:38
PM