Vous êtes sur la page 1sur 29

Linguagem de Programação 3

Linguagem de Programação 3 Prof. Dr. Sylvio Barbon Jr. sbarbonjr@gmail.com

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

Linguagem de Programação 3 EMENTA

  • 1. Introdução a Programação Multicamadas;

  • 2. Modelo MVC •

A Camada Model (Modelo) A Camada View (Interface com o Usuário) A Camada Controller (Controlador)

  • 1. Persistência em Java •

Introdução a Java Persistência API (JPA); A Java Persistência Query Language;

  • 1. Integração entre as camadas;

  • 2. Frameworks MVC;

  • 3. Padrões de Projeto;

  • 4. Web Services;

  • 5. Casos de Estudo.

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

Linguagem de Programação 3 Professor?

Sylvio Barbon Júnior

Formação:

  • - Graduação em Ciência da Computação (2005);

  • - Mestrado em Física Computacional (2007);

  • - Graduação em Engenharia da Computação (2008);

  • - Doutorando em Física 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)

  • - Docência:

    • - Fatec (Cursos Extensão em PHP e MySQL, 2006);

    • - Unorp (Sistemas Distribuídos e LP, 2007);

    • - Senac (Coordenador Curso Técnico em Web, 2008);

    • - UEMG (LP 3, CM, SAS);

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

    Linguagem de Programação 3 Por que Utilizar este “Padrão”

    • Com um padrão fica muito mais fácil entender a solução dada a um problema, se essa solução for construída em cima de um padrão.

    • Os padrões, utilizados para o desenvolvimento de software, buscam reduzir o acoplamento e aumentar a coesão entre os componentes de um sistema, diminuindo a duplicação do código e possibilitando o reuso desses componentes, o custo de manutenção da aplicação tende a cair e qualidade do código aumentar.

    • O que é um Pattern? Nada mais é do que um padrão utilizado, neste caso utilizaremos um padrão para o desenvolvimento de software, chamado Architectural Pattern, ou Padrão de Arquitetura com Três Camadas, baseado em um conceito MVC para a camada de Apresentação.

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

    Linguagem de Programação 3 Programação Multicamadas

    O que são camadas?

    Linguagem de Programação 3 Programação Multicamadas O que são camadas? Prof. Dr. Sylvio Barbon Jr. sbarbonjr@gmail.com
    Linguagem de Programação 3 Programação Multicamadas O que são camadas? Prof. Dr. Sylvio Barbon Jr. sbarbonjr@gmail.com
    Linguagem de Programação 3 Programação Multicamadas O que são camadas? Prof. Dr. Sylvio Barbon Jr. sbarbonjr@gmail.com

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

    Linguagem de Programação 3 Programação Multicamadas

    Evolução da Camada Física:

    - Fase 1:

    MainFrame: tudo em um mesmo nó.

    Linguagem de Programação 3 Programação Multicamadas Evolução da Camada Física: - Fase 1: MainFrame: tudo em

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

    Linguagem de Programação 3 Programação Multicamadas

    Evolução da Camada Física:

    - Fase 3:

    3 Camadas: Uma camada para Persistência, outra para Regra de Negócio e uma ou mais para interface. Podendo separar “fisicamente” regra de negócio, interface e Persistência.

    REGRA DE APLICAÇÃO BANCO DE DADOS NEGÓCIO
    REGRA DE
    APLICAÇÃO
    BANCO DE DADOS
    NEGÓCIO

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

    Linguagem de Programação 3 Por que Utilizar este “Padrão”

    • A arquitetura em camadas tem como objetivo estruturar o código em níveis, de forma a obter melhor reuso e extensibilidade.

    Linguagem de Programação 3 Por que Utilizar este “Padrão” • A arquitetura em camadas tem como

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

    Linguagem de Programação 3 Motivos para Multicamadas

    A necessidade de se separar uma aplicação em camadas surgiu no começo da década de 90 com os sistemas com arquitetura cliente- servidor.

    Existem geralmente duas camadas nesses sistemas:

    - Interface gráfica com o usuário

    -

    Camada

    de

    relacional).

    persistência

    (geralmente

    um

    Banco

    de

    Dados

    A medida em que os sistemas vão crescendo e se tornando mais complexos, essa técnica gera um grande número de problemas, como uma grande quantidade de código repetido. Uma pequena mudança pode ter um impacto enorme na aplicação (e isso é o que exatamente se quer evitar em sistemas corporativos).

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

    Linguagem de Programação 3 Programação Multicamadas

    Evolução da Camada Física:

    - Fase 2:

    Cliente/Servidor: Banco de Dados e Interface, onde a regra de negócio estaria, ou no banco ou na interface.

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

    Linguagem de Programação 3 Motivos para Multicamadas

    A outra abordagem seria colocar

    a lógica da aplicação

    em stored

    procedures 2 no banco de dados relacional.

    Mas essa solução também tem suas desvantagens como, por exemplo, a perda de portabilidade, a dificuldade de trabalhar com transações quando está envolvido mais de um SGDB e não se poder trabalhar com orientação a objetos e suas vantagens.

    Surgiu a necessidade de se evoluir para a chamada programação em três camadas, na qual se permanece com:

    A camada de interface gráfica com o usuário (também conhecida como camada de apresentação); A camada de persistência; A camada que modela o domínio da aplicação e onde ficam as regras de negócio da mesma; chamada por muitos autores de camada de negócio, modelo, domínio ou domínio lógico.

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

    Linguagem de Programação 3 Motivos para Multicamadas

    • 1. Aplicações que manipulam uma grande quantidade de dados (que devem ser persistidos, às vezes por muitos anos);

    • 1. Quando são acessados por uma grande quantidade de pessoas concorrentemente;

    • 3. Quando precisam se integrar com outros sistemas, construídos em diferentes tempos com diferentes tecnologias e trabalham com as regras de negócio da instituição para a qual estão sendo desenvolvidos, que geralmente estão em constante mudança.

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

    Linguagem de Programação 3 Motivos para Multicamadas

    A separação dessas três camadas não precisa ser fixa.

    Para sistemas simples podem ser três métodos diferentes;

    Para sistemas mais complexos pode-se separar as três camadas em três classes diferentes.

    Com o aumento da complexidade, faz-se necessária a divisão das três camadas em três pacotes.

    A forma de realizar a separação não é única e depende de cada caso, mas o importante é que se separe o sistema em três camadas

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

    Linguagem de Programação 3 Vantagens e Desvantagens

    Vantagem da utilização de Camadas:

    1- Reduzem a Complexidade; 2- Reduzem o acoplamento; 3- Favorecem a Coesão; 4- Promovem a reusabilidade;

    Desvantagens da utilização de Camadas:

    1- Limitadas pela Tecnologia; 2- Apenas complicam um sistema simples;

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

    Linguagem de Programação 3 Programação Multicamadas

    Acoplamento: é o nível de inter-dependência entre os módulos de um programa de computador. Quanto maior for o acoplamento menor será o nível de coesão. Ter um baixo acoplamento, ou seja, todo módulo deveria ser o mais independente possível de outro e uma alteração da implementação de um módulo não deveria afetar nenhum outro. Um alto grau de acoplamento entre muitos objetos é sinal de um design pobre porque deixa o código difícil de ler e entender e, mais importante, torna o código pouco flexível a mudanças

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

    Linguagem de Programação 3 Programação 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 Programação 3 Programação 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 Programação 3 Programação 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 Programação 3 Coesão e Reusabilidade

    Coesão: é a medida da “força relativa” de um módulo. Quanto maior for a coesão, menor será o nível de acoplamento de um módulo.

    Módulos de software devem ter uma alta coesão, isto é, todos os componentes desse módulo deveriam ter as mesmas responsabilidades e, idealmente, cada módulo deveria está focado em resolver um problema específico.

    Reusabilidade: capacidade de reaproveitamento de determinado módulo, classe ou estrutura de código.

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

    Linguagem de Programação 3 Coesão e Reusabilidade

    Baixa Coesão:

    public class inicio { public void desenharTela() { //implementação

    } public class reservarProduto() { //implementação

    }

    public class persistirBD() { // implementação }

    }

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

    Linguagem de Programação 3 Coesão e Reusabilidade

    Alta Coesão (Ideal):

    public class inicio {

    public Inicio() { Tela tela = new Tela(); tela.desenhar();

    Produto produto = new Produto(); produto.reservar(); //dentro do método reservar produto deverá ser persistido

    }

    }

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

    Linguagem de Programação 3 Programação Multicamadas

    Tecnologia Oracle para 3 Camadas:

    Linguagem de Programação 3 Programação Multicamadas Tecnologia Oracle para 3 Camadas: Prof. Dr. Sylvio Barbon Jr.

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

    Linguagem de Programação 3 Programação Multicamadas

    Linguagem de Programação 3 Programação Multicamadas Prof. Dr. Sylvio Barbon Jr. sbarbonjr@gmail.com

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

    Linguagem de Programação 3 Exemplo Multicamadas

    Com apenas duas camadas:

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

    Linguagem de Programação 3 Exemplo Multicamadas

    Com três camadas (parte 1):

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

    Linguagem de Programação 3 Exemplo Multicamadas

    Com três camadas (parte 2):

    Linguagem de Programação 3 Exemplo Multicamadas Com três camadas (parte 2): Prof. Dr. Sylvio Barbon Jr.

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

    Linguagem de Programação 3 Exemplo Multicamadas

    Com três camadas (parte 3):

    Linguagem de Programação 3 Exemplo Multicamadas Com três camadas (parte 3): Prof. Dr. Sylvio Barbon Jr.

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

    Linguagem de Programação 3 Trabalho

    Trabalho entregar dia 01/03:

    • - Criar uma pequena aplicação em Java utilizando 3

    camadas, esta aplicação 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 três

    campos: CodUsuario, NomeUsuario e IdadeUsuario.

    • - O software deverá ter apenas a Entidade (classe de

    regra de negócio) Usuario com os atributos Nome (String) e Idade

    (Integer), as demais classes deverão representar as camadas, poderão 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 Programação 3 Trabalho

    BECK, K., CUNNINGHAM, W. Using Pattern Languages for Object- Oriented Programs.

    1987. Disponível em: <http://c2.com/doc/oopsla87.html>.

    CALÇADO, P. Arquitetura de Camadas em Java EE. Mundo Java

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