Polimorfismo basato sulle interfacce
Aggiornamento: novembre 2007
Le interfacce costituiscono un'ulteriore soluzione per ottenere il polimorfismo in Visual Basic. Analogamente alle classi, nelle interfacce vengono descritti proprietà e metodi, ma, a differenza delle classi, le interfacce non sono in grado di fornire alcuna implementazione. Più interfacce hanno il vantaggio di consentire un'evoluzione dei sistemi di componenti software senza creare interruzioni nel codice esistente.
Per ottenere il polimorfismo con le interfacce, è necessario implementare un'interfaccia in modi diversi in numerose classi. Le applicazioni client possono utilizzare le implementazioni precedenti o quelle nuove esattamente allo stesso modo. Il vantaggio del polimorfismo basato sulle interfacce consiste nel fatto che non è necessario ricompilare applicazioni client esistenti affinché queste funzionino con le nuove implementazioni dell'interfaccia.
Nell'esempio seguente viene definita un'interfaccia denominata Shape2, che viene implementata in una classe denominata RightTriangleClass2 e RectangleClass2. Mediante una routine denominata ProcessShape2, viene chiamato il metodo CalculateArea di istanze della classe RightTriangleClass2 o RectangleClass2:
Sub TestInterface()
Dim RectangleObject2 As New RectangleClass2
Dim RightTriangleObject2 As New RightTriangleClass2
ProcessShape2(RightTriangleObject2, 3, 14)
ProcessShape2(RectangleObject2, 3, 5)
End Sub
Sub ProcessShape2(ByVal Shape2 As Shape2, ByVal X As Double, _
ByVal Y As Double)
MsgBox("The area of the object is " _
& Shape2.CalculateArea(X, Y))
End Sub
Public Interface Shape2
Function CalculateArea(ByVal X As Double, ByVal Y As Double) As Double
End Interface
Public Class RightTriangleClass2
Implements Shape2
Function CalculateArea(ByVal X As Double, _
ByVal Y As Double) As Double Implements Shape2.CalculateArea
' Calculate the area of a right triangle.
Return 0.5 * (X * Y)
End Function
End Class
Public Class RectangleClass2
Implements Shape2
Function CalculateArea(ByVal X As Double, _
ByVal Y As Double) As Double Implements Shape2.CalculateArea
' Calculate the area of a rectangle.
Return X * Y
End Function
End Class
Vedere anche
Attività
Procedura: creare e implementare interfacce