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:

  1. Solução AgendaNet - composta por 3 projetos.
  2. Projeto AgendaNET - Representa a camada de apresentação da aplicação; é composto pelos formulários : FrmInicio.vb, Agenda.vb e FrmNovaPessoa.vb
  3. Projeto CamadaDeDados - Representa a camada de dados da aplicação; é composto pelo arquivo AgendaDB.vb que contém os métodos para tratamento dos dados.
  4. Projeto CamadaDeNegocios - Representa a camada de negócios da aplicação; é composto pelo arquivo Pessoa.vb  que defina a classe Pessoa suas propriedades e métodos.

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.Data
Imports
CamadaDeDados

Alé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 Get

End Property
 

Public Property Endereco() As String

   Get

     Return _endereco

   End Get

   Set(ByVal Value As String)

      _endereco = Value

      _modificado = True

   End Set

End Property


Public
Property Cidade() As
String

   Get

      Return _cidade

   End Get

   Set(ByVal Value As String)

     _cidade = Value

     _modificado = True

   End Set

End Property
 

Public Property Estado() As String

   Get

       Return _estado

   End Get

   Set(ByVal Value As String)

      _estado = Value

      _modificado = True

    End Set

End Property


Public
Property CodPostal() As
String

   Get

      Return _codPostal

   End Get

   Set(ByVal Value As String)

      _codPostal = Value

     _modificado = True

    End Set

End Property


Public
Property Telefone() As
String

   Get

      Return _telefone

    End Get

    Set(ByVal Value As String)

       _telefone = Value

      _modificado = True

    End Set

End Property


Public
Property EMail() As
String

   Get

      Return _eMail

    End Get

    Set(ByVal Value As String)

      _eMail = Value

      _modificado = True

    End Set

End Property


Public
ReadOnly Property DadosModificados() As
Boolean

   Get

      Return _modificado

   End Get

End Property

 

Public Shared ReadOnly Property Contatos() As DataTable

   Get

      If Not AgendaBD.DadosCarregados Then

         AgendaBD.carregarDados()

      End If

      Return AgendaBD.Dados

End Get

End 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


If _nome <> String.Empty
Then

    If (AgendaBD.ExcluirReg(_nome)) Then

        _nome = String.Empty

        Return True

    Else

        Return False

    End If

Else

    Return False

End 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.

Public Function 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 = False

     Return True

  Else

     Return False

  End If

Else

  Return False

End 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.

Public Function 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 True

    Else

       If _nome <> String.Empty Then

        _nome = String.Empty

       End If

       Return False

    End If

Else

    Return False

End 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
AgendaBD.carregarDados()

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:

Nome da classe
 
Um identificador para a classe, que permite referenciá-la posteriormente -- por exemplo, no momento da criação de um objeto.

Atributos
O conjunto de propriedades da classe. Para cada propriedade, especifica-se:
Métodos
O conjunto de funcionalidades da classe. Para cada método, especifica-se sua assinatura, composta por:

 A representação UML da classe Pessoa poderia ser feita, de forma simplificada, assim :

Pessoa

  • +Nome
  • +Endereco
  • +Cidade
  • +Estado
  • +CodPostal
  • +Telefone
  • +Email
  • +DadosModificados
  • +Contatos
  • +Excluir : boolean
  • +Incluir : boolean
  • +Modificar : boolean
  • +Observar : boolean
  • +ObservarContatos : void

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:


José Carlos Macoratti