Vous êtes sur la page 1sur 41

AULA 02 ARQUITETURA EM

CAMADAS
Maurcio Manoel Coelho Jnior
mauricio.junior@fafica-pe.edu.br
26 de agosto de 2014
https://edulify.com/mauricio.junior

Agenda

Definio
Propsito de Cada Camada
Vantagens e Desvantagem
Padro Arquitetura
Viso Arquitetural
Implementao da Arquitetura em 3 Camadas
Melhorando o Projeto
Referncias

26 de agosto de 2014

Definio
Estimula a organizao da arquitetura do
sistema em um conjunto de camadas coesas
com fraco acoplamento entre elas;
Cada camada possui um propsito bem
definido;
A camada superior conhece apenas a
camada imediatamente inferior (que fornece
seus servios atravs de uma interface).
26 de agosto de 2014

Definio
Cada camada formada por um conjunto de
classes com um determinado propsito.

26 de agosto de 2014

Propsito de Cada Camada


UI: agrega as classes do sistema com as quais os
usurios interagem;
Negcio: mantm as classes do sistema
responsveis pelos servios e regras do negcio;
Dados: camada responsvel pelo
armazenamento e recuperao dos dados
persistentes do sistema;
Comunicao: responsvel pela distribuio do
sistema em vrias mquinas.
26 de agosto de 2014

Vantagens e Desvantagem
Vantagens:
Separao de cdigo relativo a interface com o
usurio (UI), comunicao, negcio e dados;
Permite a mudana de implementao de uma
camada sem afetar a outra, desde que a
interface entre as mesmas seja mantida;
Possibilita que uma camada trabalhe com
diferentes verses de outra camada.
Desvantagem:
Aumento no nmero de classes existentes no
sistema.
26 de agosto de 2014

Padro Arquitetura em Camadas


Exemplos de diferentes configuraes do
padro arquitetura em camadas usando
tecnologias Java.

26 de agosto de 2014

Padro Arquitetura em Camadas


Arquitetura em 3 camadas
Possui as camadas: UI, Regras de Negcio e Acesso a
Dados;
A camada de UI: agrega as classes de fronteira.
Exemplo: GUICadastrarCliente, TelaCadastrarCliente;
A camada de Regras de Negcio: agrega as classes de
controle e entidade. Exemplos: ControladorCliente e
Cliente;
A camada de Acesso a Dados: agrega as classes de
persistncia dos dados. Exemplo:
RepositorioClienteBDR, RepositorioArrayBDR.
26 de agosto de 2014

Padro Arquitetura em Camadas


Arquitetura em 3 camadas
Entre as camadas UI e Negcio haver sempre
uma classe chamada Fachada;
A classe Fachada utilizada para oferecer um
caminho nico para acesso aos servios da
camada de regras de negcio;
As classes da UI, portanto, comunicam-se
apenas com a classe Fachada, que por sua vez
colabora com as outras classes internas da
camada de regras de negcio para oferecer os
servios.
26 de agosto de 2014

Padro Arquitetura em Camadas


Arquitetura em 3 camadas
O Controlador pode conter regras de controle
do sistema e delega aes da fachada para a
camada de acesso a dados;
Entre as camadas Negcio e Dados haver
sempre uma interface Java que uma classe
Repositrio implementar;
O Repositrio armazena os objetos persistentes
do sistema em algum meio de armazenamento
fsico (banco de dados, arquivo, etc.).
26 de agosto de 2014

Viso Arquitetural

26 de agosto de 2014

Viso Arquitetural

26 de agosto de 2014

PERGUNTAS?

26 de agosto de 2014

Implementao da Arquitetura em 3
Camadas
Diviso em Pacotes
Um pacote um conjunto de classes;
Agrupar em um pacote classes fortemente
relacionadas;
O pacote deve ser visto como um elemento
altamente coeso:
Classes de um mesmo pacote devem ter
acoplamento e colaborao relativamente altos.
Por outro lado, o acoplamento e colaborao entre
classes agrupadas em diferentes pacotes devem ser
relativamente baixos.
26 de agosto de 2014

Implementao da Arquitetura em 3
Camadas
Entidades
Implementar um Sistema para cadastro de
Cliente.
Classes Bsicas de Negcio (Entidades):
Cliente, Endereco.

26 de agosto de 2014

Implementao da Arquitetura em 3
Camadas
Exerccio 01
- Criar um pacote aulaXX.com.fafica.cliente;
- Criar um pacote aulaXX.com.fafica.endereco;
- Criar um pacote aulaXX.com.fafica.tela;
- Criar a classe Cliente com: nome (string), cpf (string), idade (int) e endereco
(Endereco) no pacote aulaXX.com.fafica.cliente;
- Criar a classe Endereco com: logradouro, numero, bairro, cidade e estado,
todos do tipo String no pacote endereco;
- Criar um programa chamado TelaCadastrarCliente no pacote tela para testar a
instancia de cliente ;
- Todos os atributos devem ser privados;
- Todas as classes precisam der um construtor, gets e sets e o mtodo toString.

XX = nmero da aula. Ex: aula02


26 de agosto de 2014

Implementao da Arquitetura em 3
Camadas
Fachada
Obrigatoriamente, deve implementar todos
os mtodos para auxiliar o CRUD de todas as
entidades.
Tem um ou mais atributos do tipo
Controlador.
Delega para os controladores as chamadas de
mtodos.
26 de agosto de 2014

Implementao da Arquitetura em 3
Camadas

26 de agosto de 2014

Implementao da Arquitetura em 3
Camadas
Exerccio 02
- Criar um pacote aulaXX.com.fafica.fachada;
- Criar a classe Fachada conforme figura anterior no pacote fachada;
- No mtodo clienteCadastrar imprimir o contedo da varivel cliente;
- Criar a varivel fachada (Fachada) no programa TelaCadastrarCliente; e
instanciar o objeto Fachada na varivel fachada; Chamar o mtodo
clienteCadastrar passando como parmetro o cliente criado no exerccio
anterior;

XX = nmero da aula. Ex: aula02

26 de agosto de 2014

Implementao da Arquitetura em 3
Camadas
Controlador
Um controlador para cada entidade persistente;
Contm os mtodos que sero chamados pela
fachada.
Exemplo: Servios bsicos de manuteno de um
cadastro tais como inserir, alterar, remover e buscar.

Tem um atributo do tipo IRepositorio para


acessar os mtodos da camada de acesso a
dados.
26 de agosto de 2014

Implementao da Arquitetura em 3
Camadas
Controlador

26 de agosto de 2014

Implementao da Arquitetura em 3
Camadas
Exerccio 03
- Criar a classe ControladorCliente conforme figura anterior no pacote
cliente;
- No mtodo cadastrar da classe ControladorCliente imprimir o contedo da
varivel cliente;
- Criar a varivel controladorCliente (ControladorCliente) na classe Fachada;
- No mtodo clienteCadastrar da Fachada, comentar a impresso da varivel
cliente e instanciar o objeto ControladorCliente na varivel
controladorCliente; Chamar o mtodo cadastrar da classe
ControladorCliente passando como parmetro a varivel cliente;

26 de agosto de 2014

Implementao da Arquitetura em 3
Camadas
Cadastro

26 de agosto de 2014

Implementao da Arquitetura em 3
Camadas
Interface do Repositrio
Ir oferecer os servios de persistncia de
dados;
Uma interface do repositrio para cada
entidade persistente.
Exemplo: Servios bsicos de persistncia tais
como inserir, alterar, remover, buscar e verificar
se um determinado objeto existe.
26 de agosto de 2014

Implementao da Arquitetura em 3
Camadas
Interface do Repositrio

26 de agosto de 2014

Implementao da Arquitetura em 3
Camadas
Exerccio 04
- Criar a interface IRepositorioCliente conforme figura anterior no pacote
cliente;

26 de agosto de 2014

Implementao da Arquitetura em 3
Camadas
Repositrio
Implementa a persistncia dos dados;
Obrigatoriamente, deve implementar todos
os mtodos da interface do repositrio;
Contm os mtodos que sero chamados
pelo Controlador ou Cadastro.
Exemplo: Servios bsicos de persistncia tais
como inserir, alterar, remover, buscar e verificar
se um determinado objeto existe.
26 de agosto de 2014

Implementao da Arquitetura em 3
Camadas
Repositrio

26 de agosto de 2014

Implementao da Arquitetura em 3
Camadas
Exerccio 05
- Criar a classe RepositorioClienteArray implementada da classe
IRepositorioCliente;
- No mtodo cadastrar imprimir o contedo da varivel cliente;
- Criar a varivel repositorioCliente (IRepositorioCliente) na Classe
ControladorCliente;
- No mtodo cadastrar da classe ControladorCliente, comentar a impresso
da varivel cliente e instanciar o objeto RepositorioClienteArray na varivel
repositorioCliente ; Chamar o mtodo cadastrar do RepositorioClienteArray
passando como parmetro o cliente criado no exerccio 03;

26 de agosto de 2014

Implementao da Arquitetura em 3
Camadas
Aplicao

26 de agosto de 2014

PERGUNTAS?

26 de agosto de 2014

MELHORANDO O
PROJETO

26 de agosto de 2014

Padres de Projeto
Um padro de projeto ou padro de desenho (design
pattern) uma soluo geral reutilizvel para um problema
que ocorre com frequncia;
Define uma descrio ou modelo (template) de como
resolver o problema;
Padres so melhores prticas formalizadas que o
programador pode usar para resolver problemas comuns
quando projetar uma aplicao ou sistema.

26 de agosto de 2014

Padres de Projeto

Os autores: Ralph Johnson,


Erich Gamma, Richard Helm e
John Vlissides so conhecidos como a "Gangue dos Quatro"
(Gang of Four) ou simplesmente "GoF"
26 de agosto de 2014

Padres de Projeto

26 de agosto de 2014

Singleton
O que
Padro GoF de projeto de software da famlia de criao.

Objetivo
Garantir que uma determinada classe tenha uma nica
instncia (nico objeto) no sistema.

Onde aplicar
Em muitos contextos pode ser til ter a garantia de
existncia de apenas um objeto de uma dada classe,
exemplos:
Uma fachada nica para um dado sistema;
Um nico gerenciador de conexes para acesso a banco
26 de agosto de 2014
de dados.

Singleton
O construtor da classe que utiliza o padro
singleton deve ser privado para evitar que diversos
objetos da classe sejam criados sem controle;
Um atributo esttico privado do mesmo tipo da
classe declarado para manter a instncia (objeto)
nica da classe;
Um mtodo esttico pblico getInstancia( )
implementado para criar a nica instncia da classe
e permitir que outros objetos do sistema tenham
acesso a mesma.
26 de agosto de 2014

Singleton
Exemplo do padro Singleton como Diagrama de
Classe.

26 de agosto de 2014

Singleton
Fachada alterada para utilizar o padro singleton.

26 de agosto de 2014

Referncias
Artigo: Integrando Java com Bancos de Dados
Relacionais. Autores: Euriclia Viana e Paulo Borba
(http://www.cin.ufpe.br/~phmb/publications.htm)
Artigo: PDC: The persistent data collections pattern.
Autores: Tiago Massoni, Vander Alves, Srgio Soares
e Paulo Borba
(http://www.cin.ufpe.br/~phmb/publications.htm)
Livro: Design Patterns: Elements of Reusable ObjectOriented Software. Autores: Erich Gamma et al.
Editora Addison-Wesley
26 deMaterial
da Aula de POO do Prof. Mrcio Bueno
agosto de 2014

AULA 02 ARQUITETURA EM
CAMADAS
Maurcio Manoel Coelho Jnior
mauricio.junior@fafica-pe.edu.br
26 de agosto de 2014
https://edulify.com/mauricio.junior