Desenvolvimento - Visual Basic .NET
POO - Programação Orientada à Objetos - Parte 3 (Relacionamento entre classes)
Agora que já vimos a parte teórica e um pouco da parte prática de implementação de herança com VB.NET, vamos ver como fazer o relacionamento entre classes utilizando POO.
por David PomaricoSituação:
Temos duas classes Cliente e Endereco que estão com relacionamento do tipo Composição. Para baixar uma apostila sobre diagrama de objetos clique aqui.
Agora vamos montar a classe Endereco. Os atributos da classe de endereço serão básicos: Logradouro, bairro, cidade e estado.
Public Class clsEndereco Private _Logradouro As String Public Property Logradouro() As String Get Return _Logradouro End Get Set(ByVal Value As String) _Logradouro = Value End Set End Property Private _Bairro As String Public Property Bairro() As String Get Return _Bairro End Get Set(ByVal Value As String) _Bairro = Value End Set End Property Private _Cidade As String Public Property Cidade() As String Get Return _Cidade End Get Set(ByVal Value As String) _Cidade = Value End Set End Property Private _Estado As String Public Property Estado() As String Get Return _Estado End Get Set(ByVal Value As String) _Estado = Value End Set End Property Public Sub New() End Sub End Class
Para relacionar as classes, vamos criar um atributo do tipo Classe Endereço. Veja como fica nossa classe de Cliente:
Public Class clsCliente Private _Codigo As Integer Public Property Codigo() As Integer Get Return _Codigo End Get Set(ByVal Value As Integer) _Codigo = Value End Set End Property Private _Nome As String Public Property Nome() As String Get Return _Nome End Get Set(ByVal Value As String) _Nome = Value End Set End Property Private _Endereco As clsEndereco Public Property Endereco() As clsEndereco Get Return _Endereco End Get Set(ByVal Value As clsEndereco) _Endereco = Value End Set End Property Public Sub New() End Sub End Class
Agora vamos implementar a chamada das classes. Primeiramente devemos saber se o relacionamento entre as classes é do tipo agregação ou composição. Se for do tipo composição, sabemos que há um relacionamento forte. Vamos aplicar no nosso exemplo.
Sabemos que a classe Cliente está fortemente relacionada à classe Endereco. Com esse dado, chego a conclusão de que ao instanciar a classe Cliente eu terei de ter um objeto endereço. Então eu posso criar o método NEW() com sobrecarga. Então vamos adicionar outro construtor na classe Cliente:
Public Sub New(ByVal parEndereco As clsEndereco) Me.Endereco = parEndereco End Sub
Ou seja, ao instanciar a classe Cliente eu posso passar como parâmetro um objeto do tipo Endereco.
Agora vamos ver como fica a implementação da chamada das classes. Criei um form com um botão. Ao clicar neste botão ele irá instanciar os objetos.
Veja como ficou a implementação do botão:
Dim Endereco As New clsEndereco Endereco.Logradouro = "Rua Tres Lagoas, 123" Endereco.Bairro = "Bairro Azul" Endereco.Cidade = "São Paulo" Endereco.Estado = "SP" Dim Cliente As New clsCliente(Endereco) Cliente.Codigo = 1 Cliente.Nome = "David Pomarico"
Assim estará feito o relacionamento entre as classes. Se eu precisar pegar o Logradouro do Cliente, eu posso utilizar o atributo Endereco do objeto Cliente:
MessageBox.Show(Cliente.Endereco.Logradouro)
Existe outra forma de setar o atributo Endereco da classe Cliente. Deixei os dois exemplos para você escolher qual a melhor forma de implementar:
Dim Cliente As New clsCliente Cliente.Codigo = 1 Cliente.Nome = "David Pomarico" Cliente.Endereco = Endereco
Aguardem a parte 4 onde irei falar sobre Interface.
Para baixar o projeto, clique aqui.
Abraços
David Pomarico
- 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