Você está na página 1de 29

Linguagem de Programao 3

Prof. Dr. Sylvio Barbon Jr. sbarbonjr@gmail.com

Linguagem de Programao 3 EMENTA


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

Prof. M.Sc. Sylvio Barbon Jr. sbarbonjr@gmail.com