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 Pomarico



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.

Abraços
David Pomarico

David Pomarico

David Pomarico - Analista de Sistemas, MCP (Micrososft Certified Professional) em ASP.NET e WindowsForms, atualmente trabalhando em uma multinacional, graduado em Tecnologia em Desenvolvimento de Softwares na Faculdade Informática e Administração Paulista (FIAP), 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, Pocket PC, VB.NET, C#, 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