Dev (Back & Front)ARTIGO

C# – Gerenciamento de banco de dados MySQL – Parte 02

Continuando o assunto do último artigo, veremos a definição da camada de
negócios – Business Logic Layer (BLL) da nossa aplicação. Lembrando que estamos usando a arquitetura
em 3 camadas definidas assim:

  1. A camada de interface: UI –
    namespace UI
  2. A camada de negócios: BLL –
    namespace BLL e classe produtoBLL
  3. A camada de acesso a dados:
    DAL – namespace DAL e classe produtoDAL

Em uma aplicação em 3 camadas temos uma hierarquia
de chamadas onde:

c_mysql21.gif

A UI chama a BLL que chama a DAL que por sua vez acesso os dados e retorna os
objetos;

Nunca deverá haver uma chamada
direta da UI para a DAL e vice-versa (quando usamos os
controles de acesso a dados vinculados no formulário, estamos
fazendo o acesso direto da camada de interface para a DAL ou
banco de dados, o que não é uma boa prática).

Nosso projeto possui a seguinte estrutura:

  • produtoBLL – contém os métodos das
    regras de negócio; (namespace BLL)
  • produtoDAL – contém os métodos para
    acesso a dados no MySQL; (namespace DAL)
  • produto – contém a classe Produto;
    (namespace DTO)
  • UI – representa a nossa
    aplicação Windows Forms;
c_mysql16.gif

Onde já implementamos a classe produtoDAL na camada
DAL.

Vamos agora mostrar a definição da camada BLL
onde temos a classe produtoBLL. A classe produtoBLL possui os
seguintes métodos:

  • DataTable selecionaProdutos() – retorna
    todos os produtos ;
  • novoProduto(Produto produto) – inclui um
    novo produto;
  • alteraProduto(Produto produto) – altera
    os dados de um produto;
  • excluiProduto(Produto produto) – exclui
    um produto;
  • List<Produto> listaProdutos() –
    retorna uma lista genérica de produtos;
  • Produto listaProdutoPorID(int id) –
    retorna um único produto;

Conforme é mostrado na figura a seguir:

c_mysql22.gif

Vejamos o código da classe produtoBLL:

Devemos declarar os seguintes namespaces nos
imports:

using
System.Collections.Generic;

using
System;

using
DAL;

using
DTO;

using
System.Data;

Precisamos da referência à camada DAL para acessar
os métodos da classe produtoDAL e da referência à camada DTO para
acessar as propriedades da entidade Produto. A referência a Generic deve-se ao
fato de estarmos retornando uma lista genérica de produtos no método
listaProdutos();

O construtor da classe ProdutoBB está vazio:

public produtoBLL()<br /><br />    {}

Agora vejamos os métodos:

1. selecionaProdutos() – retorna um
datatable com todos os produtos usando o método selectProdutos() da
camada DAL;

public<br />DataTable<br />selecionaProdutos()<br /><br />{<br /><br />DataTable tb = new DataTable();<br /><br />try{<br /><br />     dal = new DAL.produtoDAL();<br /><br />     tb = dal.selectProdutos();<br /><br />}<br /><br />catch (Exception ex)<br /><br />{<br /><br />throw ex;<br /><br />}<br /><br />return tb;<br /><br />} 

2. listaProdutoPorID() – Usada para
retornar uma entidade Produto representando um único produto pelo seu
código (id) através do método selectProdutoByID() da camada DAL;

public Produto listaProdutoPorID(int id)<br /><br />{<br /><br />   try{<br /><br />        dal = new produtoDAL();<br /><br />            return dal.selectProdutoByID(id);<br /><br />      }catch (Exception ex) {<br /><br />       throw ex;<br /><br />      }<br /><br />} 

3. listaProdutos() – Usada para
retornar uma lista de objetos Produto representando uma coleção de produtos
usando o método selectListProdutos() da camada DAL;

public List<Produto> listaProdutos()<br /><br />{<br /><br />    try{<br /><br />          dal = new produtoDAL();<br /><br />             return dal.selectListProdutos();<br /><br />       }catch (Exception ex) {<br /><br />         throw ex;<br /><br />      }<br /><br />} 

4. novoProduto(Produto produto) – Usada para
incluir um novo produto no estoque usando o método insertProduto() da
camada DAL;

public void novoProduto(Produto produto){<br /><br />try{<br /><br />        dal = new DAL.produtoDAL();<br /><br />        dal.insertProduto(produto);<br /><br />     }catch (Exception ex) {<br /><br />        throw ex;<br /><br />     }<br /><br />} 

5. updateProduto() – Usada para atualizar os
dados de um produto no estoque através do método updateProduto() da
camada DAL;

public void alteraProduto(Produto produto){<br /><br />try{<br /><br />        dal = new DAL.produtoDAL();<br /><br />        dal.updateProduto(produto);<br /><br />     }catch (Exception ex) {<br /><br />       throw ex;<br /><br />    }<br /><br />} 

6. deleteProduto() – Usada para excluir um
produto no estoque via método deleteProduto() da camada DAL;

public void excluiProduto(Produto produto){<br /><br />try{<br /><br />         dal = new produtoDAL();<br /><br />         dal.deleteProduto(produto);<br /><br />     }catch (Exception ex) {<br /><br />       throw ex;<br /><br />    }<br /><br />} 

Não estamos efetuando nenhuma validação de negócio
nessas classes devido à simplicidade do exemplo, mas em um sistema de produção
aqui teríamos as validações referentes ao negócio como restrições de valores,
cálculo de impostos, descontos, etc.

Dessa forma concluímos a defnição do código da
nossa camada de negócios – BLL – através da implementação dos métodos da
classe produtoBLL.

c_mysql23.gif

Em um próximo artigo vamos continuar o assunto, definindo como acessar e apresentar as informações na camada de apresentação – BLL

Eu sei, é apenas Visual C#, mas eu gosto…

é referência em Visual Basic no Brasil e autor dos livros "Aprenda Rápido: ASP" e "ASP, ADO e Banco de Dados na Internet". Mantenedor do site macoratti.net.

Ver perfil