 VB.NET - Aplicação de acesso a dados em 3 camadas - parte 
2
 VB.NET - Aplicação de acesso a dados em 3 camadas - parte 
2
Se você perdeu a primeira parte deste artigo acompanhe em VB.NET - Aplicação de acesso a dados em 3 camadas - parte 1.
Apenas para lembrar ...

A solução criada no VS.NET 2003/VB2005 será composta de 3 projetos conforme descritos a seguir:
Vou apresentar neste artigo o Projeto CamadaDeNegócios. O principal arquivo desta camada é o arquivo Pessoa.vb no qual esta a definição da classe Pessoa. Esta classe representa o conceito único de Pessoa e define os métodos/propriedades que podemos aplicar aos nossos objetos gerados a partir da instância desta classe. Esta classe define os seguintes métodos propriedades:
Propriedades : Nome, Endereco, Cidade, Estado, CodPostal, Telefone, Email, DadosModificados e Contatos
Métodos : Excluir, Incluir, Modificar, Observar e ObservarContatos
Abaixo temos a estrutura da classe :
|  | 
A primeira vista notamos que a classe Pessoa usa as seguintes declarações de importação:
Imports
System.DataAlém disto a classe também possui variáveis membros, propriedades e métodos assim discriminados:
1- Variáveis de instância da classe Pessoa
| 'define as propriedades da classe Pessoa (todas do tipo Private)'com isto o acesso aos membros somente pode ser feitas via propriedades (que são Public) Private _nome As String = String.Empty Private _endereco As String = String.Empty Private _cidade As String = String.Empty Private _estado As String = String.Empty Private _codPostal As String = String.Empty Private _telefone As String = String.Empty Private _eMail As String = String.Empty Private _modificado As Boolean = False | 
2- Propriedades da classe Pessoa :
| Public
    ReadOnly
    Property Nome()
    As 
    String Get Return _nome End GetEnd Property Public Property Endereco() As String Get Return _endereco End Get Set(ByVal Value As String) _endereco = Value _modificado = True End SetEnd Property Public Property Cidade() As String Get Return _cidade End Get Set(ByVal Value As String) _cidade = Value _modificado = True End SetEnd Property Public Property Estado() As String Get Return _estado End Get Set(ByVal Value As String) _estado = Value _modificado = True End SetEnd Property Public Property CodPostal() As String Get Return _codPostal End Get Set(ByVal Value As String) _codPostal = Value _modificado = True End SetEnd Property Public Property Telefone() As String Get Return _telefone End Get Set(ByVal Value As String) _telefone = Value _modificado = True End SetEnd Property Public Property EMail() As String Get Return _eMail End Get Set(ByVal Value As String) _eMail = Value _modificado = True End SetEnd Property Public ReadOnly Property DadosModificados() As Boolean Get Return _modificado End GetEnd Property Public Shared ReadOnly Property Contatos() As DataTable Get If Not AgendaBD.DadosCarregados Then AgendaBD.carregarDados() End If Return AgendaBD.Dados End GetEnd Property 
 | 
Estas propriedades tem o objetivo de permitir o acesso aos dados da classe de forma encapsulada.
2- Métodos da classe Pessoa :
a-) Excluir - Verifica se o nome informado é válido e invoca o método ExcluirReg da classe AgendaBD para excluir o registro passando o nome do contato como parâmetro.
| Public
    Function Excluir() As
    
    Boolean 
 _nome = String.Empty Return True Else Return False End IfElse Return FalseEnd If End Function | 
b-) Incluir - Utiliza o método NovoReg da classe AgendaBD passando o nome do cliente como parâmetro para incluir um novo cliente.
| Public Shared
    Function Incluir(ByVal 
    Nome As
    String)
    As
    Boolean Return AgendaBD.NovoReg(Nome) End Function | 
c-) Modificar - Verifica se houve modificação nos dados e se o nome não esta vazio. Neste caso preenche o array _dados() com os valores do datatable. Em seguida usa o método ModificaReg() passando o array como parâmetro e retorna True alterando o valor da variável _modificado para False.
| PublicFunction Modificar() As Boolean If (_modificado) And (_nome <> String.Empty) Then Dim _dados(7) As String _dados(0) = _nome _dados(1) = _endereco _dados(2) = _cidade _dados(3) = _estado _dados(4) = _codPostal _dados(5) = _telefone   _dados(6) = _eMail If AgendaBD.ModificarReg(_dados) Then _modificado = FalseReturn True Else Return False End IfElse Return FalseEnd If End Function | 
d-) Observar - Verifica se o nome esta vazio, senão estiver cria um datarow para exibir os dados de um cliente com o nome informado como parâmetro. A seguir atribui os valores as variáveis membros da classe.
| PublicFunction Observar(ByVal Nome As String) As Boolean If Nome <> String.Empty Then Dim dr As DataRow = AgendaBD.ExibirPessoa(Nome) If Not IsNothing(dr) Then _nome = dr("Nome").ToString() _endereco = dr("Endereco").ToString() _cidade = dr("Cidade").ToString() _estado = dr("Estado").ToString() _codPostal = dr("CodPostal").ToString() _telefone = dr("Telefone").ToString() _eMail = dr("EMail").ToString() _modificado = False Return TrueElse If _nome <> String.Empty Then _nome = String.Empty End IfReturn False End If Else Return FalseEnd If End Function | 
e-) ObservarContatos - Carrega os dados do arquivo XML.
| 'método 
    estático ou método de classe e Public Public Shared Sub ObservarContactos() 
    'carrega dados do arquivo xml End Sub | 
Você notou que a classe Pessoa utiliza a classe AgendaBD para fazer o acesso aos dados que estão armazenados em um arquivo XML.
Que tal fazermos a representação UML da classe Pessoa. Apenas para lembrar vamos revisar alguns conceitos :
"A Unified Modeling Language ('UML) é uma linguagem de modelagem não proprietária de terceira geração. Ela não é um método de desenvolvimento, o que significa que ela não diz para você o que fazer primeiro e em seguida ou como desenhar seu sistema, mas lhe auxilia a visualizar seu desenho e a comunicação entre objetos." - Wikipedia
A representação de classes em diagramas UML contempla três tipos básicos de informação: o nome da classe, os seus atributos e os seus métodos. Graficamente, um retângulo com três compartimentos internos representa esses grupos de informação:
- (privativo), nenhuma 
    visibilidade externa;
    + (público), visibilidade externa total; e
    # (protegido), visibilidade externa limitada. 
    
A representação UML da classe Pessoa poderia ser feita, de forma simplificada, assim :
| Pessoa | 
| 
 | 
| 
 | 
A classe Pessoa depende da classe AgendaBD pois utiliza objetos desta classe. A representação UML para esta ocorrência é dada a seguir:
nota: A classe Pessoa usa os métodos excluirReg(), ExibirPessoas(),etc. da classe AgendaBD.
|  | 
Nota: Esta representação foi obtida no BlueJ . O BlueJ é um ambiente integrado Java especialmente criado para ensinar os conceitos da OOP.
Acompanhe o próximo artigo : VB.NET - Aplicação de acesso a dados em 3 camadas - parte 3
Te aguardo no próximo artigo VB.NET ...
| Veja os 
    Destaques e novidades do SUPER DVD Visual Basic 
(sempre atualizado) : clique e confira ! Quer migrar para o VB .NET ? 
 Quer aprender C# ?? 
 Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? | 
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a 
Objetos com VB .NET
