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:
|
|||||||
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)
- Entity Framework 4: Repositório GenéricoVisual Basic .NET
- As edições 14 da Easy .net Magazine e 88 da .net Magazine já estão disponíveis.ADO.NET
- Postando no Twiiter com .NET e Migre.meC#
- Setup ApplicationsVisual Basic .NET
- Problemas na manipulação de arquivos do MS Excel com .NETVisual Basic .NET