Padrão Arquitetura em Camadas



Documentos relacionados
Guia de Fatores de Qualidade de OO e Java

Documento de Arquitetura

e-stf WebServices Processo Eletrônico Smart Client Documentação

Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc.

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this.

Encapsulamento de Dados

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

Especialização em desenvolvimento para web com interfaces ricas. Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares

Prototype, um Design Patterns de Criação

Java. Marcio de Carvalho Victorino

Sintaxe Básica de Java Parte 1

Resumo: Perguntas a fazer ao elaborar um projeto arquitetural

Programação Orientada a Objetos. Encapsulamento

MVC e Camadas - Fragmental Bliki

Estrutura em Camadas. Estrutura em Camadas. Alcides Pamplona Alcides Pamplona Linguagem de Programação CESBD 2010

Recursão. Em Java... Exemplo: Série de Fibonacci. Iteração e recursão. Exercícios. Especialização em Engenharia de Software - CEUT

Curso de Aprendizado Industrial Desenvolvedor WEB

Java Básico. Matrícula de Alunos. Marco Antonio, Arquiteto de Software TJDF Novembro/2005

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Documento de Análise e Projeto VideoSystem

Programação de Computadores - I. Profª Beatriz Profº Israel

Padrões. Projeto (Design) de Software

Curso de Java. Orientação a objetos e a Linguagem JAVA. TodososdireitosreservadosKlais

UNIVERSIDADE FEDERAL DO PARANÁ

JPA: Persistência padronizada em Java

Orientação a Objetos com Java

Objetos Distribuídos - Programação Distribuída Orientado a Objetos. Luiz Affonso Guedes

Conversão de Tipos e Arrays

Módulo 02 Programação Orientada a Objetos. Última atualização: 07/06/2010

Aula 09 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

Prevayler. Perola. André Luís Sales de Moraes Juliana Keiko Yamaguchi Tatiana Yuka Takaki

8 Classes Internas. Desenvolvimento OO com Java. Vítor E. Silva Souza

SISTEMA DE WORKFLOW PARA MODELAGEM E EXECUÇÃO DE PROCESSOS DE SOFTWARE. Aluno: Roberto Reinert Orientador: Everaldo A. Grahl

Arquitetura de Aplicações JSP/Web. Padrão Arquitetural MVC

Tópicos em Engenharia de Computação

Roteiro. Arquitetura. Tipos de Arquitetura. Questionário. Centralizado Descentralizado Hibrido

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

Sistemas Distribuídos

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

HIBERNATE EM APLICAÇÃO JAVA WEB

UML & Padrões Aula 7. UML & Padrões - Profª Kelly C C Silva

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

Módulo 5 JPATransaction Camadas Turma Turma TurmaBC TurmaBC TurmaBC TurmaBC

Histórico da Revisão. Versão Descrição Autor. 1.0 Versão Inicial

Programação Orientada a Objetos em Java

Sistemas Distribuídos Arquitetura de Sistemas Distribuídos I. Prof. MSc. Hugo Souza

Introdução a Java. Hélder Nunes

ARCO - Associação Recreativa dos Correios. Sistema para Gerenciamento de Associações Recreativas Plano de Desenvolvimento de Software Versão <1.

Introdução à Programação. Interface, Polimorfismo e Dynamic Binding

insfcanceof new public switch transient while byte continue extends for int null

Orientação a Objetos com Java

Análise e Projeto Orientados por Objetos

Enterprise Java Beans

Acesso a Banco. Conexão em Java. Conexão em Java. Programação Orientada a Objetos Profa. Cristiane e Prof. Daniel

Projetar Arquitetura

Manual do usuário. Softcall Java. versão 1.0.5

Projeto: Simul-e Documento de Arquitetura de Software

JAVA COM BANCO DE DADOS PROFESSORA DANIELA PIRES

Curso Adonai QUESTÕES Disciplina Linguagem JAVA

Padrões de Projeto WEB e o MVC

Figura 1. A Classe Java

Documento de Análise e Projeto

Autor: Ricardo Francisco Minzé Júnior - ricardominze@yahoo.com.br Desenvolvendo aplicações em camadas com PHP 5.

Como foi exposto anteriormente, os processos podem ter mais de um fluxo de execução. Cada fluxo de execução é chamado de thread.

LINGUAGEM DE BANCO DE DADOS

Lista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição

CONVENÇÃO DE CÓDIGO JAVA

Feature-Driven Development

Unidade IV: Ponteiros, Referências e Arrays

Manual do usuário. v1.0

Descrição. Implementação. Departamento de Informática e Estatística Universidade Federal de Santa Catarina LAB 4 Transferência de Arquivos

Membros de classe e de instância. PARTE III: Java e OO - detalhes. Exemplo 1: método. Exercício. Exemplo 1 corrigido

Java Spaces Exemplos

Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto

Orientação a Objetos

CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS. João Gabriel Ganem Barbosa

Um pouco do Java. Prof. Eduardo

Laboratório de Computação VI JAVA IDL. Fabricio Aparecido Breve

MODELAGEM VISUAL DE OBJETOS COM UML DIAGRAMA DE CLASSES.

Exercícios de Revisão Java Básico

Categorias de Padrões

Aplicações, durante a execução, podem incorrer em muitas espécies de erros de vários graus de severidade Quando métodos são invocados sobre um objeto:

2 a Lista de Exercícios

Projeto de Arquitetura

Engenharia de Software III

Especialização em Engenharia de Software - CEUT

public Agenda() { compromissos = null; } public int getnumerodecompromissos() { if (compromissos==null) return 0; else return compromissos.

Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos

2 Orientação a objetos na prática

Material de apoio a aulas de Desenvolvimento Web. Tutorial Java WEB JSP & HTML & CSS & CLASSE & OBJETOS. AAS -

Invocação de Métodos Remotos

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

Técnicas de Programação Avançada TCC Profs.: Anselmo Montenegro Conteúdo: Introdução à Orientação a Objetos

Transcrição:

Padrão Arquitetura em Camadas Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira

Definição Estimula a organização da arquitetura do sistema em um conjunto de camadas coesas com fraco acoplamento entre elas. Cada camada possui um propósito bem definido. A camada superior conhece apenas a camada imediatamente inferior (que fornece seus serviços através de uma interface). Programação Orientada a Objeto - Márcio Bueno 2

Definição Cada camada é formada por um conjunto de classes com um determinado propósito. UI Negócio Dados UI Comunicação Negócio Dados Programação Orientada a Objeto - Márcio Bueno 3

Propósito de Cada Camada UI: agrega as classes do sistema com as quais os usuários interagem. Negócio: mantém as classes do sistema responsáveis pelos serviços e regras do negócio. Dados: camada responsável pelo armazenamento e recuperação dos dados persistentes do sistema. Comunicação: responsável pela distribuição do sistema em várias máquinas. Programação Orientada a Objeto - Márcio Bueno 4

Vantagens e Desvantagem Vantagens: Separação de código relativo a interface com o usuário (UI), comunicação, negócio e dados. Permite a mudança de implementação de uma camada sem afetar a outra, desde que a interface entre as mesmas seja mantida. Possibilita que uma camada trabalhe com diferentes versões de outra camada. Desvantagem: Aumento no número de classes existentes no sistema. Programação Orientada a Objeto - Márcio Bueno 5

Padrão Arquitetura em Camadas Exemplos de diferentes configurações do padrão arquitetura em camadas usando tecnologias Java. UI (GUI Java Swing) Negócio Dados (Java JDBC) UI (HTML, GUI Java Applets e Servlets) Negócio Dados (Java IO) UI (GUI Java Swing) Comunicação (Java RMI) Negócio Dados (Java JDBC) Programação Orientada a Objeto - Márcio Bueno 6

Padrão Arquitetura em Camadas Arquitetura em 3 camadas Possui as camadas: UI, Regras de Negócio e Acesso a Dados A camada de UI: agrega as classes de fronteira Exemplo: GUIAluno A camada de Regras de Negócio: agrega as classes de controle e entidade Exemplos: ControladorAluno e Aluno A camada de Acesso a Dados: agrega as classes de persistência dos dados Exemplo: RepositorioAluno Programação Orientada a Objeto - Márcio Bueno 7

Padrão Arquitetura em Camadas Arquitetura em 3 camadas Entre as camadas UI e Negócio haverá sempre uma interface Java que uma classe Fachada do sistema implementará. A classe Fachada é utilizada para oferecer um caminho único para acesso aos serviços da camada de regras de negócio. 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 negócio para oferecer os serviços. Programação Orientada a Objeto - Márcio Bueno 8

Padrão Arquitetura em Camadas Arquitetura em 3 camadas O Controlador pode conter regras de controle do sistema e delega ações da fachada para a camada de acesso a dados. Entre as camadas Negócio e Dados haverá sempre uma interface Java que uma classe Repositório implementará. O Repositório armazena os objetos persistentes do sistema em algum meio de armazenamento físico (banco de dados, arquivo, etc.). Programação Orientada a Objeto - Márcio Bueno 9

Visão Arquitetural UI GUIAluno GUIProfessor IFachada Negócio Fachada Aluno ControladorAlun o ControladorProfessor Professor IRepositorioAluno IRepositorioProfessor Dados RepositorioAlunoBDR RepositorioProfessorBDR Programação Orientada a Objeto - Márcio Bueno 10

Exemplo: Implementação de um Sistema para cadastro de alunos Classes Básicas de Negócio (Entidades): Aluno, Endereco Programação Orientada a Objeto - Márcio Bueno 11

Divisão 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 colaboração relativamente altos. Por outro lado, o acoplamento e colaboração entre classes agrupadas em diferentes pacotes devem ser relativamente baixos. Programação Orientada a Objeto - Márcio Bueno 12

Divisão em Pacotes Exemplo: sistema ui negocio aluno exceções dados aluno aluno excecoes util Programação Orientada a Objeto - Márcio Bueno 13

Divisão em Pacotes Para incluir uma classe em um pacote, utilizase a palavra reservada package. Sintaxe: package nomepacote; Obrigatoriamente, é o primeiro comando do código-fonte. Pacotes estão diretamente associados a diretórios no sistema de arquivos. Exemplos: package sistema.ui.aluno; package sistema.negocio.aluno; Programação Orientada a Objeto - Márcio Bueno 14

Divisão em Pacotes Importando pacotes Utilizar a palavra reservada import. Pode-se importar uma classe específica ou todas as classes de um pacote. Sintaxe: import nomepacote.*; import nomepacote.nomeclasse; Exemplos: import sistema.negocio.aluno.aluno; import sistema.negocio.aluno.*; Programação Orientada a Objeto - Márcio Bueno 15

Entidades public class Aluno {... public class Endereco {... Programação Orientada a Objeto - Márcio Bueno 16

Interface da Fachada Irá oferecer todos os serviços do sistema. Exemplo: Serviços básicos de manutenção de um cadastro tais como inserir, alterar, remover e buscar. Programação Orientada a Objeto - Márcio Bueno 17

Interface da Fachada public interface IFachada { public void inseriraluno(aluno aluno) throws ExcecaoElementoJaExistente, ExcecaoRepositorio; public void alteraraluno(aluno aluno) throws ExcecaoElementoInexistente, ExcecaoRepositorio; public void removeraluno(string mat) throws ExcecaoElementoInexistente, ExcecaoRepositorio; public Aluno buscaraluno(string mat) throws ExcecaoElementoInexistente, ExcecaoRepositorio; Programação Orientada a Objeto - Márcio Bueno 18

Fachada Obrigatoriamente, deve implementar todos os métodos da interface da fachada. Tem um ou mais atributos do tipo Controlador. Delega para os controladores as chamadas de métodos. Programação Orientada a Objeto - Márcio Bueno 19

public class Fachada implements IFachada { private ControladorAluno controladoraluno; public Fachada( ) { Implementação da Arquitetura Fachada this.controladoraluno = new ControladorAluno( ); public void inseriraluno(aluno aluno) throws ExcecaoElementoJaExistente, ExcecaoRepositorio { this.controladoraluno.inseriraluno(aluno); /* Continua aqui a implementação dos demais métodos! */ Programação Orientada a Objeto - Márcio Bueno 20

Controlador Um controlador para cada entidade persistente. Contém os métodos que serão chamados pela fachada. Exemplo: Serviços básicos de manutenção de um cadastro tais como inserir, alterar, remover e buscar. Tem um atributo do tipo IRepositorio para acessar os métodos da camada de acesso a dados. Programação Orientada a Objeto - Márcio Bueno 21

Controlador public class ControladorAluno { private IRepositorioAluno repalunos; public ControladorAluno( ) { this.repalunos = new RepositorioAlunos( ); public void inseriraluno(aluno aluno) throws ExcecaoElementoJaExistente, ExcecaoRepositorio { this.repalunos.inseriraluno(aluno); /* Continua aqui a implementação dos demais métodos! */ Programação Orientada a Objeto - Márcio Bueno 22

Interface do Repositório Irá oferecer os serviços de persistência de dados Uma interface do repositório para cada entidade persistente. Exemplo: Serviços básicos de persistência tais como inserir, alterar, remover, buscar e verificar se um determinado objeto existe. Programação Orientada a Objeto - Márcio Bueno 23

Interface do Repositório public interface IRepositorioAluno { public void inseriraluno(aluno aluno) throws ExcecaoElementoJaExistente, ExcecaoRepositorio; public void alteraraluno(aluno aluno) throws ExcecaoElementoInexistente, ExcecaoRepositorio; public void removeraluno(string mat) throws ExcecaoElementoInexistente, ExcecaoRepositorio; public Aluno buscaraluno(string mat) throws ExcecaoElementoInexistente, ExcecaoRepositorio; public boolean verificarexistenciaaluno(string matricula); Programação Orientada a Objeto - Márcio Bueno 24

Repositório Implementa a persistência dos dados. Obrigatoriamente, deve implementar todos os métodos da interface do repositório. Contém os métodos que serão chamados pelo controlador. Exemplo: Serviços básicos de persistência tais como inserir, alterar, remover, buscar e verificar se um determinado objeto existe. Programação Orientada a Objeto - Márcio Bueno 25

Repositório (versão em array) public class RepositorioAlunoArray implements IRepositorioAlunos { private Aluno[ ] alunos; private int quantalunos; public RepositorioAlunoArray( ) { this.alunos = new Aluno[100]; this.quantalunos = 0; public void inseriraluno(aluno aluno) throws ExcecaoElementoJaExistente, ExcecaoRepositorio { if (this.verificarexistenciaaluno(aluno.getmatricula( )) == false) { this.alunos[quantalunos++] = aluno; else { throw new ExcecaoElementoJaExistente( Aluno Já Cadastrado! ); /* Continua aqui a implementação dos demais métodos! */ Programação Orientada a Objeto - Márcio Bueno 26

Aplicação (Classe de interação com o usuário representando a camada de UI da arquitetura) public class Aplicacao { private static IFachada fachada = new Fachada( ); public static void main(string[ ] args) { try { Endereco end = new Endereco( Masc. Moraes", 111); Aluno al = new Aluno("123", João", end); fachada.inseriraluno(al); catch (ExcecaoDadoInvalido e) { System.out.println(e.getMessage( )); catch (ExcecaoElementoJaExistente e) { System.out.println(e.getMessage( )); catch (ExcecaoRepositorio e) { System.out.println(e.getMessage( )); Programação Orientada a Objeto - Márcio Bueno 27

Exercício Implementar a arquitetura em 3 camadas no cadastro de contas (inserir, buscar, remover, alterar, verificar existência e imprimir relatório com todas as contas cadastradas). OBS 1: Utilize array no repositório. OBS 2: Imprimir dados na tela é função da camada de interface de usuário. Programação Orientada a Objeto - Márcio Bueno 28

Referências Leitura Recomendada: Artigo: Integrando Java com Bancos de Dados Relacionais. Autores: Euricélia Viana e Paulo Borba (http://www.cin.ufpe.br/~phmb/publications.htm) Artigo: PDC: The persistent data collections pattern. Autores: Tiago Massoni, Vander Alves, Sérgio Soares e Paulo Borba (http://www.cin.ufpe.br/~phmb/publications.htm) Livro: Design Patterns: Elements of Reusable Object-Oriented Software. Autores: Erich Gamma et al. Editora Addison-Wesley Programação Orientada a Objeto - Márcio Bueno 29