Organização do sistema em camadas Projeto -...

of 14/14
Ricardo Massa F. Lima [email protected] Sérgio C. B. Soares [email protected] Organização do sistema em camadas Projeto Introdução a Programação – IF669 http://www.cin.ufpe.br/~if669
  • date post

    14-Nov-2018
  • Category

    Documents

  • view

    213
  • download

    0

Embed Size (px)

Transcript of Organização do sistema em camadas Projeto -...

  • Ricardo Massa F. Lima [email protected]

    Srgio C. B. Soares [email protected]

    Organizao do sistema em camadas

    Projeto

    Introduo a Programao IF669 http://www.cin.ufpe.br/~if669

  • Separao de Preocupaes n Separao de preocupaes consiste em quebrar a

    soluo de um problema em independentes de modo a facilitar o desenvolvimento da soluo focar em cada parte do problema individualmente

    n Princpio: para superar a complexidade de um sistema, deve-se resolver uma questo (ou preocupao) importante por vez

  • 3

    Dicas de bons sistemas O.O.

    n Modularizando o sistema

    GUI Modelo Persistncia

    Entendimento Modular

    Mudanas Modular

    Desenvolvimento em Paralelo

  • 4

    Dicas de bons sistemas O.O.

    n Modularidade OK!

    Persistncia Modelo

    GUI

  • Vendo o cdigo como um bolo... com vrias camadas!

    Interface com o usurio (GUI)

    Comunicao

    Negcio

    Dados

  • Arquitetura em camadas

    n Interface com o usurio cdigo para apresentao da aplicao

    n Comunicao cdigo de acesso remoto a aplicao

    n Negcio cdigo inerente aplicao sendo desenvolvida

    n Dados cdigo para acesso e manipulao de dados

  • Benefcios da Arquitetura em Camadas

    n Modularidade e seus benefcios dividir para conquistar separao de interesses (separation of concerns) reusabilidade extensibilidade

    n Mudanas em uma camada no afetam as outras plug-and-play

  • Benefcios da Arquitetura em Camadas

    n Uma mesma verso de uma camada trabalhando com diferentes verses de outra camada: diferentes GUIs para a mesma aplicao diferentes mecanismos de persistncia suportados

    pela mesma aplicao diferentes plataformas de distribuio para acesso a

    uma mesma aplicao combinaes destes

    GUIs diferentes usando plataformas de distribuio diferentes numa mesma aplicaao

  • Classes Bsicas de Negcio

    public class Conta { private double saldo; private String numero; private Cliente correntista; ... public void creditar(double valor) { saldo = saldo + valor; } }

    Cliente, Livro, Animal, Veiculo

  • public interface RepositorioContas { public void inserir(Conta conta); public void atualizar(Conta conta) throws ContaNaoEncontradaException; public void remover(String numero) throws ContaNaoEncontradaException; public Conta procurar(String numero) throws ContaNaoEncontradaException; public boolean existe(String numero); }

    Interface Negcio-Dados

    RepositorioClientes, RepositorioLivros RepositorioAnimais, RepositorioVeiculos

  • Classes Coleo de Dados

    public class RepositorioContasArray implements RepositorioContas { private Conta[] contas; private int indice; public RepositorioContasArray(int tam) { contas = new Conta[tam]; ... } public void inserir(Conta conta) { contas[indice] = conta; indice = indice + 1; } ... } RepositorioContasLista, RepositorioContasBD,

    RepositorioContasArquivo, RepositorioContasBDOO

  • Classes Coleo de Negcio

    public class CadastroContas { private RepositorioContas contas; public CadastroContas(RepositorioContas rep) { contas = rep; } public void cadastrar(Conta conta) throws ContaJaCadastradaException { if (!contas.existe(conta.getNumero())) { contas.inserir(conta); } else throw ... } ... }

    CadastroClientes, CadastroLivros, CadastroAnimais, CadastroVeiculos

  • Classe Fachada public class Banco { private CadastroContas contas; private CadastroClientes clientes; ... public void cadastrar(Conta conta) throws ClienteInvalidoException{ Cliente c = conta.getCorrentista(); if (clientes.existe(c.getCodigo()) { contas.cadastrar(conta); } else throw new Cliente... } ... }

    Livraria, Zoo, Locadora

  • Requisitos do projeto

    n Equipe com 3-5 participantes n Escolher temas na planilha que est na pgina da

    disciplina n Cada integrante deve fazer:

    1 classe bsica 1 interface negcio-dados 2 implementaes da interface (array e lista) 1 coleo de negcio (cadastro)

    n Junta tudo em uma fachada n Testa a fachada em uma classe Programa com main

    (testes fixos) n Mais detalhes na pgina da disciplina