VB .NET - Conceitos OO - herança e construtores.


O paradigma da Orientação a objetos - OO - traz muitos conceitos novos e , para quem vem do paradigma procedural usando as linguagens procedurais , as vezes muitos desses conceitos podem não ser bem compreendidos.

Se você quer construir um código limpo , legível , escalável e reutilizável usando os conceitos da OO terá que ter uma compreensão sólida dos principais conceitos deste paradigma.

Como o VB .NET agora é uma linguagem OO , podemos usá-la para criar projetos dentro do paradigma OO.

O modelo procedimental apresenta as seguintes características : Foco nos procedimentos (algoritmos) que alteram os dados

O modelo de objetos apresenta as seguintes características : Foco em conceitos , representados por dados , sobre os quais são definidas as operações

Um dos conceitos básicos envolvidos na OO é a herança.  Através da herança podemos fazer com que uma classe herde propriedades de outra classe. Geralmente devemos identificar classes que possuem propriedades e comportamentos similares. A base da herança pode ser listada como a seguir :

Ao usar herança você deve compreender o que ocorre por trás dos panos. A seguir vou mostrar um comportamento básico relacionado a herança que ocorre durante este operação.

Crie um novo projeto do tipo console no VB.NET ou VS.NET com o nome conceitosOO

- A seguir inclua um módulo de classe e dê a ele o nome : ConceitosOO1.vb

No VB .NET podemos ter um único arquivo de classes com extensão .vb e nele declarar diversas classes. Vamos fazer isto inserindo o código a seguir no arquivo de classe ConceitosOO.vb.

Public Class ConceitosOO1

    Public Class Transporte
        Dim tipo As String
        Sub New()
            Console.WriteLine("Construtor da classe Transporte - A classe Mãe.")
        End Sub
    End Class

    Public Class Carro
        Inherits Transporte
        Dim carro As String
        Sub New()
            Console.WriteLine("Construtor da classe Carro que herda de Transporte")
        End Sub

    End Class

    Public Class Navio
        Inherits Transporte
        Dim navio As String

        Sub New()
            Console.WriteLine("Construtor da classe Navio que hera de Transporte ")
        End Sub
    End Class

    Public Class Aviao
        Inherits Transporte
        Dim aviao As String
        Sub New()
            Console.WriteLine("Construtor da classe Aviao que herda de Transporte")
        End Sub
    End Class

    Public Class Gol
        Inherits Carro
        Dim cor As String
        Sub New()
            Console.WriteLine("Construtor da classe Gol que herda de Carro que hera de Transporte ")
        End Sub
    End Class

    Public Class Formula1
        Inherits Carro
        Sub New()
            MyBase.new()
        End Sub
    End Class
End Class

No arquivo da classe ConceitosOO.vb acima temos a declaração das seguintes classes:

A herança no VB.NET é implementada pela palavra-chave - Inherits

Cada classe possui o seu próprio construtor definido através da palavra-chave Sub New.

Para mostrar o que queremos devemos incluir o seguinte código no módulo - module1.vb :

Module Module1

    Sub Main()

        Console.WriteLine("Instanciando a classe Carro()")
        Dim motorista As New ConceitosOO1.Carro()

        Console.WriteLine("----------------------------------------")

        Console.WriteLine("Instanciando a classe Navio()")
        Dim navegador As New ConceitosOO1.

        Console.WriteLine("----------------------------------------")

        Console.WriteLine("Instanciando a classe Aviao()")
        Dim piloto As New ConceitosOO1.Aviao()

        Console.WriteLine("----------------------------------------")

        Console.WriteLine("Instanciando a classe Gol()")
        Dim proprietarioGol As New ConceitosOO1.Gol()

        Console.ReadLine()

    End Sub

End Module

O código acima esta criando instâncias das classes : Carro , Navio, Aviao e Gol. Ao executar o código iremos obter:

Conclusão ?

Quando você instância um objeto de uma classe filha o construtor da classe pai será executado e em seguida será executado o construtor da classe filha.

Note que a instanciação da classe Gol que herda da classe Carro que por sua vez herda da classe Transporte temos a execução do construtor da classe Transporte depois da classe Carro e a seguir da classe Gol.

Vamos agora criar uma instância da classe Formula1. O código da classe é o seguinte:

    Public Class Formula1
        Inherits Carro
        Sub New()
            MyBase.new()
        End Sub
    End Class

A linha MyBase.new irá fazer com que o construtor da classe Pai ou SuperClasse seja executado. Veja abaixo o resultado:

Portanto você deve usar herança com cuidado . Se a hierarquia de herança do seu projeto for uma ramificação muito extensa o código a ser executado poderá ser muito dispendioso em termos de desempenho.

Até o próximo artigo sobre conceitos OO

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

 

             Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter
 

Referências:


José Carlos Macoratti