C# - Gerenciamento de banco de dados MySQL - II


Continuando o meu artigo -  C# - Gerenciamento de banco de dados MySQL - I  - vou mostrar a definição da camada de negócios - Bussiness Logic Layer (BLL) da nossa aplicação. Lembrando que :

Estamos usando a arquitetura em 3 camadas definida assim:

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:

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:

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 a camada DAL para acessar os métodos da classe produtoDAL e da referência a 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 esta 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 a simplicidade do exemplo mas em um sistema de produção aqui teríamos as validações referente ao negócio como restrições de valores, cálculo de impostos, descontos, etc.

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

Aguarde no próximo artigo a continuação onde irei definir como acessar e apresentar as informações na camada de apresentação - BLL: C# - Gerenciamento de banco de dados MySQL - III

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

Referências:


José Carlos Macoratti