Monday, December 27, 2010

. NET: risolvere il problema della ereditarietà multipla sotto la piattaforma NET.

Piattaforma. NET non supporta l'ereditarietà multipla. Non confondere eredità multilivello con l'ereditarietà multipla. Con l'ereditarietà multipla possiamo avere una sottoclasse che eredita da due classi contemporaneamente.

Supponiamo di avere un'applicazione che ha una classe di clienti e fornitori un'altra classe. Se si voleva unire queste due classi in una classe CustomerVendor sarebbe una combinazione di clienti e fornitori, proprio come lo schema seguente.

Si prega di copiare il link di seguito in un Windor nuovo browser per visualizzare il diagramma: Immagini http://www.vbprofs.com/images/Article / VBNETinheritance.gif

Nel grafico qui sopra vediamo come la classe eredita da entrambi i CustomerVendor di tali classi.

L'ereditarietà multipla è complessa e può essere pericoloso. I vantaggi di ri-uso di codice prevalere la complessità è una vostra scelta.

L'ereditarietà multipla non è supportato da VB.NET o piattaforma. NET. Invece di ereditarietà multipla si può usare più interfacce per ottenere un effetto simile alla ereditarietà multipla.

In VB.NET tutti gli oggetti hanno una interfaccia primaria o nativo, che è composto di proprietà, eventi, metodi o variabili membro dichiarata utilizzando parole chiave pubblica. Gli oggetti possono anche implementare interfacce secondarie utilizzando parole chiave implementare.

Talvolta, è utile per un oggetto per avere più di una interfaccia che ci permette di interagire con l'oggetto in modi diversi. L'ereditarietà ci permettono di creare sottoclassi che sono un caso specializzato di classe base.

Esempio

A volte abbiamo un gruppo di oggetti che non sono il simile, ma vogliamo trattarli allo stesso modo. Vogliamo che tutti gli oggetti di agire come se fossero la stessa cosa, anche se sono diversi.

Possiamo avere alcuni oggetti diversi in un'applicazione, come cliente, prodotto, ecc fattura Ogni oggetto avrà un interfaccia di default appropriate per ogni singolo oggetto, e ciascuno di essi è una classe diversa. Nessuna eredità naturale è implicita tra queste classi.

Supponiamo di voler stampare un documento per ogni tipo di oggetto. In questo caso ci piacerebbe farli tutti agiscono come oggetto stampabile. Per fare questo possiamo definire una generica interfaccia che permetta la generazione di un documento stampato. Con l'implementazione di un'interfaccia comune che siamo in grado di scrivere una routine che accetta qualsiasi oggetto che implementa un documento stampato.

Per concludere, mediante l'attuazione di interfacce multiple in VB.NET, possiamo ottenere un effetto simile a quello di ereditarietà multipla.

No comments:

Post a Comment