| Por David Carlos Pomarico dcpomarico@uol.com.br Analista de Sistemas, atualmente trabalhando em uma multinacional, graduado em Tecnologia em Desenvolvimento de Softwares na Faculdade Informática e Administração Paulista (FIAP), palestrante acadêmico Microsoft em plataforma .NET, Co-Líder do Grupo de Usuários Codificando.Net SP ( www.codificando.net ), experiência de 2 anos em .NET, conhecimentos e práticas em Framework .NET, ASP.NET, WinForms, VB.NET, C#.NET, Crystal Reports.NET, Active Reports for .NET, MS SQL 2000, Oracle 9i, UML, XML. Visite o meu The spoke: http://br.thespoke.net/MyBlog/dpomarico/MyBlog.aspx |
|
|
|
|
| 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.
Situaçã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.