1. Introduo a Programao Multicamadas; 2. Modelo MVC A Camada Model (Modelo) A Camada View (Interface com o Usurio) A Camada Controller (Controlador) 1. Persistncia em Java Introduo a Java Persistncia API (JPA); A Java Persistncia Query Language; 1. Integrao entre as camadas; 2. Frameworks MVC; 3. Padres de Projeto; 4. Web Services; 5. Casos de Estudo.
Prof. Dr. Sylvio Barbon Jr. sbarbonjr@gmail.com
Linguagem de Programao 3 Professor?
Sylvio Barbon Jnior Formao: - Graduao em Cincia da Computao (2005); - Mestrado em Fsica Computacional (2007); - Graduao em Engenharia da Computao (2008); - Doutorando em Fsica Computacional (...); Atividades: - Desenvolvimento de Software: - Riosoft (Analista Desenvolvedor Delphi, SQL SERVER e ORACLE) - MagicSite (Analista Desenvolvedor Delphi SQL SERVER 2005) - Net-Fit (Gerente de Projetos J2EE e SQL SERVER 2005)
- Docncia: - Fatec (Cursos Extenso em PHP e MySQL, 2006); - Unorp (Sistemas Distribudos e LP, 2007); - Senac (Coordenador Curso Tcnico em Web, 2008); - UEMG (LP 3, CM, SAS);
Prof. Dr. Sylvio Barbon Jr. sbarbonjr@gmail.com
Linguagem de Programao 3 Por que Utilizar este Padro
Com um padro fica muito mais fcil entender a soluo dada a um problema, se essa soluo for construda em cima de um padro. Os padres, utilizados para o desenvolvimento de software, buscam reduzir o acoplamento e aumentar a coeso entre os componentes de um sistema, diminuindo a duplicao do cdigo e possibilitando o reuso desses componentes, o custo de manuteno da aplicao tende a cair e qualidade do cdigo aumentar. O que um Pattern? Nada mais do que um padro utilizado, neste caso utilizaremos um padro para o desenvolvimento de software, chamado Architectural Pattern, ou Padro de Arquitetura com Trs Camadas, baseado em um conceito MVC para a camada de Apresentao.
Prof. Dr. Sylvio Barbon Jr. sbarbonjr@gmail.com
Linguagem de Programao 3 Programao Multicamadas
O que so camadas?
Prof. Dr. Sylvio Barbon Jr. sbarbonjr@gmail.com
Linguagem de Programao 3 Programao Multicamadas
Evoluo da Camada Fsica: - Fase 1: MainFrame: tudo em um mesmo n.
Prof. Dr. Sylvio Barbon Jr. sbarbonjr@gmail.com
Linguagem de Programao 3 Programao Multicamadas
Evoluo da Camada Fsica: - Fase 3: 3 Camadas: Uma camada para Persistncia, outra para Regra de Negcio e uma ou mais para interface. Podendo separar fisicamente regra de negcio, interface e Persistncia.
APLICAO
REGRA DE NEGCIO
BANCO DE DADOS
Prof. Dr. Sylvio Barbon Jr. sbarbonjr@gmail.com
Linguagem de Programao 3 Por que Utilizar este Padro
A arquitetura em camadas tem como objetivo estruturar o cdigo em nveis, de forma a obter melhor reuso e extensibilidade.
Prof. Dr. Sylvio Barbon Jr. sbarbonjr@gmail.com
Linguagem de Programao 3 Motivos para Multicamadas
A necessidade de se separar uma aplicao em camadas surgiu no comeo da dcada de 90 com os sistemas com arquitetura clienteservidor. Existem geralmente duas camadas nesses sistemas: - Interface grfica com o usurio - Camada de persistncia (geralmente um Banco de Dados relacional). A medida em que os sistemas vo crescendo e se tornando mais complexos, essa tcnica gera um grande nmero de problemas, como uma grande quantidade de cdigo repetido. Uma pequena mudana pode ter um impacto enorme na aplicao (e isso o que exatamente se quer evitar em sistemas corporativos).
Prof. Dr. Sylvio Barbon Jr. sbarbonjr@gmail.com
Linguagem de Programao 3 Programao Multicamadas
Evoluo da Camada Fsica: - Fase 2: Cliente/Servidor: Banco de Dados e Interface, onde a regra de negcio estaria, ou no banco ou na interface.
Prof. Dr. Sylvio Barbon Jr. sbarbonjr@gmail.com
Linguagem de Programao 3 Motivos para Multicamadas
A outra abordagem seria colocar a lgica da aplicao em stored procedures 2 no banco de dados relacional. Mas essa soluo tambm tem suas desvantagens como, por exemplo, a perda de portabilidade, a dificuldade de trabalhar com transaes quando est envolvido mais de um SGDB e no se poder trabalhar com orientao a objetos e suas vantagens. Surgiu a necessidade de se evoluir para a chamada programao em trs camadas, na qual se permanece com: A camada de interface grfica com o usurio (tambm conhecida como camada de apresentao); A camada de persistncia; A camada que modela o domnio da aplicao e onde ficam as regras de negcio da mesma; chamada por muitos autores de camada de negcio, modelo, domnio ou domnio lgico. Prof. Dr. Sylvio Barbon Jr. sbarbonjr@gmail.com
Linguagem de Programao 3 Motivos para Multicamadas
1. Aplicaes que manipulam uma grande quantidade de dados (que devem ser persistidos, s vezes por muitos anos); 1. Quando so acessados por uma grande quantidade de pessoas concorrentemente; 3. Quando precisam se integrar com outros sistemas, construdos em diferentes tempos com diferentes tecnologias e trabalham com as regras de negcio da instituio para a qual esto sendo desenvolvidos, que geralmente esto em constante mudana.
Prof. Dr. Sylvio Barbon Jr. sbarbonjr@gmail.com
Linguagem de Programao 3 Motivos para Multicamadas
A separao dessas trs camadas no precisa ser fixa. Para sistemas simples podem ser trs mtodos diferentes; Para sistemas mais complexos pode-se separar as trs camadas em trs classes diferentes. Com o aumento da complexidade, faz-se necessria a diviso das trs camadas em trs pacotes. A forma de realizar a separao no nica e depende de cada caso, mas o importante que se separe o sistema em trs camadas
Prof. Dr. Sylvio Barbon Jr. sbarbonjr@gmail.com
Linguagem de Programao 3 Vantagens e Desvantagens
Vantagem da utilizao de Camadas: 1- Reduzem a Complexidade; 2- Reduzem o acoplamento; 3- Favorecem a Coeso; 4- Promovem a reusabilidade; Desvantagens da utilizao de Camadas: 1- Limitadas pela Tecnologia; 2- Apenas complicam um sistema simples;
Prof. Dr. Sylvio Barbon Jr. sbarbonjr@gmail.com
Linguagem de Programao 3 Programao Multicamadas
Acoplamento: o nvel de inter-dependncia entre os mdulos de um programa de computador. Quanto maior for o acoplamento menor ser o nvel de coeso. Ter um baixo acoplamento, ou seja, todo mdulo deveria ser o mais independente possvel de outro e uma alterao da implementao de um mdulo no deveria afetar nenhum outro. Um alto grau de acoplamento entre muitos objetos sinal de um design pobre porque deixa o cdigo difcil de ler e entender e, mais importante, torna o cdigo pouco flexvel a mudanas Prof. Dr. Sylvio Barbon Jr. sbarbonjr@gmail.com
Linguagem de Programao 3 Programao Multicamadas
Acoplamento Forte Motorista joao = new Motorista(); Carro gol = new Carro(); ... public class Motorista { Carro carro; ... public void irRapido(int velocidade) { carro.velocidade += velocidade; } ... } Prof. Dr. Sylvio Barbon Jr. sbarbonjr@gmail.com
Linguagem de Programao 3 Programao Multicamadas
Acoplamento Fraco (Ideal): Motorista joao = new Motorista(); Carro gol = new Carro(); ... public class Motorista { private Carro carro; public void setCarro(Carro carro){ this.carro = carro; } public Carro getCarro(){ return(this.carro); } } Prof. Dr. Sylvio Barbon Jr. sbarbonjr@gmail.com
Linguagem de Programao 3 Programao Multicamadas
public class Carro { private Integer velocidade; public void irRapido(Integer velocidade) { this.velocidade += velocidade; } } ... joao.setCarro(gol); joao.getCarro().irRapido(10);
Prof. Dr. Sylvio Barbon Jr. sbarbonjr@gmail.com
Linguagem de Programao 3 Coeso e Reusabilidade
Coeso: a medida da fora relativa de um mdulo. Quanto maior for a coeso, menor ser o nvel de acoplamento de um mdulo. Mdulos de software devem ter uma alta coeso, isto , todos os componentes desse mdulo deveriam ter as mesmas responsabilidades e, idealmente, cada mdulo deveria est focado em resolver um problema especfico. Reusabilidade: capacidade de reaproveitamento de determinado mdulo, classe ou estrutura de cdigo. Prof. Dr. Sylvio Barbon Jr. sbarbonjr@gmail.com
Linguagem de Programao 3 Coeso e Reusabilidade
Baixa Coeso: public class inicio { public void desenharTela() { //implementao } public class reservarProduto() { //implementao } public class persistirBD() { // implementao } } Prof. Dr. Sylvio Barbon Jr. sbarbonjr@gmail.com
Linguagem de Programao 3 Coeso e Reusabilidade
Alta Coeso (Ideal): public class inicio { public Inicio() { Tela tela = new Tela(); tela.desenhar(); Produto produto = new Produto(); produto.reservar(); //dentro do mtodo reservar produto dever ser persistido } } Prof. Dr. Sylvio Barbon Jr. sbarbonjr@gmail.com
Linguagem de Programao 3 Programao Multicamadas
Tecnologia Oracle para 3 Camadas:
Prof. Dr. Sylvio Barbon Jr. sbarbonjr@gmail.com
Linguagem de Programao 3 Programao Multicamadas
Prof. Dr. Sylvio Barbon Jr. sbarbonjr@gmail.com
Linguagem de Programao 3 Exemplo Multicamadas
Com apenas duas camadas:
Prof. Dr. Sylvio Barbon Jr. sbarbonjr@gmail.com
Linguagem de Programao 3 Exemplo Multicamadas
Com trs camadas (parte 1):
Prof. Dr. Sylvio Barbon Jr. sbarbonjr@gmail.com
Linguagem de Programao 3 Exemplo Multicamadas
Com trs camadas (parte 2):
Prof. Dr. Sylvio Barbon Jr. sbarbonjr@gmail.com
Linguagem de Programao 3 Exemplo Multicamadas
Com trs camadas (parte 3):
Prof. Dr. Sylvio Barbon Jr. sbarbonjr@gmail.com
Linguagem de Programao 3 Trabalho
Trabalho entregar dia 01/03: - Criar uma pequena aplicao em Java utilizando 3 camadas, esta aplicao dever GRAVAR no banco um NOME e calcular a sua IDADE automaticamente, baseado na data de nascimento, que deve ser informada. - O banco precisa ter uma tabela com apenas trs campos: CodUsuario, NomeUsuario e IdadeUsuario. - O software dever ter apenas a Entidade (classe de regra de negcio) Usuario com os atributos Nome (String) e Idade (Integer), as demais classes devero representar as camadas, podero ser por exemplo ProgramaUi, ProgramaCtr e ProgramaDao. - O trabalho dever estar RODANDO e ser demonstrado em sala de aula. .... INDIVIDUAL. Prof. Dr. Sylvio Barbon Jr. sbarbonjr@gmail.com
Linguagem de Programao 3 Trabalho
BECK, K., CUNNINGHAM, W. Using Pattern Languages for ObjectOriented Programs. 1987. Disponvel em: <http://c2.com/doc/oopsla87.html>. CALADO, P. Arquitetura de Camadas em Java EE. Mundo Java