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:
- A camada de interface: UI –
namespace UI - A camada de negócios: BLL –
namespace BLL e classe produtoBLL - 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:
![]() |
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;
![]() |
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:
![]() |
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()
{}
Agora vejamos os métodos:
1. selecionaProdutos() – retorna um
datatable com todos os produtos usando o método selectProdutos() da
camada DAL;
public
DataTable
selecionaProdutos()
{
DataTable tb = new DataTable();
try{
dal = new DAL.produtoDAL();
tb = dal.selectProdutos();
}
catch (Exception ex)
{
throw ex;
}
return tb;
}
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)
{
try{
dal = new produtoDAL();
return dal.selectProdutoByID(id);
}catch (Exception ex) {
throw ex;
}
}
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()
{
try{
dal = new produtoDAL();
return dal.selectListProdutos();
}catch (Exception ex) {
throw ex;
}
}
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){
try{
dal = new DAL.produtoDAL();
dal.insertProduto(produto);
}catch (Exception ex) {
throw ex;
}
}
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){
try{
dal = new DAL.produtoDAL();
dal.updateProduto(produto);
}catch (Exception ex) {
throw ex;
}
}
6. deleteProduto() – Usada para excluir um
produto no estoque via método deleteProduto() da camada DAL;
public void excluiProduto(Produto produto){
try{
dal = new produtoDAL();
dal.deleteProduto(produto);
}catch (Exception ex) {
throw ex;
}
}
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.
![]() |
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…








