Módulo II Modelo MVP

Tamanho: px
Começar a partir da página:

Download "Módulo II Modelo MVP"

Transcrição

1 Módulo II Modelo MVP Prof. Ismael H F Santos April 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 1 Referências (livros) April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 2 1

2 Referências (na Web) GUI Architectures Channel9 Microsoft sobre MVP atterns/default.aspx MVC April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 3 Referências (na Web) Passive View Supervising Controller (Supervising Presenter?) html GUI Architectures Podcasts Stub Generator (mais curiosidade do que realidade...) April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 4 2

3 FPSW-Java Modelos Camada de Apresentação April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 5 Introdução Os padrões tem a ver com a separação (ou falta dela) entre dois tipos de lógica: Lógica da apresentação (presentation logic) consiste em lógica para apresentar o resultado de um processamento. Lógica do negócio (business logic) consiste em lógica para produzir os resultados desejados. Cada um desses dois tipos possui uma grupo de responsabilidades distintas... April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 6 3

4 Introdução Responsabilidades da lógica do negócio Validações de regras de negócio, Manutenção das informações do sistema. Responsabilidades da lógica da apresentação Disposição (Layout), Animação e desenho (rendering), Criação dinâmica de uma visão (e.g., menus suspensos), Visibilidade/invisibilidade progressivas, Validação dos dados de entrada, Formatação da saída (e.g., formatos para datas), Localização/Internacionalização. April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 7 Padrões de software Autonomous View Model View Controller Model View Presenter Supervising Presenter (ou Supervising Controller) Passive View Presentation Model View Helper April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 8 4

5 Autonomous View Os desenvolvedores desenham os formulários da aplicação que usam controles gráficos genéricos. O formulário descreve a disposição dos controles nele. O formulário observa os controles e tem os métodos manipuladores para reagir aos eventos interessantes originados nos controles. A edição simples de dados é realizada com a estratégia Data Binding. Alterações complexas são feitas pelos métodos manipuladores de eventos do formulário. April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 9 Autonomous View Características O estado da apresentação está no View A lógica da apresentação está no View Em casos extremos (piores?), a lógica do negócio e a interação com serviços remotos também é posicionada no View. Na verdade, isso é um Anti-Pattern chamado Smart UI. Mas é possível usar um Autonomous View que faça essa extração para outras classes. April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 10 5

6 Autonomous View Vantagem: Simplicidade na implementação. Desvantagens Difícil de aplicar testes unitários (unit testing), Separação de responsabilidades (separation of concerns) não é adequada, Duplicação de código entre diferentes Views. Os padrões descritos a seguir tentam remover essas desvantagens do padrão Autonomous View. April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 11 MVC (Model View Controller) Padrão utilizado para separar a lógica da apresentação da apresentação propriamente dita. A idéia básica é que toda a lógica que normalmente iria ligar a IU com os dados seja movida para uma classe separada. Resultado: a IU (Forms, UserControls, etc) é burra. A IU é burra no sentido de que não há processamento embutido nela. Existe em inúmeras variantes (e sub-variantes!). April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 12 6

7 MVC (Model View Controller) Um arquitetura de desenho comumente utilizada para aplicações com interface gráfica. Inicialmente desenvolvido para a linguagem Smalltalk Quando uma aplicação gráfica usa um objeto, este objeto pode ser visto como um modelo. O modelo provê operações para que o restante da aplicação possa manipulá-lo. Uma aplicação pode conter diversão visões de um modelo. e.g.: visões de edição, impressão e de seleção de um documento April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 13 MVC (Model View Controller) Adicionalmente, cada visão possui associada a si um objeto controlador que auxilia na implementação da interface gráfica associada à visão. Quando um controlador obtém um comando do usuário, ele utiliza informação na visão para modificar o modelo. Definição original: quando o modelo é modificado, ele notifica (padrão GoF Observer) todas as suas visões, que por sua vez, atualizam a si próprias. Não é o caso no uso dessa padrão em aplicações Web. April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 14 7

8 MVC em aplicações Web (Java) April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 15 Fonte: Argonavis Arquitetura MVP O componente model: Objeto que contém a lógica do negócio Não conhece nada acerca da apresentação Pode ser um objeto do negócio, de serviço ou um DataSet. Aspectos positivos: facilita o reuso da lógica do negócio em diferentes contextos (ambientes). Web, Smart Client, Mobile, Services Idealmente, deve expor interfaces de forma abstrata, em vez de concreta. Simplifica o teste com objetos Mock Isola a implementação do modelo April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 16 8

9 Arquitetura do MVP O componente view do MVP é uma estrutura composta de controles de interface com o usuário. Esse componente não contém qualquer comportamento que descreve como os controles reagem à eventos de sistema (ações do usuário). A reação às ações do usuário é posicionada em um objeto separado, o componente presenter. Os manipuladores para as ações do usuário ainda existem nos controles, mas esses manipuladores meramente passam (delegam) o processamento para o presenter. April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 17 Arquitetura do MVP Fonte: April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 18 9

10 Arquitetura do MVP O presenter então decide como reagir ao evento. Normalmente, essa reação corresponde ao envio de mensagens aos objetos do modelo (componente model do MVP). Composto de classes do domínio e de classes de serviço. Conforme o presenter atualiza o modelo, o componente view é atualizado. Quando o presenter realiza toda a manipulação dos controles, temos o padrão denominado Passive View. April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 19 Arquitetura do MVP Há duas razões principais para usar o MVP: Separar o comportamento da aplicação da interface gráfica. Melhorar a testabilidade A segunda razão é a mais convincente. A vantagem da separação é que toda a complexidade comportamental é removida da interface gráfica, tornando esta última mais fácil de entender. Essa vantagem é descompensada pelo fato de que o controlador deve ainda ser fortemente acoplado à tela. Nesse caso, há um ponto de interrogação bem grande acerca de se vale realmente à pena criar um objeto separado. Se testabilidade é um fator a ser considerado, devemos decidir o quanto de comportamento permanece na view. April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 20 10

11 Passive View e Supervising Controller Recentemente, o MVP foi dividido em dois padrões: Passive View e Supervising Controller O padrão Passive View é muito similar ao Supervising Controller. A diferença que o primeiro põe todo o comportamento de atualização da view no controlador, incluindo casos simples. Isto resulta em programação extra, mas significa que todo o comportamento da apresentação é testável. A escolha entre os dois depende: de que tipo de Data Binding a ser usado e se a equipe concorda ou não em deixar algumas partes da tela sem serem consideradas pelos testes no controlador. April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 21 Passive View x Supervising Controller O padrão MVP corresponde na verdade a dois outros padrões: Passive View Supervising Controller A diferença entre os dois está em quanto o componente View tem conhecimento acerca do componente Model. Quando o View não conhece nada acerca do Model e o Presenter realiza toda a lógica da apresentação, temos o padrão Passive View. Quando uma parte pequena dessa manipulação é feita pelo View, temos o padrão Supervising Controller. Lógica da apresentação (presentation logic) April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 22 11

12 MVP (Model View Presenter) April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 23 Componente Model O componente Model corresponde aos objetos que contêm a lógica do negócio. Esse componente não conhece nada acerca da apresentação. Aspecto positivo: facilita o reuso da lógica do negócio em diferentes contextos (ambientes). Web Apps, Smart Clients, Mobile, WEB Services Idealmente esse componente, deve expor interfaces de forma abstrata, em vez de concreta. Simplificação dos testes com objetos Mock Isolamento da implementação do modelo April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 24 12

13 Componente View O componente View é uma estrutura composta de controles de interface com o usuário. Esse componente não contém qualquer comportamento que descreve como os controles reagem à eventos de sistema (i.e., a ações do usuário). A reação às ações do usuário é posicionada em um objeto separado, o componente Presenter. Os manipuladores para as ações do usuário existem nos controles da IU, mas eles meramente passam (delegam) o processamento para o Presenter. April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 25 Componente Presenter O Presenter então decide como reagir ao evento notificado pelo componente View. Normalmente, essa reação corresponde ao envio de mensagens a objetos do componente Model. Composto de classes do domínio e de classes de serviço. Conforme o presenter atualiza o modelo, o componente view é atualizado. April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 26 13

14 MVP resumo dos componentes View: exibe os dados e notifica eventos de sistema para o Presenter. Presenter: coordena a comunicação entre o View e a camada de serviços (ou camada de negócio) e é responsável pela lógica de IU. Model: os dados que devem ser exibidos ou editados no View. April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 27 Arquitetura do MVP O Presenter então decide como reagir ao evento notificado pelo componente View. Normalmente, essa reação corresponde ao envio de mensagens aos objetos componente Model. Composto de classes do domínio e de classes de serviço. Conforme o presenter atualiza o modelo, o componente view é atualizado. Há duas razões principais para usar o MVP: Separar a complexidade de uma Autonomous View. Melhorar a testabilidade A segunda razão é a mais convincente. April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 28 14

15 MVP versus MVC O MVP é uma variante do padrão MVC, e a idéia básica dos componentes permanece a mesma. A diferença principal é que, no MVP, a tríade está invertida: No MVC, o Controller é responsável pela captura das ações do usuário (e.g., mousedown, keydown, etc). No MVP, é o View que captura as ações do usuário; o Presenter então trata esses eventos. April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 29 Prós & contras do MVP Há duas razões principais para usar o MVP: Evitar a baixa coesão de uma Autonomous View. Melhorar a testabilidade (essa é a mais convincente). Se testabilidade automática deve ser usada, isso conta positivamente para retirar o máximo de comportamento permanece do view. A vantagem da separação é que toda a complexidade comportamental é removida da interface gráfica, tornando esta última mais fácil de entender. April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 30 15

16 Prós & contras do MVP (cont) Aspectos positivos Já que a lógica não está atrelada à IU, o MVP facilita a utilização de testes unitários. Posiciona código (responsabilidades) em seu lugar apropriado. Aumenta o reuso da lógica de domínio. Facilita a modificação da IU por designers gráficos. Facilita o uso de TDD (Test Driven Design). Separa adequadamente os aspectos da lógica da aplicação. April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 31 Prós & contras do MVP (cont) Aspectos negativos Requer uma mudança na forma de pensar do desenvolvedor Curva de aprendizado: código é mais abstrato do que no estilo Autonomouws View de programação visual. April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 32 16

17 Supervising Presenter O estado da apresentação está no View A lógica da apresentação está no Presenter O Presenter observa o View O Presenter atualiza o View O View Presenter conhece o View (acoplamento abstrato) O View não conhece o Presenter April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 33 Passive View x Supervising Presenter A diferença entre essas duas varianets do MVP está em quanto o View tem conhecimento acerca do Model. Quando o View não conhece nada acerca do Model e o Presenter realiza toda a lógica da apresentação, temos o padrão Passive View. Quando uma parte pequena dessa manipulação é feita pelo View, temos o padrão Supervising Presenter. April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 34 17

18 FPSW-Java MVP Examples April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 35 Exemplo de View Esse é o componente View (CadastroDepartamentoView) para a funcionalidade de cadastro de departamentos. April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 36 18

19 CadastroDepartamentoView public class CadastroDepartamentoView extends JFrame implements ICadastroDepartamentoView O View aqui é uma subclasse de JFrame (formulário em Swing). O View deve implementar uma interface com a qual o Presenter irá interagir (o Presenter não interage com o View diretamente, apenas por intermédio dessa interface). April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 37 ICadastroDepartamentoView public interface ICadastroDepartamentoView { void desabilitarentrada(); void habilitaredicao(); void informarerro(string mensagem); void modoalteracao(); void modoinclusao(); void modoinicial(); void modovisualizacao(); continua... April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 38 19

20 ICadastroDepartamentoView (cont.) void limparcampos(); void setnome(string nome); void setsigla(string sigla); void setlocalizacao(string localizacao); void setverbaanual(float verbaanual); } String getnome(); String getsigla(); String getlocalizacao(); Float getverbaanual(); April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 39 ICadastroDepartamentoView (cont.) Note que ICadastroDepartamentoView não possui detalhe algum acerca da apresentação específica (e.g. Swing ou JSP). Isso aumenta a portabilidade do Presenter. O View não conhece o Presenter diretamente, mas notifica este último sobre a ocorrência de eventos de sistema; April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 40 20

21 Instanciação do Presenter Na sua instanciação, o objeto Presenter recebe o View e os DAO s de que precisa como parâmetros. O Presenter é um ouvinte (listener) do View.... CadastroDepartamentoView form = new CadastroDepartamentoView(); CadastroDepartamentoController presenter = new CadastroDepartamentoController(form, DepartamentoDAO.getInstance()); form.inscrever(presenter);... April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 41 Modos do View O View pode passar por diversos modos (ou estados). Em cada estado, a aparência e o comportamento do View são diferentes. Esses estados se refletem em operações: void modoalteracao(); void modoinclusao(); void modoinicial(); void modovisualizacao(); É responsabilidade do Presenter controlar o modo no qual o View deve se encontrar, em função das ações do usuário. April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 42 21

22 Eventos de Sistema Eventos de sistema ocorrem no View, mas são imediatamente repassados por ele ao Presenter. public void inscrever(actionlistener listener) { btnincluir.addactionlistener(listener); btnconfirmar.addactionlistener(listener); btncancelar.addactionlistener(listener); btnalterar.addactionlistener(listener); btnexcluir.addactionlistener(listener); btnpesquisar.addactionlistener(listener); } April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 43 Eventos de Sistema É responsabilidade do Presenter decidir o que fazer como reação ao evento. Ou seja, o Presenter implementa a lógica da apresentação. Para ser um ouvinte do View, o Presenter implementa ActionListener. public void actionperformed(actionevent e) { String comando = e.getactioncommand(); if (comando.equals("confirmar")) { confirmaroperacao(); } else if (... } April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 44 22

23 Uso de um Adapter Quando a lógica de IU é complexa, uma alternativa é criar adaptatores Adaptadores são objetos intermediários entre o view e o presenter. Servem para ajudar o presenter na execução da lógica da apresentação. Vejamos o próximo slide... April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 45 Uso de um Adapter (cont) Notificações View Presenter Model Apresentação Domínio April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 46 23

24 Modo Inicial April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 47 Modo Inclusão April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 48 24

25 Modo Visualização April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 49 Modo Alteração April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 50 25

26 Outro exemplo de MVP (Fowler) Suponha que haja a necessidade de apresentar dados sobre um objeto de negócio. Variance é um campo calculado Cálculos fazem parte da lógica do negócio Dica: não faça cálculos no código da IU April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 51 Interação entre Presenter e View O presenter solicita à view a exibição de algo sem assumir nada acerca de como essa exibição é feita O que apresentar, e não Como Em vez disso IView.TextBoxName.Text = Cust.Name Temos isso IView.DisplayCustomer(Cust) April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 52 26

27 Interação entre Presenter e View A view fornece notificações para o presenter acerca de ações relevantes do usuário. O presenter é o responsável por iniciar a view. Public Sub New(ByVal view As IView) _view = view AddHandler _view.filenamechanged, AddressOf FileNameChangedHandler End Sub April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 53 Conclusões Resumo da arquitetura MVP: View: exibe os dados e notifica eventos de sistema para o Presenter. Presenter: coordena a comunicação entre o view e a camada de serviços (ou camada de negócio) e é responsável pela lógica de IU. Model: os dados que devem ser exibidos ou editados na tela. April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 54 27

28 Conclusões Aspectos Positivos Facilita a modificação da IU por designers gráficos. Facilita o uso de TDD (Test Driven Design). Separa adequadamente os aspectos da lógica da aplicação. Aspectos Negativos Requer uma mudança na forma de pensar do desenvolvedor Código é mais abstrato do que no estilo Forms & Controls de programação visual. April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 55 Referências GUI Architectures Channel Microsoft sobre MVP gnpatterns/default.aspx MVC April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 56 28

29 Slides Complementares April 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 57 Code Behind ASP.NET traz uma forma de separar o comportamento da apresentação de seu layout: code-behind. No entanto, ainda há alguns aspectos negativos: O code-behind ainda pode fazer as vezes do manipulador de eventos em um ambiente orientados a eventos. É praticamente proibitivo realizar testes de unidades no código dos code-behind. TDD is difficult to use in some situations, such as graphical user interfaces Wikipédia para Test Driven Development April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 58 29

30 Forms & Controls Os desenvolvedores escrevem os formulários específicos da aplicação que usam controles genéricos. O formulário descreve a disposição dos controles nele. O formulário observa os controles e tem os métodos manipuladores para reagir aos eventos interessantes originados nos controles. A edição simples de dados é realizada com a estratégia Data Binding. Alterações complexas são feitas pelos métodos manipuladores de eventos do formulário. April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 59 Padrões para Apresentação Forms and Controls MVC (Model View Presenter) MVP (Model View Presenter) April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 60 30

31 Arquitetura do MVP Fonte: April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 61 Arquitetura MVP O componente model: Objeto que contém a lógica do negócio Não conhece nada acerca da apresentação Pode ser um objeto do negócio, de serviço ou um DataSet. Aspectos positivos: facilita o reuso da lógica do negócio em diferentes contextos (ambientes). Web, Smart Client, Mobile, Services Idealmente, deve expor interfaces de forma abstrata, em vez de concreta. Simplifica o teste com objetos Mock Isola a implementação do modelo April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 62 31

32 Arquitetura do MVP O componente view do MVP é uma estrutura composta de controles de interface com o usuário. Esse componente não contém qualquer comportamento que descreve como os controles reagem à eventos de sistema (ações do usuário). A reação às ações do usuário é posicionada em um objeto separado, o componente presenter. Os manipuladores para as ações do usuário ainda existem nos controles, mas esses manipuladores meramente passam (delegam) o processamento para o presenter. April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 63 Arquitetura do MVP O presenter então decide como reagir ao evento. Normalmente, essa reação corresponde ao envio de mensagens aos objetos do modelo (componente model do MVP). Composto de classes do domínio e de classes de serviço. Conforme o presenter atualiza o modelo, o componente view é atualizado. Quando o presenter realiza toda a manipulação dos controles, temos o padrão denominado Passive View. April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 64 32

33 Arquitetura do MVP Há duas razões principais para usar o MVP: Separar o comportamento da aplicação da interface gráfica. Melhorar a testabilidade A segunda razão é a mais convincente. A vantagem da separação é que toda a complexidade comportamental é removida da interface gráfica, tornando esta última mais fácil de entender. Essa vantagem é descompensada pelo fato de que o controlador deve ainda ser fortemente acoplado à tela. Nesse caso, há um ponto de interrogação bem grande acerca de se vale realmente à pena criar um objeto separado. Se testabilidade é um fator a ser considerado, devemos decidir o quanto de comportamento permanece na view. April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 65 Passive View e Supervising Controller Recentemente, o MVP foi dividido em dois padrões: Passive View e Supervising Controller O padrão Passive View é muito similar ao Supervising Controller. A diferença que o primeiro põe todo o comportamento de atualização da view no controlador, incluindo casos simples. Isto resulta em programação extra, mas significa que todo o comportamento da apresentação é testável. A escolha entre os dois depende: de que tipo de Data Binding a ser usado e se a equipe concorda ou não em deixar algumas partes da tela sem serem consideradas pelos testes no controlador. April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 66 33

34 FPSW-Java Modelo MVP April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 67 Conclusões Resumo da arquitetura MVP: View: exibe os dados e notifica eventos de sistema para o Presenter. Presenter: coordena a comunicação entre o view e a camada de serviços (ou camada de negócio) e é responsável pela lógica de IU. Model: os dados que devem ser exibidos ou editados na tela. April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 68 34

35 Conclusões Aspectos Positivos Facilita a modificação da IU por designers gráficos. Facilita o uso de TDD (Test Driven Design). Separa adequadamente os aspectos da lógica da aplicação. Aspectos Negativos Requer uma mudança na forma de pensar do desenvolvedor Código é mais abstrato do que no estilo Forms & Controls de programação visual. April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 69 35

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini /

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini   / Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini E-mail: prof.andre.luis.belini@gmail.com / andre.belini@ifsp.edu.br MATÉRIA: ARQUITETURA DE SOFTWARE ASWA4 Aula N : 10

Leia mais

M V C P R O F. M E. H É L I O E S P E R I D I Ã O

M V C P R O F. M E. H É L I O E S P E R I D I Ã O M V C P R O F. M E. H É L I O E S P E R I D I Ã O A P L I C A Ç Õ E S M O N O L Í T I C A S Na época dos computares independentes um aplicativo era desenvolvido para ser usado em uma única máquina. Este

Leia mais

Módulo II Arquitetura em Camadas

Módulo II Arquitetura em Camadas Módulo II Arquitetura em Camadas Prof. Ismael H F Santos April 08 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 1 Ementa Arquitetura de camadas de Software Arquiteturas em Camadas Padrões para

Leia mais

M V C, J S O N E X M L P R O F. M E. H É L I O E S P E R I D I Ã O

M V C, J S O N E X M L P R O F. M E. H É L I O E S P E R I D I Ã O M V C, J S O N E X M L P R O F. M E. H É L I O E S P E R I D I Ã O A P L I C A Ç Õ E S M O N O L Í T I C A S Na época dos computares independentes um aplicativo era desenvolvido para ser usado em uma única

Leia mais

ALUNO: RONI FABIO BANASZEWSKI

ALUNO: RONI FABIO BANASZEWSKI Model-View-Controller ALUNO: RONI FABIO BANASZEWSKI Objetivo Separar dados ou lógica de negócios (Model) da interface do usuário (View) e do fluxo da aplicação (Control) A idéia é permitir que uma mesma

Leia mais

Soluções reutilizáveis para situações ou problemas encontrados comumente em desenvolvimento de software orientado a objetos.

Soluções reutilizáveis para situações ou problemas encontrados comumente em desenvolvimento de software orientado a objetos. Padrões de Projeto O que são? Soluções reutilizáveis para situações ou problemas encontrados comumente em desenvolvimento de software orientado a objetos. Livros Design Patterns: Elements of Reusable Object-

Leia mais

Definindo um padrão para arquitetura Web

Definindo um padrão para arquitetura Web Definindo um padrão para arquitetura Web Padrões de Projeto Soluções reutilizáveis para situações ou problemas encontrados comumente em desenvolvimento de software orientado a objetos. Livros Design Patterns:

Leia mais

PLATAFORMA SIGA RIO DAS VELHAS MANUAL DO CÓDIGO FONTE

PLATAFORMA SIGA RIO DAS VELHAS MANUAL DO CÓDIGO FONTE PLATAFORMA SIGA RIO DAS VELHAS MANUAL DO CÓDIGO FONTE ATO CONVOCATÓRIO Nº 006/2016 CONTRATO DE GESTÃO IGAM Nº 002/IGAM/2012 09/2017 1 PLATAFORMA SIGA RIO DAS VELHAS MANUAL DO CÓDIGO FONTE ATO CONVOCATÓRIO

Leia mais

Agenda da Aula. Reuso de Software. Tipos de Reuso. Potenciais Problemas. Vantagens de Reuso. Introdução a Reuso de Software

Agenda da Aula. Reuso de Software. Tipos de Reuso. Potenciais Problemas. Vantagens de Reuso. Introdução a Reuso de Software Reuso de Software Aula 02 Agenda da Aula Introdução a Reuso de Software Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo reuso.software@gmail.com Introdução a Reuso de Software Abordagens de Reuso

Leia mais

De Olho na Pista. Documento de Arquitetura. De Olho na Pista Documento de Arquitetura Data: 23/03/2013. AJA Software

De Olho na Pista. Documento de Arquitetura. De Olho na Pista Documento de Arquitetura Data: 23/03/2013. AJA Software AJA Software www.ajasoftware.wordpress.com De Olho na Pista Documento de Arquitetura Confidencial De Olho na Pista, 2013 1 Sumário 1. Introdução 3 2. Metas e Restrições da Arquitetura 3 3. Padrão da Arquitetura

Leia mais

Arquitetura em Camadas

Arquitetura em Camadas Arquitetura em Camadas 1 Introdução Em aplicações OO de médio e grande porte, diversos aspectos devem ser considerados: Apresentação Lógica da aplicação Lógica do negócio Persistência de Objetos Camada

Leia mais

Web Presentation Patterns - Controllers

Web Presentation Patterns - Controllers Instituto Superior Técnico 29 de Novembro de 2004 1 2 3 Page Controller Front Controller 4 5 Porquê Usar Web Applications Não necessita instalar software no cliente. Acesso universal fácil. Interface comum

Leia mais

Mas o que é mesmo Padrão de Projeto?

Mas o que é mesmo Padrão de Projeto? Mas o que é mesmo Padrão de Projeto? Um Padrão de Projeto descreve uma solução comprovada para um problema recorrente e conhecido no desenvolvimento de software orientado a objetos. Mas afinal, porque

Leia mais

Prof. Msc. Vladimir Camelo

Prof. Msc. Vladimir Camelo APLICATIVOS DE LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS (ALPOO) PADRÃO MVC (Model-View-Controller) Prof. Msc. Vladimir Camelo O padrão arquitetural MVC (Model-View-Controller) foi criado no contexto

Leia mais

PROGRAMAÇÃO SERVIDOR PADRÕES MVC E DAO EM SISTEMAS WEB. Prof. Dr. Daniel Caetano

PROGRAMAÇÃO SERVIDOR PADRÕES MVC E DAO EM SISTEMAS WEB. Prof. Dr. Daniel Caetano PROGRAMAÇÃO SERVIDOR EM SISTEMAS WEB PADRÕES MVC E DAO Prof. Dr. Daniel Caetano 2011-2 Visão Geral 1 2 3 4 5 6 7 Padrão de Desenvolvimento? O Conceito de Padrão de Projeto Padrão MVC Persistência MVC Nível

Leia mais

Levantamento de classes (Análise de casos de uso)

Levantamento de classes (Análise de casos de uso) Plano Levantamento de classes (Análise de casos de uso) Prof. Cesar Augusto Tacla Levantamento no método APOO Projeto por padrões: MVC e Observador Estereótipos de classes Visão geral do método Engenharia

Leia mais

Abordagem Teórico-Prática

Abordagem Teórico-Prática Abordagem Teórico-Prática Prof. Giuliano Prado M. Giglio, M.Sc Desenvolvimento de Aplicações Distribuídas - WEB Agenda Padrão MVC Objetivo Características Problemas e se aplicar o MVC Sistema Exemplo Aplicação

Leia mais

Módulo III Padrões GOF-VI: MVC

Módulo III Padrões GOF-VI: MVC Módulo III Padrões GOF-VI: MVC Professores Eduardo Bezerra edubezerra@gmail.com Ismael H F Santos ismael@tecgraf.puc-rio.br April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 1 Ementa Padrões

Leia mais

TÓTI O QUE? thoughtworks.com/pt/careers/access

TÓTI O QUE? thoughtworks.com/pt/careers/access Mobile Developers @ TÓTI O QUE? thoughtworks.com/pt/careers/access UM POUCO SOBRE NOSSA APP ~50 pessoas ~1,5 milhões de diferentes times usuários ativos / mês ~ 3 anos em evolução Android + ios 20+ países

Leia mais

Técnicas para Reutilização de Software

Técnicas para Reutilização de Software DCC / ICEx / UFMG Técnicas para Reutilização de Software Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Panorama de Reutilização Frameworks Padrões de projeto Aplicações configuráveis Padrões de

Leia mais

PATI-MVC: Padrões MVC para Sistemas de Informação. Gabriela T. De Souza Instituto Atlântico

PATI-MVC: Padrões MVC para Sistemas de Informação. Gabriela T. De Souza Instituto Atlântico PATI-MVC: Padrões MVC para Sistemas de Informação Gabriela T. De Souza gabi@atlantico.com.br Instituto Atlântico Carlo Giovano S. Pires cgiovano@atlantico.com.br Instituto Atlântico Márcio de Oliveira

Leia mais

Aula Prática Criando Views e Controles

Aula Prática Criando Views e Controles Aula Prática Criando Views e Controles Criando a interface utilizando Swing Paulo Ricardo Lisboa de Almeida 1 Criando uma UI Simples Vamos criar uma view simples no braço utilizando swing Existem opções

Leia mais

MODEL-VIEW-CONTROLER. Prof. Fellipe Aleixo

MODEL-VIEW-CONTROLER. Prof. Fellipe Aleixo MODEL-VIEW-CONTROLER Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br) O Que é MVC? Modelo de arquitetura de software Separar dados ou lógica de negócios (Model) da interface do usuário (View) e do fluxo

Leia mais

Encapsulamento. Separa a interface de um objeto dos detalhes de seu funcionamento interno. Caixa preta 2/27

Encapsulamento. Separa a interface de um objeto dos detalhes de seu funcionamento interno. Caixa preta 2/27 Encapsulamento Encapsulamento entrada Caixa preta saída 2/27 Separa a interface de um objeto dos detalhes de seu funcionamento interno Encapsulamento Esconder os detalhes de implementação de um componente

Leia mais

Agenda da Aula. Arquitetura de Software e Padrões Arquiteturais. Elementos de um Padrão. Arquitetura de Software. Arquitetura de Software

Agenda da Aula. Arquitetura de Software e Padrões Arquiteturais. Elementos de um Padrão. Arquitetura de Software. Arquitetura de Software Reuso de Software Aula 04 Agenda da Aula Arquitetura de Software e Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo reuso.software@gmail.com 14 Março 2012 Arquitetura de Software Padrões arquiteturais

Leia mais

Módulo III Padrões GOF

Módulo III Padrões GOF Módulo III Padrões GOF Professores Eduardo Bezerra edubezerra@gmail.com Ismael H F Santos ismael@tecgraf.puc-rio.br April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 1 Ementa Introdução aos

Leia mais

Roteiro. Introdução. Uma Introdução à Programação Orientada a Objetos e JAVA usando NetBeans. Objetos. Princípios da Orientação a Objetos

Roteiro. Introdução. Uma Introdução à Programação Orientada a Objetos e JAVA usando NetBeans. Objetos. Princípios da Orientação a Objetos Uma Introdução à Programação Orientada a Objetos e JAVA usando NetBeans Roteiro Introdução Conceitos de Oientação a Objetos A Linguagem Java NetBeans (www.netbeans.org) Fernando Vieira Paulovich paulovic@icmc.usp.br

Leia mais

Agenda do Curso. Reuso de Software. Agenda da Aula. Tipos de Reuso. Vantagens de Reuso. Reuso de Software. Eduardo Figueiredo

Agenda do Curso. Reuso de Software. Agenda da Aula. Tipos de Reuso. Vantagens de Reuso. Reuso de Software. Eduardo Figueiredo Engenharia de Software Aula 21 Agenda do Curso Reuso de Software Aula 23 Data 28/05 Assunto Desenv. Orientado a Aspectos 24 30/05 Laboratório 25 04/06 Apresentações do TP (1) Eduardo Figueiredo 26 06/06

Leia mais

Marcela Mariotti Peres Arquitetura em três camadas Parte 1 [conceito]

Marcela Mariotti Peres  Arquitetura em três camadas Parte 1 [conceito] 1 Muita gente já deve ter escutado falar em Arquitetura em camadas. Cada empresa e/ou pessoa tem o hábito de programar na arquitetura que prefere; muitos nem dividindo o projeto em camadas. Neste artigo,

Leia mais

Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça. Padrão Observer (Observador)

Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça. Padrão Observer (Observador) Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça Problema: Definir uma dependência um-para-muitos entre objetos, de forma quando o estado

Leia mais

Linguagens de Domínio Específico

Linguagens de Domínio Específico Linguagens de Domínio Específico Fabio Mascarenhas 2017.1 http://www.dcc.ufrj.br/~fabiom/dsl Por que DSLs? Melhorar a produtividade dos programadores input =~ /\d{3}-\d{3}-\d{4}/ Facilitar a escrita e

Leia mais

Paradigmas de Linguagens de Programação. Suporte para Programação Orientada a Objeto

Paradigmas de Linguagens de Programação. Suporte para Programação Orientada a Objeto Suporte para Programação Orientada a Objeto Cristiano Lehrer Categoria das Linguagens que Suportam POO Suporte a POO acrescentado a uma linguagem já existente: C++ (também suporta programação procedural

Leia mais

Pré-requisitos: Conhecimentos de informática gerencial e lógica de programação.

Pré-requisitos: Conhecimentos de informática gerencial e lógica de programação. CURSO DESENVOLVEDOR FRONT-END HTML5/CSS3/JavaScript Objetivo: Este curso visa introduzir o aluno do mundo do desenvolvimento Web, com aplicabilidade, ensino e capacitação nas principais linguagens de diagramação

Leia mais

Levantamento de classes (Análise de casos de uso) Prof. Cesar Augusto Tacla

Levantamento de classes (Análise de casos de uso) Prof. Cesar Augusto Tacla Levantamento de classes (Análise de casos de uso) Prof. Cesar Augusto Tacla Plano Levantamento no método APOO Análise (conceitos) Projeto por padrões: MVC e Observador Estereótipos de classes Método para

Leia mais

Padrões contexto problema solução

Padrões contexto problema solução Padrões Padrões são soluções para problemas específicos que ocorrem de forma recorrente em um determinado contexto que foram identificados a partir da experiência coletiva de desenvolvedores de software.

Leia mais

Padrões. Arquitetura de Software Thaís Batista

Padrões. Arquitetura de Software Thaís Batista Padrões Endereçam uma classe de problemas recorrentes e apresenta uma solução para eles (podem ser considerados um par problema-solução) Permitem a construção de software com propriedades definidas Ajudam

Leia mais

Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça. Padrão Observer (Observador)

Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça. Padrão Observer (Observador) Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça Problema: Definir uma dependência um-para-muitos entre objetos, de forma quando o estado

Leia mais

GRASP. Nazareno Andrade (baseado em Hyggo Almeida e Jacques Sauvé)

GRASP. Nazareno Andrade (baseado em Hyggo Almeida e Jacques Sauvé) GRASP Nazareno Andrade (baseado em Hyggo Almeida e Jacques Sauvé) O que vimos na última aula? Introdução a padrões O que são? Por que utilizá-los? Padrões GRASP O que são? Quais serão apresentados na disciplina?

Leia mais

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS Departamento de Informática PUC-Rio Ivan Mathias Filho ivan@inf.puc-rio.br Programa Capítulo 17 Padrões de Design Singleton Facade Factory Method Observer Strategy

Leia mais

Módulo III Padrões GOF: Bridge

Módulo III Padrões GOF: Bridge Módulo III Padrões GOF: Professores Eduardo Bezerra edubezerra@gmail.com Ismael H F Santos ismael@tecgraf.puc-rio.br April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 1 Ementa Padrões GOF

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objectos - P. Prata, P. Fazendeiro Graphical user Interfaces Objetivos:. Construir programas com interfaces gráficas Graphical User Interface (GUI) application programs - Utilizar classes do package javax.swing - Usar um modelo de programação

Leia mais

Computação II Orientação a Objetos

Computação II Orientação a Objetos Computação II Orientação a Objetos Fabio Mascarenhas - 2016.2 http://www.dcc.ufrj.br/~fabiom/java Android Android é um sistema operacional para dispositivos móveis Kernel Linux, drivers e bibliotecas do

Leia mais

Projeto de Sistemas para Internet

Projeto de Sistemas para Internet Slide 02 03/08/2018 Projeto de Sistemas para Internet Prof. Cleziel Franzoni da Costa 1 /cleziel cleziel@hotmail.com 42 Agenda O.NET Framework e o CLR O que posso fazer com o.net Framework? Plataforma

Leia mais

Padrões de Projeto de Software

Padrões de Projeto de Software Padrões de Projeto de Software Lista de Exercícios AV2-01 Luiz Leão luizleao@gmail.com http://www.luizleao.com Questão 1 Qual o objetivo dos padrões Comportamentais, segundo o catálogo GOF? Questão 1 Resposta

Leia mais

Model-View-Controller (MVC)

Model-View-Controller (MVC) Model-View-Controller (MVC) por Rodrigo Rebou ças de Almeida Objetivo Separar dados ou lógica de negócios (Model) da interface do usuário (View) e do fluxo da aplicação (Control) A idéia é permitir que

Leia mais

Introdução à Análise e Projeto de Sistemas

Introdução à Análise e Projeto de Sistemas Introdução à I. O Que vamos fazer na Disciplina? Saber uma linguagem de programação orientada a objeto (OO) não é suficiente para criar sistemas OO Tem que saber Análise e Projeto OO (APOO) Isto é, Análise

Leia mais

Engenharia de Software

Engenharia de Software Engenharia de Software Design Principles Representando SW em UML OO em C Pattens úteis para embedded Rodrigo M A Almeida Design Principles Design Principles são guias para decompor as funcionalidades e

Leia mais

ESTUDO DO PADRÃO DE PROJETO OBSERVER NO DESENVOLVIMENTO DE SOFTWARES UTILIZANDO A ARQUITETURA MVC RESUMO

ESTUDO DO PADRÃO DE PROJETO OBSERVER NO DESENVOLVIMENTO DE SOFTWARES UTILIZANDO A ARQUITETURA MVC RESUMO Mostra Nacional de Iniciação Científica e Tecnológica Interdisciplinar III MICTI Fórum Nacional de Iniciação Científica no Ensino Médio e Técnico - I FONAIC-EMT Camboriú, SC, 22, 23 e 24 de abril de 2009

Leia mais

EXERCÍCIOS DE REVISÃO DE CONTEÚDO QUESTÕES DISSERTATIVAS

EXERCÍCIOS DE REVISÃO DE CONTEÚDO QUESTÕES DISSERTATIVAS EXERCÍCIOS DE REVISÃO DE CONTEÚDO QUESTÕES DISSERTATIVAS 1. Explique a(s) diferença(s) entre design pattern e framework. 2. Analisar o arquivo de configurações (web.xml) abaixo identificando quais suas

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Ciência da Computação Prof. Elias Ferreira Elaborador por: Ana Claudia Bastos Loureiro Monção JUNIT Teste de Software Processo de Software Um processo de software pode ser visto como o conjunto de atividades,

Leia mais

Padrões de Projeto de Software

Padrões de Projeto de Software Padrões de Projeto de Software Lista de Exercícios AV1 01 Luiz Leão luizleao@gmail.com http://www.luizleao.com Questão 1 Dentre as alternativas abaixo identifique a que NÃO define uma situação em que deve

Leia mais

Avaliação de Frameworks de Produtividade para aplicações CRUD

Avaliação de Frameworks de Produtividade para aplicações CRUD Superintendência de Informática - SINFO/UFRN Avaliação de Frameworks de Produtividade para aplicações CRUD Leonardo René Campos Analista de TI Agenda 1. Introdução 2. Objetivos 3. Critérios de Avaliação

Leia mais

5 Implementação 5.1 Plataforma 5.2 Arquitetura

5 Implementação 5.1 Plataforma 5.2 Arquitetura 5 Implementação Neste capítulo são apresentados os detalhes sobre a implementação da ferramenta. São discutidas as tecnologias envolvidas, assim como as limitações e problemas encontrados durante o desenvolvimento.

Leia mais

Curso online de Fundamentos em Android. Plano de Estudo

Curso online de Fundamentos em Android. Plano de Estudo Curso online de Fundamentos em Android Plano de Estudo Descrição do programa A Certificação Android ensina como usar as ferramentas necessárias para projetar e implantar aplicativos Android para dispositivos

Leia mais

SISTEMA DE INFORMAÇÃO GEOGRÁFICA APLICADO AO GERENCIAMENTO DE INFORMAÇÃO DE TRANSPORTE URBANO

SISTEMA DE INFORMAÇÃO GEOGRÁFICA APLICADO AO GERENCIAMENTO DE INFORMAÇÃO DE TRANSPORTE URBANO SISTEMA DE INFORMAÇÃO GEOGRÁFICA APLICADO AO GERENCIAMENTO DE INFORMAÇÃO DE TRANSPORTE URBANO Edilene de Fátima Vetorato 1, Osvaldo Cesar Pinheiro de Almeida 2 1 Fatec, Botucatu, SP, Brasil. E-mail: edilenefv@hotmail.com

Leia mais

Estilos Arquiteturais. Prof. Fellipe Aleixo

Estilos Arquiteturais. Prof. Fellipe Aleixo Estilos Arquiteturais Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br) Como Definir Arquiteturas? Dois tipos de elementos podem ser utilizados para a definição de uma arquitetura: Componentes à blocos

Leia mais

Observer. Edeyson Andrade Gomes

Observer. Edeyson Andrade Gomes Observer Edeyson Andrade Gomes www.edeyson.com.br Introdução Objetivo O padrão Observer permite que objetos observadores sejam avisados da mudança de estado ou outros eventos ocorrendo num objeto observado

Leia mais

Introdução ao Zend Framework 2

Introdução ao Zend Framework 2 Introdução ao Zend Framework 2 #laryssa-muniz Graduada em Telemática - Estácio de Sá Especialista em Engenharia de Software - UECE Mestranda em Ciências da Computação - UECE Analista de Sistemas - Brain

Leia mais

14/08/2009. Módulo 4

14/08/2009. Módulo 4 ASP.NET Módulo 4 Objetivo Apresentar ao aluno os conceitos do ASP.Net, suas características e funcionamento; Demonstrar como deve ser criado um Web site; Criação de web form; Mostrar os principais controles

Leia mais

Interfaces Gráficas com Swing. Professor Leonardo Larback

Interfaces Gráficas com Swing. Professor Leonardo Larback Interfaces Gráficas com Swing Professor Leonardo Larback SWING Swing é um widget toolkit para uso em Java. Surgiu como sucessor do Abstract Window Toolkit (AWT) à partir do java 1.2. Como uma das principais

Leia mais

J820. Mock objects. Testes de código com dependências. argonavis.com.br. Helder da Rocha

J820. Mock objects. Testes de código com dependências. argonavis.com.br. Helder da Rocha J820 Mock objects Testes de código com dependências Helder da Rocha (helder@acm.org) Como lidar com testes difíceis Testes devem ser simples e suficientes Comece com testes mais importantes Sempre pode-se

Leia mais

Agenda. Padrões de Projeto para Sistemas Web. Introdução. Padrões. Referências. Misael Santos e Rossana Andrade

Agenda. Padrões de Projeto para Sistemas Web. Introdução. Padrões. Referências. Misael Santos e Rossana Andrade Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade misael@lia.ufc.br Universidade Federal do Ceará Jan/2003 1 Agenda Introdução Servlets Padrões Web Interceptor Web Handlers Web Compiler

Leia mais

Padrões Fábrica. Simple Factory Factory Method

Padrões Fábrica. Simple Factory Factory Method Universidade Federal de Uberlândia Faculdade de Computação Disciplina: POO2 Prof. Fabiano Azevedo Dorça Padrões Fábrica Simple Factory Padrões Fábrica Padrão Simple Factory: fornece interfaces para criar

Leia mais

Banco de Dados. SGBD - Sistema de Gerenciamento de Banco de Dados Parte 2. Prof. Leonardo Vasconcelos

Banco de Dados. SGBD - Sistema de Gerenciamento de Banco de Dados Parte 2. Prof. Leonardo Vasconcelos Banco de Dados Parte 2 Prof. Leonardo Vasconcelos - Conceitos e Arquiteturas de SBD Modelos de dados: conjunto de conceitos que podem ser usados para descrever a estrutura de um banco de dados. Permitem

Leia mais

Padrões de Projeto de Software

Padrões de Projeto de Software Padrões de Projeto de Software Luiz Leão luizleao@gmail.com http://www.luizleao.com Conteúdo Programático Padrões Básicos Information Expert Creator High Cohesion Low Coupling Controller Padrões Avançados

Leia mais

Padrões de Interação com o Usuário

Padrões de Interação com o Usuário Padrões de Interação com o Usuário Granularidade dos Padrões Padrões estão relacionados a 3 elementos: Contexto ocorre Problema resolve Solução Problemas e Soluções podem ser observados em diferentes níveis

Leia mais

PROJETO ARQUITETURAL PARTE II: PADRÕES DE PROJETO. Projeto de Programas PPR0001

PROJETO ARQUITETURAL PARTE II: PADRÕES DE PROJETO. Projeto de Programas PPR0001 PROJETO ARQUITETURAL PARTE II: PADRÕES DE PROJETO Projeto de Programas PPR0001 QUALIDADE DO PROJETO 2 3 Qualidade do Projeto de Software Modularidade: gerar particionamento em elementos que executam funções

Leia mais

Introdução a orientação a objetos

Introdução a orientação a objetos 2 Introdução a orientação a objetos Introdução 2 Linguagens procedimentais 2 Um pouco de história 2 Idéias básicas da POO 2 Classe, atributo e método 2 Herança 3 Polimorfismo 3 Vantagens e desvantagens

Leia mais

Java para Desktop. Programação Orientada à Objetos 2 JSE

Java para Desktop. Programação Orientada à Objetos 2 JSE Java para Desktop Programação Orientada à Objetos 2 JSE Encapsulamento significa "ocultar informações, ele define que cada objeto contém todos os detalhes de implementação necessários sobre como ele funciona

Leia mais

Model Driven Development (MDD)

Model Driven Development (MDD) Model Driven Development (MDD) Mestrado em Engenharia de Produção e Sistemas Computacionais Profa. Adriana Pereira de Medeiros adrianamedeiros@puro.uff.br Sumário Introdução Desenvolvimento de Software

Leia mais

Módulo III Camada de Persistência

Módulo III Camada de Persistência Módulo III Camada de Persistência Prof. Ismael H F Santos April 05 Prof. Ismael H. F. Santos - ismael@tecgraf.puc-rio.br 1 Ementa Modulo III Camada de Persistência Persistência de Objetos Mecanismo de

Leia mais

Estratégias de Escrita de Testes Automatizados

Estratégias de Escrita de Testes Automatizados Estratégias de Escrita de Testes Automatizados Paulo Cheque 12/02/2009 Verão 2009 2 Sobre a Palestra Refatoração TAD TFD/POUT TDD BDD Padrões e Anti padrões 3 (Refatoração) Uma modificação feita em pequenos

Leia mais

JAVA APLICAÇÕES GRÁFICAS Propriedades Utilizadas: Font size Animation FACULDADE DE TECNOLOGIA SENAC PELOTAS

JAVA APLICAÇÕES GRÁFICAS Propriedades Utilizadas: Font size Animation FACULDADE DE TECNOLOGIA SENAC PELOTAS JAVA APLICAÇÕES GRÁFICAS Propriedades Utilizadas: Font size Animation FACULDADE DE TECNOLOGIA SENAC PELOTAS Nome do aluno: Guilherme Faria Quental Identificação da Turma: Análise e Desenvolvimento de Sistemas

Leia mais

2 Metodologias para Projetos de Aplicações Hipermidia

2 Metodologias para Projetos de Aplicações Hipermidia 2 Metodologias para Projetos de Aplicações Hipermidia O processo de desenvolvimento de aplicações é o objeto de diversas pesquisas, principalmente no caso das aplicações voltadas para a Internet, que diferem

Leia mais

Padrão de projeto de software

Padrão de projeto de software Padrão de projeto de software Paulo Venancio Lopes e Daniel Sguillaro Nome Roupa Suja Se Lava Em Casa. Intenção Dar maior capacidade e flexibilidade ao conceito de entidade (no contexto de persitência

Leia mais

Computação II Orientação a Objetos

Computação II Orientação a Objetos Computação II Orientação a Objetos Fabio Mascarenhas - 2014.1 http://www.dcc.ufrj.br/~fabiom/java Editor Gráfico Vamos usar nosso framework do Motor, com pequenas mudanças (para permitir interação com

Leia mais

Biblioteca de auxílio ao uso de elementos gráficos

Biblioteca de auxílio ao uso de elementos gráficos UFU Universidade Federal de Uberlândia Faculdade de Computação Biblioteca de auxílio ao uso de elementos gráficos Caio de Oliveira Campos Orientador: André Ricardo Backes Uberlândia Março de 2014 Introdução

Leia mais

PROJETO DE ARQUITETURA (PARTE 2)

PROJETO DE ARQUITETURA (PARTE 2) PROJETO DE ARQUITETURA (PARTE 2) Projeto Detalhado de Software (PDS) Profa. Cynthia Pinheiro Antes de mais nada... 5ª Lista de Exercícios Já está disponível no site a 5ª Lista de Exercícios Entrega: dia

Leia mais

Modelo do Mundo Real. Abstração. Interpretação

Modelo do Mundo Real. Abstração. Interpretação Modelo do Mundo Real Mundo Real Abstração Interpretação Sistema de Software Modelo Algoritmo Abstração: O modelo precisa capturar apenas as características do mundo real que são importantes para o sistema

Leia mais

Componente JOptionPane Layout Null Tratamento de Eventos. Action Listener

Componente JOptionPane Layout Null Tratamento de Eventos. Action Listener Interface Gráfica Prof. Bruno Gomes bruno.gomes@ifrn.edu.br Programação Orientada a Objetos Agenda Componente JOptionPane Layout Null Tratamento de Eventos Action Listener Componente JOptionPane javax.swing.joptionpane

Leia mais

Engenharia de Aplicações Sistemas Interactivos 2009/10! JAVASERVER FACES 1.2. Mestrado em Informática Universidade do Minho! 31!

Engenharia de Aplicações Sistemas Interactivos 2009/10! JAVASERVER FACES 1.2. Mestrado em Informática Universidade do Minho! 31! JAVASERVER FACES 1.2 Mestrado em Informática Universidade do Minho! 31! Java Server Faces (JSF) JSP uma tecnologia" JSF uma framework MVC(-like)" - JSP para a apresentação (ou não)" utilização da JSF tag

Leia mais

Aula 15 Interface Gáfica. Disciplina: Programação Estruturada e Orientada a Objetos Prof. Bruno Gomes

Aula 15 Interface Gáfica. Disciplina: Programação Estruturada e Orientada a Objetos Prof. Bruno Gomes Aula 15 Interface Gáfica Disciplina: Programação Estruturada e Orientada a Objetos Prof. Bruno Gomes http://www.profbrunogomes.com.br/ Agenda da Aula Interface gráfica em Java: Swing. Java Foundation Classes

Leia mais

Community. .com. Introdução ao T D

Community. .com. Introdução ao T D Community Introdução ao T D D Cadastro de Usuário Cadastro de Usuário Cadastro de Usuário Cadastro de Usuário Cadastro de Usuário Cadastro de Usuário Cadastro de Usuário Cadastro de Usuário Meu sistema

Leia mais

Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas Prof. Felippe Scheidt IFPR Campus Foz do Iguaçu. Introdução ao Javascript #1

Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas Prof. Felippe Scheidt IFPR Campus Foz do Iguaçu. Introdução ao Javascript #1 Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas Prof. Felippe Scheidt IFPR Campus Foz do Iguaçu JS Introdução ao Javascript #1 JavaScript é uma linguagem de programação. Desenvolvida

Leia mais

Estilo: BlackBoard. BlackBoard = repositório de dados compartilhados

Estilo: BlackBoard. BlackBoard = repositório de dados compartilhados Estilo: BlackBoard Útil para problemas no qual não há uma solução determinística Uma coleção de programas independentes que trabalham cooperativamente em uma estrutura de dados comum (blackboard) Vários

Leia mais

Linguagem de Programação Visual

Linguagem de Programação Visual Linguagem de Programação Visual Unidade 4 - Introdução à API Swing - JOptionPane Curso Técnico em Informática SUMÁRIO INTRODUÇÃO... 3 API SWING... 3 A CLASSE JOPTIONPANE... 3 PRINCIPAIS MÉTODOS DA CLASSE

Leia mais

Daniel Wildt

Daniel Wildt Orientação a Objetos 1 Daniel Wildt http://danielwildt.blogspot.com Agenda 2 Orientação a Objetos Classe x Objeto Representação classe Atributos / operações Construtores e Destrutores Liberando memória

Leia mais

Computação II Orientação a Objetos

Computação II Orientação a Objetos Computação II Orientação a Objetos Fabio Mascarenhas - 2016.2 http://www.dcc.ufrj.br/~fabiom/java Interfaces Gráficas Vamos usar nosso framework do Motor, com pequenas mudanças (para permitir interação

Leia mais

Desenvolva passo a passo um Sistema Web seguro com C# e Web Services!

Desenvolva passo a passo um Sistema Web seguro com C# e Web Services! Desenvolva passo a passo um Sistema Web seguro com C# e Web Services! Indo além do Desenvolvimento Desktop do módulo anterior, desenvolva nesse curso Aplicações Web de alta performance e agilidade através

Leia mais

Engenharia de Software. Projeto de Arquitetura

Engenharia de Software. Projeto de Arquitetura Engenharia de Software Projeto de Arquitetura O que já vimos? Introdução a Engenharia de Software Processos de Software Desenvolvimento Ágil de Software Engenharia de Requisitos Modelagem de sistemas (outra

Leia mais

Reúso de Software. Adaptado de. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide by Pearson Education

Reúso de Software. Adaptado de. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide by Pearson Education Reúso de Software Adaptado de Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide 1 Reúso de Software Na maioria das disciplinas de engenharia, os sistemas são projetados por meio

Leia mais

Protótipo de uma ferramenta de apoio para desenvolvimento de sistemas web para WebIntegrator

Protótipo de uma ferramenta de apoio para desenvolvimento de sistemas web para WebIntegrator Protótipo de uma ferramenta de apoio para desenvolvimento de sistemas web para WebIntegrator Ederson Evaristo Jantsch Orientador: Marcel Hugo 09/07/2002 Roteiro Introdução Aplicação multicamadas Tecnologias

Leia mais

Conceitos de Orientação a Objetos

Conceitos de Orientação a Objetos AULA 1 INTRODUÇÃO AO PHP Em PHP AVANÇADO, além de voltar a focar o desenvolvimento em PHP interagindo com o banco de dados Postgresql, também iremos trabalhar com desenvolvimento com orientação a objetos.

Leia mais

CRIAÇÃO DE UM APLICATIVO DA USESKILL PARA O AMBIENTE MOBILE

CRIAÇÃO DE UM APLICATIVO DA USESKILL PARA O AMBIENTE MOBILE MINISTÉRIO DA EDUCAÇÃO UNIVERSIDADE FEDERAL DO PIAUÍ PRÓ-REITORIA DE PESQUISA- PROPESQ COORDENAÇÃO DE INOVAÇÃO TECNOLÓGICA CITEC Programa Institucional de Bolsa em Desenvolvimento Tecnológico e Inovação

Leia mais

Frameworks funcionais para JSF que proporciona o desenvolvimento de aplicações computacionais WEB

Frameworks funcionais para JSF que proporciona o desenvolvimento de aplicações computacionais WEB Frameworks funcionais para JSF que proporciona o desenvolvimento de aplicações computacionais WEB Bruno Costa Silva 1, Ricardo Rufino 1 1 Universidade Paranaense (Unipar) Paranavaí PR Brasil brunocostasilva62@hotmail.com,

Leia mais

1. Introdução O que é Microsoft PowerPoint Recursos de PowerPoint. Introdução

1. Introdução O que é Microsoft PowerPoint Recursos de PowerPoint. Introdução 1. Introdução 1.1. O que é Microsoft PowerPoint 2007 Microsoft Office PowerPoint 2007 é um software de apresentação gráfica produzido pela Microsoft Corporation para o sistema operacional Microsoft Windows.

Leia mais

Frameworks. SSC-526 Análise e Projeto Orientados a Objeto Profa. Dra. Elisa Yumi Nakagawa 2º semestre de 2013

Frameworks. SSC-526 Análise e Projeto Orientados a Objeto Profa. Dra. Elisa Yumi Nakagawa 2º semestre de 2013 Frameworks SSC-526 Análise e Projeto Orientados a Objeto Profa. Dra. Elisa Yumi Nakagawa 2º semestre de 2013 1 Frameworks Definições: Aplicação semi-completa reutilizável que, quando especializada, produz

Leia mais

Abstract Factory. Prover uma interface para criar uma família de objetos relacionados ou dependentes sem especificar suas classes concretas

Abstract Factory. Prover uma interface para criar uma família de objetos relacionados ou dependentes sem especificar suas classes concretas Objetivo Prover uma interface para criar uma família de objetos relacionados ou dependentes sem especificar suas classes concretas Também chamado de Kit Resumo Parece semelhante ao padrão Factory Method,

Leia mais