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
Projeto Modular - decomposição funcional , processos e dados separados
reutilização - bibliotecas compostas de procedimentos e funções parametrizadas
O modelo de objetos apresenta as seguintes características : Foco em conceitos , representados por dados , sobre os quais são definidas as operações
projeto Modular - projeto de classes , seus relacionamentos , objetos e suas interações ; processos e dados encapsulados
reutilização : bibliotecas compostas de classes/interfaces que podem ser adaptadas por extensão de propriedades
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 :
propriedades comuns são transmitidas aos descendentes
descendentes podem adicionar/alterar propriedades
estabelecem uma hierarquia de classes
reduzem a quantidade de código
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: