Um dos grandes “baratos” de se desenvolver em camadas é a possibilidade de separarmos componentes por responsabilidades em comum. Existem muitos programadores que acham bobagem se preocupar com toda essa estruturação.

Mas se formos falar de um grande projeto de desenvolvimento de software, onde há toda uma equipe de desenvolvimento trabalhando, vários desenvolvedores alocados para aquele projeto, chegará um momento em que determinados trechos de códigos se tornaram quase que ilegíveis, quase impossíveis de trabalhar com eles.

Bom, mas antes de começarmos a pôr a mão na massa, citaremos e falaremos um pouco a respeito das camadas que podemos utilizar para resolvermos um dado problema de desenvolvimento de software.

Camadas

Falaremos um pouco sobre os modelos de desenvolvimento de 2 e 3 camadas. Mas antes de falarmos sobre os modelos propostos anteriormente, daremos alguns conceitos de possíveis camadas que possam existir num projeto.

Conceitos

  • Camada de Apresentação - camada que trata a parte de interface gráfica. Quando falamos de interface gráfica, estamos nos referindo à parte de botões, de janelas, de formulários, de Textbox, de Label, de Combobox, ou seja, queremos nos referir a parte visível, a parte do sistema a qual o usuário interage e se comunica com o mesmo.
  • Camada de Negócios - camada responsável pela lógica de negócios do sistema. Não é uma camada visível, como as camadas de apresentação e aplicação. Por exemplo: quando estamos prestes a sacar dinheiro em um caixa eletrônico, a condição primordial para isto acontecer é que exista saldo na sua conta. Ou seja, é a camada que contém a lógica de como o sistema trabalha como o negócio transcorre.
  • Camada de Persistência - camada responsável por salvar o estado do objeto em algum lugar (geralmente, numa base de dados). Por exemplo, um funcionário de uma loja de confecções precisa cadastrar um cliente. O ato de cadastrar o cliente significa coletar dados desse cliente; esses dados coletados serão ao final de todo este processo de cadastro inseridos numa base de dados.

Projeto em duas camadas

Os primeiros sistemas cliente-servidor eram basicamente constituídos de duas camadas. As camadas são:

  • Camada Cliente: encapsulava as camadas de apresentação e da lógica de negócios;
  • Camada Servidor: Camada responsável pela persistência de dados(SGBD).

Projeto em três camadas

A arquitetura cliente/servidor em duas camadas sofria de vários problemas:

  • Falta de escalabilidade – conexões a bancos de dados;
  • Enormes problemas de manutenção, etc.

Com o surgimento do desenvolvimento em 3 camadas, já houve uma melhor estruturação e organização da ideia de como montar um projeto de fabricação de software. As camadas são:

  • Camada de apresentação;
  • Camada de aplicação;
  • Camada de persistência.

Exemplo prático

Para desenvolvermos este exemplo, usaremos a IDE Eclipse. A base de dados será feita em MSAccess. Abaixo segue a estrutura da base de dados e a estruturação do projeto na IDE Eclipse.

Base de dados

O nome que daremos a nossa base de dados será baseTeste.mdb, e tabela que construiremos nesta base terá o nome de cliente, conforme descrito na figura abaixo. Obs.: (Não se esqueça de criar uma conexão ODBC no seu micro).

A conexão ODBC deverá ter o seguinte nome: projetoTeste. Depois de ter criado a conexão, você deve ligar a fonte ODBC de dados criada (no caso, projetoTeste), para aonde no projeto, o diretório, a pasta aonde estiver a base de dados. Na Figura 1 está a configuração da base de dados.

Configuração da base de dados
Figura 1. Configuração da base de dados

Projeto

Logo após, vamos construir a estrutura de pacotes do nosso projeto. Abra a IDE Eclipse (disponível para download no site da Eclipse). Para usar a IDE Eclipse basta descompactar o arquivo zipado num diretório de sua escolha, e executar o .EXE com o nome eclipse.exe.

A estrutura do projeto ficará assim, como descrita na Figura2.

estrutura do projeto
Figura 2. A estrutura do projeto

Estruturação dos pacotes

Bom, como já foi dito no início deste artigo, um dos grandes “baratos” de projetos organizados em camadas é a organização de componentes por responsabilidades em comum. Bom, vamos à explicação do porquê de a estrutura do nosso projeto estar montada tal como é.

Este sistema fará coisas simples, como incluir, alterar, excluir. Só mesmo para ilustrar toda a parte conceitual dita até agora:

  • Pacote ‘br.com.devmedia.aplicacao’: Este pacote contém a classe que iniciará a aplicação (contendo o método main) e, a classe da janela principal do programa, onde estarão os acessos as outras partes do sistema.
  • Pacote ‘br.com.devmedia.cliente.formularios’: Este pacote contém as classes que farão a interface com o usuário, com as funcionalidades do sistema.
  • Pacote ‘br.com.devmedia.dao’: Já este pacote, possui a responsabilidade de tratar a parte de dados, de persistência no banco de dados.
  • Pacote ‘br.com.devmedia.services’: Neste pacote se encontram as classes que irão trabalhar as requisições do usuário na interface e, também a parte de lógica de negócios.
  • Pacote ‘br.com.devmedia.vo’: Este pacote possui a classe que contém o padrão de um “objeto de valor”. Por exemplo, se você quiser incluir um objeto no banco (um cliente), o formulário capturará as informações dos campos do formulário, será instanciado um objeto da classe ClienteVo.java, e os valores provenientes do formulário serão atribuídos a esse novo objeto de valor, que por sua vez será persistido no banco de dados.

Na Figura 3 temos um trecho de código para ilustração.

emcpcujfig03.jpg
Figura 3. Classe ClienteVo.java

Conclusão

Bom, espero ter trazido um artigo de qualidade, que enriqueça seus conhecimentos sobre desenvolvimento em camadas. Os códigos-fontes estão todos comentados. Bom estudo!

Saiu na DevMedia!

  • Programador Java:
    Aprender Java não é uma tarefa simples, mas seguindo a ordem proposta nesse Guia, você evitará muitas confusões e perdas de tempo no seu aprendizado. Vem aprender java de verdade, vem!

Saiba mais sobre Java ;)

  • Guia Completo de Java:
    Neste Guia de Referência você encontrará todo o conteúdo que precisa para começar a programar com a linguagem Java, a sua caixa de ferramentas base para criar aplicações com Java.