Desenvolvimento - Visual Basic .NET

Usando Orientação a Objetos em VB.net

Sem dúvida a OOP seja uma das partes mais difíceis no que tende a área de desenvolvimento. Neste Artigo estaremos aprendendo sobre alguns conceitos fundamentais seguidos de alguns exemplos.

por Jonas Chaves



    Encapsulamento
  • Polimorfismo
  • Herança

Encapsulamento

Sem dúvida o componente mais importante quando se trata sobre orientação a objetos é o encapsulamento. O encapsulamento consiste da união de atributos para a formação de um objeto, sendo a instancialização a única forma de acesso ao mesmo.

O encapsulamento nos fornece no ponto de vista “programador” uma excelente segurança. Imagine que se tenha contratado um novo programador e você ainda não possua 100% de confiança no mesmo. Aplicando o conceito de encapsulamento em seus projetos, o desenvolvedor ao instancializar sua classe terá acesso somente a pequenas dados e não ao código utilizado.

Vejamos um exemplo:

Nesse exemplo estarei criando uma classe Pessoa, contendo apenas os atributos pertencentes ao mesmo.

Public Class clsPessoa

Private _ID As Integer

Private _Nome As String

Private _Telefone As String

Public Property ID()

Get

Return _ID

End Get

Set(ByVal value)

_ID = value

End Set

End Property

Public Property Nome()

Get

Return _Nome

End Get

Set(ByVal value)

_Nome = value

End Set

End Property

Public Property Telefone()

Get

Return _Telefone

End Get

Set(ByVal value)

_Telefone = value

End Set

End Property

Quando instancializamos nosso classe Pessoa passamos a ter acesso aos atributos que fazem parte de uma pessoa.

A instancialização consiste do seguinte procedimento:

Dim Cliente As clsPessoa

Cliente = New clsPessoa

Cliente.ID = 1

Cliente.Nome = "Jonas Chaves"

Cliente.Telefone = "(32)3421-6469"

Uma outra forma de instancializarmos seria utilizar: Dim Cliente As New clsPessoa

Veja que após a instancialização passamos a ter acesso somente ao atributos de classe pessoa (ID, Nome e Telefone), em nenhum momento tivemos acesso ao codigo, mantendo uma total segurança de nossas informações e minimizando os error por parte do desenvolvedor.

Um exemplo seriamos tomar como exemplo um jogo de video game. Quando apertamos a tecla para frente é como se dissesemos para a classe boneco que ele precisa andar, e por tras desse apertar uma serie de coisas irao acontecer, coisas essas que em momento algum teremos acesso mais apenas iremos visualizar o resultado da ação efetuada com aquele apertar do botão. Da mesma forma nossa classe ao ser instancializada funcionara. Poderimos ter a opção de instancializar o procedimento InserirUsuario e com isso apenas passarmos os dados que irao ser inseridos, com isso nossa classe ao receber estes valores ira processar o codigo referente ao adicionar e teremos como resposta uma “mensagem” de sucesso.

Herança

Como o próprio nome nos diz herança nada mais é que herdarmos alguma coisa de alguem. Imagine uma mulher gravida, quando seu filho nascer ele herdara traços de seus pais e não os traços de seu cachorro, nem de seu gato, nem de seu peixe.

Da mesma forma na construção de um progrma podemos separa os funcionarios, fornecedores e clientes em uma mesma classe, visto que eles possuem os mesmos atributos de uma pessoa uma vez que eles são pessoas. Ambos possuem nome, sexo, telefone, endereço etc.

Com isso podemos utilizar a seguinte imagem:

Pessoa

Funcionário

Fornecedor

Cliente


Nessa imagem podemos analisar que ambos os grupos estão diretamente ligados a classe Pessoa e o que temos como alteração e diferencial o comportamento de cada uma dentro de um mesmo grupo e fora dele.

Atributos

Comportamento1 (Cliente1)

Comportamento2 (Cliente2)

Nome

Jonas Chaves

Wilson Mendonça

Sexo

M

M

Em linguagem de programação temos a aplicação da herança da seguinte forma:

Dim Cliente, Funcionario As New clsPessoa

Cliente.ID = 1

Funcionario.ID = 2

txtID.Text = Cliente.ID

txtNome.Text = Funcionario.ID

Como podemos observar acima ambos os grupos (Cliente e Funcionário) receberam os mesmos atributos, porem a forma como eles se comportam são diferentes. Ou seja, ao declararmos as variáveis (Cliente e Funcionário) como Pessoa ambos passaram a utilizar todos os atributos ID, Nome e Telefone.

Além disso, ao se trabalhar com Herança possuímos muitas outras vantagens. Uma delas ao se trabalhar com vários grupos pessoa e não utilizarmos OOP em nosso projeto, neste caso teríamos que sempre estar tratando cada parte individualmente retirando ou inserindo atributos que são comum a todas. Quando utilizamos OOP basta alterarmos nossa classe e ambas passarão a ter estes atributos disponíveis.

Por fim não poderia deixar de ressaltar neste documento sobre a possibilidade de herdarmos atributos de uma classe e adicionarmos novos atributos e ate criamos outra classe utilizando os atributos já utilizados em outra classe. Veja a imagem abaixo


Nesse exemplo estamos criando uma classe Estudante que recebera os Atributos da classe Pessoa e da classe Graduação e poderá alem disso possuir outros atributos referentes à sua classe (Identificação). Esta situação recebe o nome de *Herança Múltipla.

*Herança Múltipla = Nome dado quando uma classe herda as características de 2 outras classes

Criação da classe Estudante

Public Class clsStudent

Inherits clsPessoa \ Herança Classe Pessoa

Private _Matricula As String

Public Property Matricula()

Get

Return _Matricula

End Get

Set(ByVal value)

_Matricula = value

End Set

End Property

End Class

Resultado

Polimorfismo

O conceito de Polimorfismo existe quando possuímos métodos que podem assumir formas diferentes. Para curar sua duvida usarei um exemplo clássico utilizado em 99,999% dos livros sobre o assunto.

Imagine uma chave liga/desliga, ela possui duas formas: Ligada e Desligada. Quando esta ligada ela ativa alguma coisa e quando desligada desativa o mesmo.

Vamos utilizar um exemplo não funcional mais que será de grande facilidade de assimilação para entendermos sobre o conceito Polimorfismo.

Public Class clsJonas

Public MustInherit Class Forma

Private posX As Integer

Private posY As Integer

Public Sub New(ByVal x As Integer)

Me.posX = x

End Sub

Public Sub New(ByVal x As Integer, ByVal y As Integer)

Me.posX = x

Me.posY = y

End Sub

Public Property PosicaoX() As Integer

Get

Return posX

End Get

Set(ByVal valor As Integer)

posX = valor

End Set

End Property

Public Property PosicaoY() As Integer

Get

Return posY

End Get

Set(ByVal value As Integer)

posY = value

End Set

End Property

Public MustOverride Function GetDesenhar() As Integer

End Class

End Class

Quando utilizamos a declaração “Public MustInherit Class Forma” isso indica que esta classe servira como base para o desenvolvimento de outras classes, com isso podemos concluir que não será possível instancializar esta classe. Já a declaração “Public MustOverride Function GetDesenhar() As Integer” como verá mais abaixo nos devolvera o resultado de todo o processamento efetuado.

Um segundo detalhe que devemos entender seria a construção da declaração public sub New , podemos observar que a mesma se encontra duas vezes em nossa classe porem com um numero de argumentos diferentes.

Public Class ContaUm

Inherits clsJonas.Forma

Public Sub New(ByVal X As Integer)

MyBase.New(X)

End Sub

Public Overrides Function GetDesenhar() As Integer

Return Me.PosicaoX * PosicaoX

End Function

End Class

Public Class ContaDois

Inherits clsJonas.Forma

Public Sub New(ByVal X As Integer, ByVal Y As Integer)

MyBase.New(X, Y)

End Sub

Public Overrides Function GetDesenhar() As Integer

Return Me.PosicaoX * Me.PosicaoY

End Function

End Class

Nesta Segunda classe estamos herdando “Inherits clsJonas.Forma

E por ultimo estaremos trabalhando com ela em nosso Formulário:

Dim S As clsJonas.Forma

S = New ContaUm(23)

TextBox1.Text = CStr(S.GetDesenhar)

S = New ContaDois(8, 2)

TextBox2.Text = CStr(S.GetDesenhar)

Jonas Chaves

Jonas Chaves - Formado como técnico em Visual Basic e bacharel em sistemas de informação.
Atua na área de Acessória e Desenvolvimento de software para empresas de diferentes setores, alem de ministrar aulas de Visual Basic 6, ASP, Visual Basic.net 2008 e Segurança em Redes.
Jonas Chaves trabalha atualmente nas linguagens: ASP, Visual Basic 6 e Visual Basic.net 2008.