JavascriptProva

giovedì 1 agosto 2013

Esordiamo con le classi astratte!

Facciamo un tentativo di creare una classe astratta di una generica figura geometrica con le poche parole chiave che ho imparato...

MustInherit Class figura
    Protected base As Integer
    Protected altezza As Integer

    Sub New(ByVal b As Integer, ByVal a As Integer)
        base = b
        altezza = a
    End Sub

    MustOverride Function Area()
End Class
Ecco: le proprietà sono Protected per essere visibili dalle classi derivate.
La funzione è MustOverride, ovviamente...
E ho creato un costruttore, perchè il costruttore della classe derivata possa fare riferimento a questo.

Ecco le classi derivate:
Class Triangolo
    Inherits figura

    Sub New(ByVal b As Integer, ByVal a As Integer)
        MyBase.New(b, a)
    End Sub

    Public Overrides Function Area() As Object
        Return base * altezza / 2
    End Function
End Class

Class Rettangolo
    Inherits figura

    Sub New(ByVal b As Integer, ByVal a As Integer)
        MyBase.New(b, a)
    End Sub
    Public Overrides Function Area() As Object
        Return base * altezza
    End Function
End Class


Le istanzio così:
    Sub Main()
        Dim mioTriangolo As New Triangolo(5, 4)
        Console.WriteLine(mioTriangolo.Area)
        Console.ReadKey()

        Dim mioRettangolo As New Rettangolo(5, 4)
        Console.WriteLine(mioRettangolo.Area)
        Console.ReadKey()

    End Sub
E sembra funzionare:
10
20





Ma ho subito un'altra idea... E se volessi creare una classe derivata Trapezio? La questione è interessante, perchè in questo caso dovrei aggiungere una proprietà in più nella sola classe derivata, ossia la base minore...
Lo vedrò successivamente...

Nessun commento:

Posta un commento