Especialização em web com interfaces ricas. Padrões de Projeto - Estruturais

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

Download "Especialização em web com interfaces ricas. Padrões de Projeto - Estruturais"

Transcrição

1 Especialização em web com interfaces ricas Padrões de Projeto - Estruturais Prof. Fabrízzio Alphonsus A. M. N. Soares Instituto de Informática Universidade Federal de Goiás Aula 8 25 de maio de 2012 Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 1/102

2 Padrões de Projeto - Estruturais I Padrões de projeto estruturais são padrões que lidam com as estruturas do projeto, facilitando a comunicação entre suas entidades. Por enquanto, esse conceito permanecerá abstrato, mas de acordo com os padrões deste tipo, entenderemos melhor. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 2/102

3 Padrões de Projeto - Estruturais II Em resumo, estes padrões, em outras palavras cuidam da estrutura de seu projeto. Por outro lado padrões estruturais devem ser aplicados em classes responsáveis pela estrutura dos domínios, fazendo uma analogia com a engenharia civil, eles seriam responsáveis por definir o alicerce da construção bem como a estrutura para sustentá-la. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 3/102

4 Padrões de Projeto - Estruturais III Lista de padrões estruturais Adapter Bridge Composite Decorator Façade Flyweight Proxy Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 4/102

5 Padrão Adapter I Adapter, também conhecido como Wrapper, é um padrão de projeto de software (do inglês design pattern). Este padrão é utilizado para adaptar a interface de uma classe. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 5/102

6 Padrão Adapter II O Adapter permite que classes com interfaces incompatíveis possam interagir. Adapter permite que um objeto cliente utilize serviços de outros objetos com interfaces diferentes por meio de uma interface única. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 6/102

7 Padrão Adapter III O principal objetivo do Adapter é facilitar a conversão da interface de uma classe para outra interface mais interessante para o cliente, fazendo com que várias classes possam trabalhar em conjunto independentemente das interfaces originais. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 7/102

8 Padrão Adapter IV Às vezes é preciso modificar uma classe que não pode ser alterada adequadamente devido à falta do código fonte (alguma biblioteca comercial de classes), ou por alguma outra razão. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 8/102

9 Padrão Adapter V O Adapter é uma das formas de modificar classes nestas circunstâncias, sendo classificado com a de finalidade estrutural e abrange tanto escopo de classe quanto de objeto. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 9/102

10 Motivação I Uma classe já existente e sua interface não combinam com a esperada pelo cliente; Se quer criar uma classe reutilizável que coopera com classes não relacionadas ou não previstas, isto é, classes que não necessariamente tenham interfaces compatíveis; Se necessita usar várias subclasses existentes, mas é impraticável adaptar suas interfaces fazendo um Subclassing de cada uma. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 10/102

11 Aplicabilidade I Desejar usar uma classe existente e sua interface não corresponde ao que você precisa; Desejar criar uma classe reutilizável que coopera com classes imprevistas ou não relacionáveis, isto é, classes que não tem necessariamente interfaces compatíveis. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 11/102

12 Estrutura I Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 12/102

13 Estrutura II Participantes Cliente Colabora entre os objetos conforme a interface Alvo. Alvo Define a interface de domínio específico que o Cliente utiliza. Adaptador Adapta a ClasseExistente para ser utilizada pela classe Alvo. ClasseExistente Define uma interface pré-existente que necessita ser adaptada. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 13/102

14 Vantagens Adapta o Adaptador para o Alvo através de uma classe concreta. Como consequência, uma classe adaptada não funcionará para adaptar uma classe e suas subclasses. Deixa o Adaptador sobrepor algum comportamento do adaptado, desde que o Adaptador seja uma subclasse do adaptado. Introduz um único objeto e nenhum ponteiro adicional é necessário para chegar ao adaptado Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 14/102

15 Exemplo Usou-se como exemplo (adaptado [Software Design Patterns, 2005]), ilustrado na Figura 2, uma implementação que demonstra o uso de um banco de dados químico legado. Objetos da classe CompostoQuimico acessam o banco de dados através de uma interface que utiliza o Padrão Adapter. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 15/102

16 Padrão Bridge I Bridge é um padrão de projeto de software, ou design pattern em inglês, utilizado quando é desejável que uma interface (abstração) possa variar independentemente das suas implementações. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 16/102

17 Padrão Bridge II Imagine um sistema gráfico de janelas que deve ser portável para diversas plataformas. Neste sistema são encontrados diversos tipos de janelas, como ícones, diálogos, etc. Estas janelas formam uma hierarquia que contém uma abstração das janelas (classe base). Normalmente, a portabilidade seria obtida criando-se especializações dos tipos de janelas para cada uma das plataformas suportadas. O problema com essa solução reside na complexidade da hierarquia gerada e na dependência de plataforma que existirá nos clientes do sistema. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 17/102

18 Padrão Bridge III Através do padrão Bridge, a hierarquia que define os tipos de janelas é separada da hierarquia que contém a implementação. Desta forma todas as operações de Janela são abstratas e suas implementações são escondidas dos clientes. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 18/102

19 Propósito Desacopla uma abstração de sua implementação de maneira que ambas possam variar independentemente. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 19/102

20 Motivação O que motiva a utilização do padrão Bridge é a necessidade de um driver, permitindo implementações específicas para tratar objetos em diferentes meios persistentes. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 20/102

21 Aplicabilidade Use o Padrão de Projeto Bridge quando: Quando for necessário evitar uma ligação permanente entre a interface e a implementação. Quando alterações na implementação não puderem afetar clientes. Quando implementações são compartilhadas entre objetos desconhecidos do cliente. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 21/102

22 Estrutura I Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 22/102

23 Estrutura II Participantes Abstração Define a interface de abstração. Mantém uma referência a um objeto do tipo Implementador. AbstracãoRefinada Estende a interface definida por Abstração. Implementador Define a interface para classes de implementação. Esta não tem a obrigação de corresponder exatamente à interface de abstração. De fato, as duas interfaces podem ser bastante diferentes. Tipicamente, a interface de implementação fornece apenas operações primitivas, cabendo à abstração a responsabilidade de definir operações de alto nível baseadas nestas primitivas. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 23/102

24 Estrutura III ImplementadorConcretoA e implementadorcomcretob Implementação concreta da interface definida por Implementador. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 24/102

25 Vantagens I Detalhes de implementação totalmente inacessíveis aos clientes. Eliminação de dependências em tempo de compilação das implementações. Implementação de abstração pode ser configurada em tempo de execução. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 25/102

26 Implementação I A implementação (adaptado [Software Design Patterns, 2005]) do Padrão Bridge ilustra a Ponte entre a classe abstrata Obeto- Negocios a ClienteDadosObjeto através de interface DadosObjeto. A interface DadosObjeto não é igual a ObjetoNegocios, já que não existe necessária dependência entre elas. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 26/102

27 Implementação II Este exemplo demonstra desacoplamento de uma abstração de ObjetoNegocio da implementação em DadosObjeto. As implementações de DadosObjeto podem evoluir dinamicamente sem propagar mudanças a nenhum dos objetos cliente, isso pode ser verificado na figura 2. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 27/102

28 Implementação III Na classe ClienteDadosObjeto encontra-se a implementação que a classe cliente espera através da DadosObjeto, neste caso, ela contém algumas pessoas cadastradas, ela pode adicionar novas pessoas em determinado grupo ou mostrá-las. Para interagir entre os cadastros utiliza-se o Padrão Iterator, que será detalhado nos próximos Padrões. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 28/102

29 Implementação IV Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 29/102

30 Padrão composite I Composite é um padrão de projeto de software utilizado para representar um objeto que é constituído pela composição de objetos similares a ele. Neste padrão, o objeto composto possui um conjunto de outros objetos que estão na mesma hierarquia de classes a que ele pertence. O padrão composite é normalmente utilizado para representar listas recorrentes - ou recursivas - de elementos. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 30/102

31 Padrão composite II Além disso, esta forma de representar elementos compostos em uma hierarquia de classes permite que os elementos contidos em um objeto composto sejam tratados como se fossem um único objeto. Desta forma, todos os métodos comuns às classes que representam objetos atômicos da hierarquia poderão ser aplicáveis também ao conjunto de objetos agrupados no objeto composto. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 31/102

32 Aplicação I Utilizado sempre que é necessário representar elementos que são compostos por outros elementos similares. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 32/102

33 Exemplo I Por exemplo, em interfaces gráficas um elemento gráfico pode ser constituído pela composição de vários outros elementos gráficos. Uma janela pode conter um ou mais ícones, uma caixa de texto e vários outros elementos gráficos - até mesmo outra janela. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 33/102

34 Exemplo II Considerando que uma determinada hierarquia de classes indicasse ElementoGráfico como a super-classe comum a todas classes que representassem os elementos gráficos atômicos, a classe Janela seria representada como uma classe que contém zero (0) ou mais elementos gráficos. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 34/102

35 Motivação I Aplicações gráficas como editores de desenho e sistemas de captura de esquema deixam os usuários construírem diagramas complexos a partir de Componentes simples. O usuário pode agrupar Componentes para formar Componentes maiores, que, por sua vez, podem ser agrupados para formar Componentes maiores ainda. O Padrão Composite descreve como usar composição recursiva, de modo que os clientes não tenham que fazer distinção entre componentes simples e composições. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 35/102

36 Motivação II Use o Padrão de Projeto Bridge quando: Quiser representar hierarquias parte-todo de objetos; Deseja que os clientes sejam capazes de ignorar as diferenças entre composição de objetos e objetos individuais. Clientes tratarão todos os objetos uniformemente na estrutura Composite. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 36/102

37 Estrutura I Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 37/102

38 Estrutura II Componente Declara a interface para objetos na composição; Implementa comportamento default para interface comum a todas as classes, como apropriado; Declara uma interface para acessar ou gerenciar seus Componentes filhos; Folha Representa objetos folhas na composição. Uma folha não tem filhos; Define comportamento para objetos primitivos na composição. Composição Define comportamento para Componentes que têm filhos; Armazena Componentes filhos; Implementa operações relacionadas com filhos na interface do Componente. Cliente Manipula objetos na composição através da interface Componente. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 38/102

39 Consequencias I Vantagens Define a consistência das hierarquias de classes de objetos primitivos e objetos composição. Clientes podem tratar estruturas compostas e objetos individuais uniformemente. Clientes normalmente não sabem (e não deveriam se preocupar) se eles estão tratando com uma folha ou uma composição; Torna mais fácil adicionar novos tipos de Componentes. Novas composições ou subclasses. Folhas trabalham automaticamente com estruturas existentes e código do cliente. Clientes não têm que ser mudados para novas classes de Componentes. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 39/102

40 Consequencias II Desvantagem Quando uma composição tem apenas alguns Componentes, você terá de usar uma checagem em tempo de execução para isto. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 40/102

41 Exemplo I Este exemplo (adaptado [Software Design Patterns, 2005]) do padrão Composite representa uma simulação de sua funcionalidade propriamente dita, ele foi retirado e adaptado do site. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 41/102

42 Exemplo II É apresentado através na classe Tela dois botões para mostrar todas as folhas e componentes e outro simplesmente para limpar. Também se utiliza o padrão para construir uma estrutura de árvore gráfica composta de nós primitivos (estes nós podem ser substituídos por linhas, círculos, etc) e nós compostos (grupos de elementos que formam elementos mais complexos). Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 42/102

43 Exemplo III Assim sendo verifica-se que a classe Folha representa os nós primitivos, ou seja, elas não possuem nenhuma classe folha. A classe Componente apenas possui os atributos e métodos comuns a todos seus filhos (ou folhas). Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 43/102

44 Exemplo IV Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 44/102

45 Padrão Decorator I Atribui responsabilidade adicionais a um objeto dinamicamente. O Decorator fornece uma alternativa flexível a subclasses para a extensão da funcionalidade. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 45/102

46 Propósito I Agregar responsabilidades adicionais a um objeto dinamicamente. Classes decoradoras oferecem uma alternativa flexível ao uso de herança para estender uma funcionalidade [Silva, 2005]. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 46/102

47 Motivação I Adicionar responsabilidades a um objeto, mas não à sua classe. Acontece, por exemplo, com criação de interfaces gráficas, quando se deseja acrescentar uma borda a um componente qualquer ou uma barra de rolagem a uma área de texto. Uma abordagem mais flexível é inserir o componente em outro objeto que adiciona a borda, um Decorator [Silva, 2005]. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 47/102

48 Aplicabilidade I Utilizado para adicionar responsabilidades a objetos individuais de forma dinâmica e transparente, isto é, sem afetar outros objetos, da mesma forma, quando se quer retirar responsabilidades. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 48/102

49 Aplicabilidade II Quando a utilização de heranças para a implementação do mesmo afetará a flexibilidade do sistema. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 49/102

50 Aplicabilidade III Um caso de aplicação do Decorator é quando existem muitas variações de um objeto. Imagine por exemplo uma classe Janela com uma subclasse JanelaComBorda. Se houver a necessidade também de janelas com rolagem, tem-se ainda JanelaComRolagem e JanelaComBordaERolagem [Faerman, 2005], além de outras possíveis combinações, já que poderia haver menus, botões ou barra de status. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 50/102

51 Aplicabilidade IV Usando o Decorator, tem-se um número muito menor de subclasses: Janela, DecoratorJanela, DecoratorJanelaBorda, DecoratorJanelaRolagem, DecoratorJanelaMenu, e assim por diante [Faerman, 2005]. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 51/102

52 Estrutura I Esse padrão providencia que cada objeto Decorator contenha outro objeto Decorator. Nesse aspecto, um decorator é como um pequeno composite cujos elementos possuem cada qual um filho único. Diferentemente do padrão Composite, cujo propósito é compor objetos agregados, o propósito do Decorator é compor comportamentos. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 52/102

53 Estrutura II Estruturalmente, o padrão Decorator dispõe as classes em um hierarquia e distribui operações ao longo dela. Cada classe dessa hierarquia tipicamente tem um construtor que precisa de outra instância de uma classe dela. As classes Decorator tipicamente implementam suas operações por meio da dependência do objeto decorador que recebem em seus construtores [Metsker, 2004]. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 53/102

54 Estrutura III Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 54/102

55 Estrutura IV Participantes Componente define a interface para objetos que podem ter responsabilidades acrescentadas a eles dinamicamente. ComponenteConcreto define um objeto para o qual responsabilidades adicionais podem ser atribuídas Decorator mantém uma referência para um objeto Componente. Define uma interface que segue a interface de Componente. DecoratorConcretoA e DecoratorConcretoB acrescenta responsabilidades ao componente Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 55/102

56 Vantagens I Fornece uma flexibilidade maior do que a herança estática. Evita a necessidade de colocar classes sobrecarregadas de recursos em uma posição mais alta da hierarquia. Simplifica a codificação permitindo que você desenvolva uma série de classes com funcionalidades específicas, em vez de codificar todo o comportamento no objeto. Aprimora a extensibilidade do objeto, pois as alterações são feitas codificando novas classes. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 56/102

57 Exemplo de implementação I Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 57/102

58 Exemplo de implementação II O exemplo ilustrado na Figura, visa gerar janelas com características que podem variar de uma janela para outra. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 58/102

59 Exemplo de implementação III Por exemplo, o cliente pode decidir entre construir uma janela com barra de menus ou não. Desta forma consegue-se aumentar o número de possibilidades de janelas diferentes apresentadas com um pequeno número de classes. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 59/102

60 Exemplo de implementação IV Neste exemplo, a interface Janela recebe o papel de ser o Componente da estrutura apresentada anteriormente. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 60/102

61 Exemplo de implementação V Por sua vez, JanelaComum interpreta o ComponenteConcreto, ou seja, é ele que receberá as modificações no decorrer da execução da aplicação. Como o próprio nome diz, o Decorator assume a finalidade do Decorator da estrutura padrão. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 61/102

62 Exemplo de implementação VI JanelaMenuBar, JanelaBorda, JanelaBarraStatus e JanelaBarraFerramenta herdam de Decorator, ou seja, são os n decoradores concretos. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 62/102

63 Padrão Façade I Em padrões de projeto de software, um façade (fachada em francês) é um objeto que disponibiliza uma interface simplificada para uma das funcionalidades de uma API, por exemplo. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 63/102

64 Padrão Façade II Um façade pode: tornar uma biblioteca de software mais fácil de entender e usar; tornar o código que utiliza esta biblioteca mais fácil de entender; reduzir as dependências em relação às características internas de uma biblioteca, trazendo flexibilidade no desenvolvimento do sistema; envolver uma interface mal desenhada, com uma interface melhor definida. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 64/102

65 Padrão Façade III Os façades são muito comuns em projeto orientados a objeto. Por exemplo, a biblioteca padrão da linguagem Java contém dúzias de classes para processamento do arquivo fonte de um caractere, geração do seu desenho geométrico e dos pixels que formam este caractere. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 65/102

66 Padrão Façade IV Entretanto, a maioria dos programadores Java não se preocupam com esses detalhes, pois a biblioteca contém as classes do tipo façade (Font e Graphics) que oferecem métodos simples para as operações relacionadas com fontes. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 66/102

67 Propósito I Oferecer uma interface única para um conjunto de interfaces de um subsistema. Definir uma interface de nível mais elevado que torna o subsistema mais fácil de usar [Silva, 2005]. Reduzir a complexidade do relacionamento entre uma classe relativa ao cliente e as demais classes utilitárias [Junior, 2004]. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 67/102

68 Motivação I Uma grande vantagem da programação orientada a objetos é que ela ajuda a evitar que as aplicações se tornem programas monolíticos, com pedaços incorrigivelmente entrelaçados. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 68/102

69 Motivação II No entanto, a aplicabilidade variada das classes em um subsistema orientado a objetos pode oferecer uma variedade expressiva de opções [Metsker, 2004]. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 69/102

70 Motivação III Existem circunstâncias onde é necessário utilizar diversas classes diferentes para que uma tarefa possa ser completada, caracterizando uma situação onde uma classe cliente necessita utilizar objetos de um conjunto específico de classes utilitárias que, em conjunto, compõem um subsistema particular ou que representam o acesso a diversos subsistemas distintos. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 70/102

71 Motivação IV Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 71/102

72 Aplicabilidade I Criação de interfaces mais simples para um ou mais subsistemas complexos. Redução de dependência entre o cliente e as classes existentes nos subsistemas, ocasionando a redução da coesão do sistema Criação de sistemas em camadas. Este padrão provê o ponto de entrada para cada camada (nível) do subsistema. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 72/102

73 Estrutura I A estrutura deste padrão é bastante simples. A classe que constituirá o Facade deverá oferecer um conjunto de operações que sejam suficientes para que seus clientes possam utilizar adequadamente o subsistema, embora sem conhecer as interfaces de seus componentes. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 73/102

74 Estrutura II O Facade é um padrão que pode apresentar infinidades de formas de representá-lo. O que importa para este padrão é que o Cliente apenas acesse objetos da classe Facade, esperando algum resultado vindo dela. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 74/102

75 Estrutura III A classe Facade é que terá a responsabilidade de entrar em contato com as diversas instâncias dentro deste sistema, efetuar possíveis cálculos vindos de classes abaixo dela e retornar as respostas que o cliente pediu. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 75/102

76 Estrutura IV Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 76/102

77 Estrutura V Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 77/102

78 Vantagens I Protege os clientes da complexidade dos componentes do subsistema; Promove acoplamento fraco entre o subsistema e seus clientes; Reduz dependências de compilação, possivelmente complexas ou circulares; Facilita a portabilidade do sistema [Junior, 2004]; Reduz a união entre subsistemas desde que cada subsistema utilize seu próprio padrão Facade e outras partes do sistema utilizem o padrão Facade para comunicar-se com o subsistema [Allen e Bambara, 2003]; Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 78/102

79 Vantagens II Não evita que aplicações possam acessar diretamente as subclasses do sistema, se assim o desejarem [Junior, 2004]; Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 79/102

80 Implementação I Implementar um Facade demanda definir um conjunto de operações reduzidas que permita ocultar a complexidade inerente à utilização de várias classes de um subsistema (adaptado [Software Design Patterns, 2005]). Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 80/102

81 Implementação II Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 81/102

82 Implementação III Neste exemplo, o cliente necessita consultar várias entidades a fim de saber se têm condições de receber um empréstimo. Para isso, normalmente, o cliente teria que conhecer toda a complexidade envolvida com as regras de concessão de empréstimos e aprende-las, no entanto, nada melhor do que deixar isso a cargo de quem já está no sistema, no caso o Facade, que irá se preocupar em colher dados das diferentes classes que podem decidir sobre a possibilidade do empréstimo e retornará esta informação pronta para o cliente. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 82/102

83 Implementação IV FacadeApp é o cliente que busca informações que podem vir de vários de subsistemas, Facade é a classe responsável por acessar os subsistemas e trazer respostas de forma transparente a quem esteja acessando o Facade. Banco, Emprestimo, Crédito e Consumidor são classes pertencentes aos subsistemas. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 83/102

84 O padrão Flyweight I Flyweight é um padrão de projeto de software apropriado quando vários objetos devem ser manipulados, e esses não suportam dados adicionais. No padrão flyweight não existem ponteiros para os métodos do dado, pois isto consome muita memória. Em contrapartida são chamadas sub-rotinas diretamente para acessar o dado. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 84/102

85 Propósito I Utilizar compartilhamento para suportar eficientemente um grande número de objetos com estado reduzido Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 85/102

86 Motivação I Em um editor de textos certas vantagens são obtidas as representar cada caractere como objeto Entretanto, seria necessário a instanciação de um número consideravelmente alto de objetos, com consumo excessivo de memória e overhead de execução Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 86/102

87 Motivação II Um flyweight é um objeto compartilhado que pode ser utilizado simultaneamente em múltiplos contextos Atua como um objeto independente em cada contexto, de modo que os clientes não são cientes do compartilhamento O conceito chave é a distinção entre estado intrínseco e estado extrínseco: O estado intrínseco é armazenado no flyweight e consiste de informações independentes do contexto e, portanto, compartilháveis O estado extrínseco depende de e varia com o contexto e, portanto, não pode ser compartilhado. Os clientes são responsáveis por passar o estado extrínseco para o flyweight, quando necessário Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 87/102

88 Problema exemplo I Desenvolver um editor de texto onde cada caractere é representado por um objeto: Granularidade muito pequena; Não haverá recursos (memória) suficiente para textos grandes. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 88/102

89 Solução I Monta-se um pool de objetos compartilhados; Cada caractere tem um objeto. Com 100 objetos (tabela ASCII) poderíamos montar textos de qualquer tamanho. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 89/102

90 Estrutura I Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 90/102

91 Usar este padrão quando? I Todas as condições forem verdadeiras: A aplicação usa um grande número de objetos; O custo de armazenamento é alto por causa desta quantidade; O estado dos objetos pode ser externalizado; Objetos podem ser compartilhados assim que seu estado é externalizado; A aplicação não depende da identidade. Prof. Fabrízzio Alphonsus A. M. N. Soares Padrões de Projeto - Estruturais 91/102

Flávio Pernes de Medeiros

Flávio Pernes de Medeiros Flávio Pernes de Medeiros METODOLOGIA DA PESQUISA II Rio de Janeiro Flávio Pernes de Medeiros Março de 2011 Agradecimentos A minha família em especial minha esposa Newli Maura e filhos Bruno e Nicole.

Leia mais

J930. Padrões. Projeto. Introdução. argonavis.com.br. Helder da Rocha (helder@acm.org)

J930. Padrões. Projeto. Introdução. argonavis.com.br. Helder da Rocha (helder@acm.org) Padrões de J930 Projeto Introdução Helder da Rocha (helder@acm.org) argonavis.com.br O que é um padrão? Maneira testada ou documentada de alcançar um objetivo qualquer Padrões são comuns em várias áreas

Leia mais

1Introdução Helder da Rocha (helder@acm.org)

1Introdução Helder da Rocha (helder@acm.org) J930 Padrões Projeto de 1Introdução Helder da Rocha (helder@acm.org) argonavis.com.br O que é um padrão? Maneira testada ou documentada de alcançar um objetivo qualquer Padrões são comuns em várias áreas

Leia mais

Decorator Pattern. SISMO - Sistemas e Mobilidade http://www.sismo.deinf.ufma.br. Junho de 2008. Departamento de Informática / UFMA

Decorator Pattern. SISMO - Sistemas e Mobilidade http://www.sismo.deinf.ufma.br. Junho de 2008. Departamento de Informática / UFMA Decorator Pattern SISMO - Sistemas e Mobilidade http://www.sismo.deinf.ufma.br Departamento de Informática / UFMA Junho de 2008 Revisando os conceitos Herança é poderosa mas não é flexível Comportamento

Leia mais

Padrões GoF. Leonardo Gresta Paulino Murta leomurta@ic.uff.br

Padrões GoF. Leonardo Gresta Paulino Murta leomurta@ic.uff.br Padrões GoF Leonardo Gresta Paulino Murta leomurta@ic.uff.br Agenda Introdução Padrões de Criação Padrões de Estrutura Padrões de comportamento Leonardo Murta Padrões GoF 2 Introdução Os padrões GoF (Gamma

Leia mais

Programação Avançada. Padrões de Projeto de Software. Fonte: Oswaldo B. Peres e K19 Treinamentos

Programação Avançada. Padrões de Projeto de Software. Fonte: Oswaldo B. Peres e K19 Treinamentos Programação Avançada Padrões de Projeto de Software 1 Fonte: Oswaldo B. Peres e K19 Treinamentos Introdução Projetar software OO reusável e de boa qualidade é uma tarefa difícil; Para realizar essa tarefa

Leia mais

Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI PCO203 Tópicos Especiais em Programação

Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI PCO203 Tópicos Especiais em Programação UNIFEI Disciplina Professor Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI PCO203 Tópicos Especiais em Programação Enzo Seraphim 1 Padrões de Projeto

Leia mais

Programação Orientada a Objetos. Padrões de Criação

Programação Orientada a Objetos. Padrões de Criação Programação Orientada a Objetos Padrões de Criação Cristiano Lehrer, M.Sc. Objetivos Apresentar cada um dos 23 padrões clássicos descrevendo: O problema que solucionam. A solução. Diagramas UML (Unified

Leia mais

Padrões clássicos ou padrões GoF O livro "Design Patterns (1994) de Erich Gamma, John Vlissides, Ralph Jonhson e Richard Helm, descreve 23 padrões de

Padrões clássicos ou padrões GoF O livro Design Patterns (1994) de Erich Gamma, John Vlissides, Ralph Jonhson e Richard Helm, descreve 23 padrões de Padrões de Projeto Disciplina: Engenharia de Software - 2009.1 Professora: Rossana Maria de Castro Andrade Assistente da disciplina: Ricardo Fernandes de Almeida 1 O que é um Padrão? Um padrão descreve

Leia mais

Processos (Threads,Virtualização e Migração de Código)

Processos (Threads,Virtualização e Migração de Código) Processos (Threads,Virtualização e Migração de Código) Roteiro Processos Threads Virtualização Migração de Código O que é um processo?! Processos são programas em execução. Processo Processo Processo tem

Leia mais

Padrões de Projeto. Prof. Jefersson Alex dos Santos (jefersson@dcc.ufmg.br) http://www.dcc.ufmg.br/~jefersson

Padrões de Projeto. Prof. Jefersson Alex dos Santos (jefersson@dcc.ufmg.br) http://www.dcc.ufmg.br/~jefersson Padrões de Projeto Prof. Jefersson Alex dos Santos (jefersson@dcc.ufmg.br) http://www.dcc.ufmg.br/~jefersson Apresentação Conceitos Definição Ponto de vista prático História Padrões de Projeto Conhecidos

Leia mais

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

Conteúdo. Disciplina: INF 02810 Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo Universidade Federal do Espírito Santo Centro Tecnológico Departamento de Informática Disciplina: INF 02810 Prof.: (monalessa@inf.ufes.br) Conteúdo 1. Introdução 2. Processo de Software 3. Gerência de

Leia mais

PADRÕES DE SOFTWARE. Jerffeson Teixeira de Souza, Ph.D. Tarciane de Castro Andrade. Grupo de Padrões de Software da UECE (GPS.

PADRÕES DE SOFTWARE. Jerffeson Teixeira de Souza, Ph.D. Tarciane de Castro Andrade. Grupo de Padrões de Software da UECE (GPS. PADRÕES DE SOFTWARE 1 Jerffeson Teixeira de Souza, Ph.D. Tarciane de Castro Andrade Grupo de Padrões de Software da UECE (GPS.UECE) Julho-2009 CONTEÚDO Introdução aos Padrões de Software O quê são padrões?

Leia mais

Pasteur Ottoni de Miranda Junior. Alguns Padrões de Projeto Gamma

Pasteur Ottoni de Miranda Junior. Alguns Padrões de Projeto Gamma Pasteur Ottoni de Miranda Junior Alguns Padrões de Projeto Gamma Padrões Gamma de Projeto(ou Gang-of-Four, gof) Os padrões gof foram publicados por Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides

Leia mais

Profa. Thienne Johnson

Profa. Thienne Johnson Profa. Thienne Johnson E. Gamma and R. Helm and R. Johnson and J. Vlissides. Design Patterns - Elements of Reusable Object-Oriented Software. Addison- Wesley, 1995. Conhecido como GoF (Gang of Four) Versão

Leia mais

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP 1) Introdução Programação Orientada a Objetos é um paradigma de programação bastante antigo. Entretanto somente nos últimos anos foi aceito realmente

Leia mais

Diagrama de Classes. Um diagrama de classes descreve a visão estática do sistema em termos de classes e relacionamentos entre as classes.

Diagrama de Classes. Um diagrama de classes descreve a visão estática do sistema em termos de classes e relacionamentos entre as classes. 1 Diagrama de Classes Um diagrama de classes descreve a visão estática do sistema em termos de classes e relacionamentos entre as classes. Um dos objetivos do diagrama de classes é definir a base para

Leia mais

Curso - Padrões de Projeto Módulo 1: Introdução

Curso - Padrões de Projeto Módulo 1: Introdução Curso - Padrões de Projeto Módulo 1: Introdução Vítor E. Silva Souza vitorsouza@gmail.com http://www.javablogs.com.br/page/engenho http://esjug.dev.java.net Sobre o Instrutor Formação: Java: Graduação

Leia mais

Padrões de projeto 1

Padrões de projeto 1 Padrões de projeto 1 Design Orientado Objeto Encapsulamento Herança Polimorfismo Design Patterns 2 Responsabilidades Booch e Rumbaugh Responsabilidade é um contrato ou obrigação de um tipo ou classe. Dois

Leia mais

Categorias de Padrões

Categorias de Padrões Categorias de Padrões Padrão Arquitetural ou Estilo Arquitetural Padrão de Design (Design Patterns) Idiomas Categorias de Padrões ESTILOS ARQUITETURAIS PADRÕES DE DESIGN IDIOMAS Padrões de Design Os subsistemas

Leia mais

Padrão Básico de Projeto: Herança versus Composição

Padrão Básico de Projeto: Herança versus Composição Padrão Básico de Projeto: Herança versus Composição Composição e Herança Composição e herança são dois mecanismos para reutilizar funcionalidade Alguns anos atrás (e na cabeça de alguns programadores ainda!),

Leia mais

Orientação a Objetos

Orientação a Objetos Orientação a Objetos Daniel Destro do Carmo Softech Network Informática daniel@danieldestro.com.br Histórico A orientação a objetos (OO) foi concebida na década de 70. Origem na linguagem SIMULA-67 (década

Leia mais

Programação com Objectos

Programação com Objectos Programação com Objectos PADRÕES DE DESENHO Classificaçã Objectivo Criação Estrutura Comportamento Introdução Alguns Padrões de Desenho Classe Factory Method Adapter Interpreter Template Method O que é

Leia mais

Padrões de Projeto de Software Orientado a Objetos

Padrões de Projeto de Software Orientado a Objetos Padrões de Projeto de Software Orientado a Objetos Ricardo Argenton Ramos [Baseado nos slides do professor Fabio Kon - USP] 1 Padrões de Projeto de Software OO Também conhecidos como Padrões de Desenho

Leia mais

Design Patterns. Viviane Torres da Silva viviane.silva@ic.uff.br. http://www.ic.uff.br/~viviane.silva/2012.1/es1

Design Patterns. Viviane Torres da Silva viviane.silva@ic.uff.br. http://www.ic.uff.br/~viviane.silva/2012.1/es1 Design Patterns Viviane Torres da Silva viviane.silva@ic.uff.br http://www.ic.uff.br/~viviane.silva/2012.1/es1 Sumário Reuso de Software Introdução Benefícios e Desvantagens Visão do Reuso Padrões de Projeto

Leia mais

Especificação do 3º Trabalho

Especificação do 3º Trabalho Especificação do 3º Trabalho I. Introdução O objetivo deste trabalho é abordar a prática da programação orientada a objetos usando a linguagem Java envolvendo os conceitos de classe, objeto, associação,

Leia mais

ESTUDO COMPARATIVO DE BIBLIOTECAS GRÁFICAS I TEGRADAS COM OPE GL

ESTUDO COMPARATIVO DE BIBLIOTECAS GRÁFICAS I TEGRADAS COM OPE GL ESTUDO COMPARATIVO DE BIBLIOTECAS GRÁFICAS I TEGRADAS COM OPE GL Francisco Tiago Avelar, Vitor Conrado F. Gomes, Cesar Tadeu Pozzer Universidade Federal de Santa Maria UFSM Curso de Ciência da Computação

Leia mais

Banco de Dados Aula 1 Introdução a Banco de Dados Introdução Sistema Gerenciador de Banco de Dados

Banco de Dados Aula 1 Introdução a Banco de Dados Introdução Sistema Gerenciador de Banco de Dados Banco de Dados Aula 1 Introdução a Banco de Dados Introdução Um Sistema Gerenciador de Banco de Dados (SGBD) é constituído por um conjunto de dados associados a um conjunto de programas para acesso a esses

Leia mais

Especialização em web com interfaces ricas

Especialização em web com interfaces ricas Especialização em web com interfaces ricas Padrões de Projeto - Comportamentais Prof. Fabrízzio Alphonsus A. M. N. Soares fabrizzio@inf.ufg.br professor.fabrizzio@gmail.com Instituto de Informática Universidade

Leia mais

Reuso com Herança a e Composiçã

Reuso com Herança a e Composiçã Java 2 Standard Edition Reuso com Herança a e Composiçã ção Helder da Rocha www.argonavis.com.br 1 Como aumentar as chances de reuso Separar as partes que podem mudar das partes que não mudam. Exemplo:

Leia mais

5 Framework para coordenação e mediação de Web Services para ambientes de aprendizado à distância

5 Framework para coordenação e mediação de Web Services para ambientes de aprendizado à distância 5 Framework para coordenação e mediação de Web Services para ambientes de aprendizado à distância O capítulo anterior apresentou uma discussão sobre a inclusão dos chamados learning services no processo

Leia mais

Bibliografia. Desenvolvimento Orientado a Objetos. Introdução. Bibliografia. O que você vê?

Bibliografia. Desenvolvimento Orientado a Objetos. Introdução. Bibliografia. O que você vê? Bibliografia Desenvolvimento Orientado a Objetos Prof.: Edson dos Santos Cordeiro LARMAN, Graig. Utilizando UML e padrões. Porto Alegre: Bookman, 2000. STAA, Arndt von. Programação modular. Rio de Janeiro:

Leia mais

Curso - Padrões de Projeto Módulo 2: Padrões de Criação

Curso - Padrões de Projeto Módulo 2: Padrões de Criação Curso - Padrões de Projeto Módulo 2: Padrões de Criação Vítor E. Silva Souza vitorsouza@gmail.com http://www.javablogs.com.br/page/engenho http://esjug.dev.java.net Sobre o Instrutor Formação: Java: Graduação

Leia mais

Design Pattern Implementation in Java and AspectJ

Design Pattern Implementation in Java and AspectJ Design Pattern Implementation in Java and AspectJ Jan Hannemann Gregor Kiczales In Proceedings of 2002 ACM SIGPLAN conference on OOPSLA. NY, USA. Introdução 2 Introdução 3 Introdução 4 Introdução 5 Introdução

Leia mais

PADRÕES DE PROJETO FAÇADE, FLYWEIGHT E VISITOR

PADRÕES DE PROJETO FAÇADE, FLYWEIGHT E VISITOR FACULDADE DE CIÊNCIAS APLICADAS SAGRADO CORAÇÃO DIRETORIA DE ENSINO SUPERIOR COORDENAÇÃO DO CURSO DE SISTEMAS DE INFORMAÇÃO GUSTAVO ANDRÉ DE FREITAS RILIANE ALPOIM PARIS RODRIGO SILVA DE SOUZA PADRÕES

Leia mais

Sistemas distribuídos:comunicação

Sistemas distribuídos:comunicação M. G. Santos marcela@estacio.edu.br Faculdade Câmara Cascudo - Estácio de Sá 16 de abril de 2010 Formas de comunicação Produtor-consumidor: comunicação uni-direccional, com o produtor entregando ao consumidor.

Leia mais

Programação Orientada a Objetos Padrões de Projeto (design patterns) Fernando Vanini IC - UNICAMP

Programação Orientada a Objetos Padrões de Projeto (design patterns) Fernando Vanini IC - UNICAMP Programação Orientada a Objetos Padrões de Projeto (design patterns) Fernando Vanini IC - UNICAMP Padrões de Projeto (design patterns) Apresentação do conceito de design pattern Classificação dos design

Leia mais

Programa do Módulo 2. Fundações do Modelo Objeto

Programa do Módulo 2. Fundações do Modelo Objeto 2.1 Programa do Módulo 2 Orientação a Objetos Conceitos Básicos Análise Orientada a Objetos (UML) Processo Unificado (RUP) Fundações do Modelo Objeto 2.2 Programação Orientada a Objetos: é um método de

Leia mais

Capítulo 11. Conceitos de Orientação a Objetos. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Capítulo 11. Conceitos de Orientação a Objetos. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Capítulo 11 Conceitos de Orientação a Objetos Objetivos do Capítulo Introduzir os conceitos fundamentais da Programação Orientada a Objetos. Apresentar o significado dos objetos e das classes no contexto

Leia mais

Padrões Arquiteturais e de Integração - Parte 1

Padrões Arquiteturais e de Integração - Parte 1 1 / 58 - Parte 1 Erick Nilsen Pereira de Souza T017 - Arquitetura e Design de Aplicações Análise e Desenvolvimento de Sistemas Universidade de Fortaleza - UNIFOR 11 de fevereiro de 2015 2 / 58 Agenda Tópicos

Leia mais

11/3/2009. Software. Sistemas de Informação. Software. Software. A Construção de um programa de computador. A Construção de um programa de computador

11/3/2009. Software. Sistemas de Informação. Software. Software. A Construção de um programa de computador. A Construção de um programa de computador Sistemas de Informação Prof. Anderson D. Moura Um programa de computador é composto por uma seqüência de instruções, que é interpretada e executada por um processador ou por uma máquina virtual. Em um

Leia mais

Modelos de Sistema. 2007 by Pearson Education. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 8 Slide 1.

Modelos de Sistema. 2007 by Pearson Education. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 8 Slide 1. Modelos de Sistema Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 8 Slide 1 Objetivos Explicar por que o contexto de um sistema deve ser modelado como parte do processo de RE Descrever

Leia mais

Algumas propriedades dos objetos:

Algumas propriedades dos objetos: Orientação a Objetos Vivemos num mundo de objetos. Esses objetos existem na natureza, nas entidades feitas pelo homem, nos negócios e nos produtos que usamos. Eles podem ser categorizados, descritos, organizados,

Leia mais

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

Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto Desenvolvimento de Sistemas Orientados a Objetos com UML UP/RUP: Projeto Engenharia de Software I Informática 2009 Profa. Dra. Itana Gimenes RUP: Artefatos de projeto Modelo de Projeto: Use-Case Realization-projeto

Leia mais

Estilos Arquiteturais. Estilos Arquiteturais. Exemplos de Estilos Arquiteturais. Estilo: Pipe e Filtros

Estilos Arquiteturais. Estilos Arquiteturais. Exemplos de Estilos Arquiteturais. Estilo: Pipe e Filtros Em geral sistemas seguem um estilo, ou padrão, de organização estrutural Os estilos diferem: nos tipos de componentes que usa na maneira como os componentes interagem com os outros (regras de interação)

Leia mais

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

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio 32 3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio Este capítulo apresenta o framework orientado a aspectos para monitoramento e análise de processos de negócio

Leia mais

Testes com Design Patterns

Testes com Design Patterns Helder da Rocha (helder.darocha@gmail.com) 31 de março de 2005 71. Que padrão de design pode ser usado para permitir que uma implementação específica e uma hierarquia de abstrações possa variar independentemente?

Leia mais

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Especialização em Desenvolvimento de Aplicações Web com Interfaces Ricas EJB 3.0 Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 10 Persistência de Dados

Leia mais

Universidade Federal Rural de Pernambuco. Bacharelado em Sistemas de Informação. Disciplina: Análise e Projeto de Sistemas de Informação

Universidade Federal Rural de Pernambuco. Bacharelado em Sistemas de Informação. Disciplina: Análise e Projeto de Sistemas de Informação Universidade Federal Rural de Pernambuco Bacharelado em Sistemas de Informação Disciplina: Análise e Projeto de Sistemas de Informação Docente: Rodrigo Aluna: Thays Melo de Moraes Diagramas do Projeto

Leia mais

Introdução. à Linguagem JAVA. Prof. Dr. Jesus, Edison O. Instituto de Matemática e Computação. Laboratório de Visão Computacional

Introdução. à Linguagem JAVA. Prof. Dr. Jesus, Edison O. Instituto de Matemática e Computação. Laboratório de Visão Computacional Introdução à Linguagem JAVA Prof. Dr. Jesus, Edison O. Instituto de Matemática e Computação Laboratório de Visão Computacional Vantagens do Java Independência de plataforma; Sintaxe semelhante às linguagens

Leia mais

ENGENHARIA DE SOFTWARE Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br

ENGENHARIA DE SOFTWARE Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br - MÓDULO 3 - MODELAGEM DE SISTEMAS ORIENTADA A OBJETOS COM UML 1. INTRODUÇÃO A partir de 1980, diversos métodos de desenvolvimento de sistemas surgiram para apoiar o paradigma orientado a objetos com uma

Leia mais

Padrões de Projeto Implementados em Infraestrturas de Componentes

Padrões de Projeto Implementados em Infraestrturas de Componentes Padrões de Projeto Implementados em Infraestrturas de Componentes Paulo Pires paulopires@nce.ufrj.br http//genesis.nce.ufrj.br/dataware/hp/pires 1 distribuídas baseadas em componentes Comunicação transparente,

Leia mais

3. PARADIGMA ORIENTADO A OBJETOS

3. PARADIGMA ORIENTADO A OBJETOS Paradigmas de Linguagens I 1 3. PARADIGMA ORIENTADO A OBJETOS Este paradigma é o que mais reflete os problemas atuais. Linguagens orientada a objetos (OO) são projetadas para implementar diretamente a

Leia mais

Guia de Introdução ao Windows SharePoint Services

Guia de Introdução ao Windows SharePoint Services Guia de Introdução ao Windows SharePoint Services - Windows SharePoint Services... Page 1 of 11 Windows SharePoint Services Guia de Introdução ao Windows SharePoint Services Ocultar tudo O Microsoft Windows

Leia mais

Técnicas de Programação Avançada TCC-00175 Profs.: Anselmo Montenegro www.ic.uff.br/~anselmo

Técnicas de Programação Avançada TCC-00175 Profs.: Anselmo Montenegro www.ic.uff.br/~anselmo Técnicas de Programação Avançada TCC-00175 Profs.: Anselmo Montenegro www.ic.uff.br/~anselmo Conteúdo:Introdução a Frameworks para Aplicações Baseado em Building Application Frameworks Mohamed E. Fayad

Leia mais

BANCO DE DADOS. Introdução a Banco de Dados. Conceitos BásicosB. Engenharia da Computação UNIVASF. Aula 1. Breve Histórico

BANCO DE DADOS. Introdução a Banco de Dados. Conceitos BásicosB. Engenharia da Computação UNIVASF. Aula 1. Breve Histórico Banco de Dados // 1 Banco de Dados // 2 Conceitos BásicosB Engenharia da Computação UNIVASF BANCO DE DADOS Aula 1 Introdução a Banco de Dados Campo representação informatizada de um dado real / menor unidade

Leia mais

3 OOHDM e SHDM 3.1. OOHDM

3 OOHDM e SHDM 3.1. OOHDM 32 3 OOHDM e SHDM Com a disseminação em massa, desde a década de 80, de ambientes hipertexto e hipermídia, principalmente a Web, foi identificada a necessidade de elaborar métodos que estruturassem de

Leia mais

SUMÁRIO CAPÍTULO 1 INTRODUÇÃO AO JAVA... 1

SUMÁRIO CAPÍTULO 1 INTRODUÇÃO AO JAVA... 1 SUMÁRIO CAPÍTULO 1 INTRODUÇÃO AO JAVA... 1 A Origem... 2 O Caminho Para a Aprendizagem... 4 Java Como Plataforma... 6 Finalidade... 9 Características... 11 Perspectivas... 13 Exercícios... 14 CAPÍTULO

Leia mais

TECNÓLOGO EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PROGRAMAÇÃO DE COMPUTADORES I Aula 01: Conceitos Iniciais / Sistema Operacional

TECNÓLOGO EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PROGRAMAÇÃO DE COMPUTADORES I Aula 01: Conceitos Iniciais / Sistema Operacional TECNÓLOGO EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PROGRAMAÇÃO DE COMPUTADORES I Aula 01: Conceitos Iniciais / Sistema Operacional O conteúdo deste documento tem por objetivo apresentar uma visão geral

Leia mais

Aprenda as melhores práticas para construir um completo sistema de teste automatizado

Aprenda as melhores práticas para construir um completo sistema de teste automatizado Aprenda as melhores práticas para construir um completo sistema de teste automatizado Renan Azevedo Engenheiro de Produto de Teste e Medição -Américas Aprenda as melhores práticas para construir um completo

Leia mais

DESIGN PATTERNS CURSO DE ESPECIALIZAÇÃO EM TECNOLOGIA JAVA. Prof. Cesar Augusto Tacla. http://www.dainf.ct.utfpr.edu.br/~tacla UTFPR/Campus Curitiba

DESIGN PATTERNS CURSO DE ESPECIALIZAÇÃO EM TECNOLOGIA JAVA. Prof. Cesar Augusto Tacla. http://www.dainf.ct.utfpr.edu.br/~tacla UTFPR/Campus Curitiba PR UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ CURSO DE ESPECIALIZAÇÃO EM TECNOLOGIA JAVA DESIGN PATTERNS PARTE 5: PADRÕES FAÇADE E STRATEGY Prof. Cesar Augusto Tacla http://www.dainf.ct.utfpr.edu.br/~tacla

Leia mais

Conceitos de Linguagens de Programação

Conceitos de Linguagens de Programação Conceitos de Linguagens de Programação Aula 07 Nomes, Vinculações, Escopos e Tipos de Dados Edirlei Soares de Lima Introdução Linguagens de programação imperativas são abstrações

Leia mais

4.2. UML Diagramas de classes

4.2. UML Diagramas de classes Engenharia de Software 4.2. UML Diagramas de classes Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt Um diagrama de classes serve para modelar o vocabulário de um sistema Construído e refinado ao longo

Leia mais

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Curso: Sistemas de Informação Arquitetura de Software Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 3 Introdução à Arquitetura de Software (continuação)

Leia mais

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

Leia mais

Arquitetura de Computadores. Introdução aos Sistemas Operacionais

Arquitetura de Computadores. Introdução aos Sistemas Operacionais Arquitetura de Computadores Introdução aos Sistemas Operacionais O que é um Sistema Operacional? Programa que atua como um intermediário entre um usuário do computador ou um programa e o hardware. Os 4

Leia mais

MedEl: Uma solução de E-Learning utilizando tecnologia Microsoft ASP.NET

MedEl: Uma solução de E-Learning utilizando tecnologia Microsoft ASP.NET MedEl: Uma solução de E-Learning utilizando tecnologia Microsoft ASP.NET Átila Correia Cunha 1, 2, Glaucon Henrique Mauricio Maia 1, 2, Waner Ferreira Tavares 1, 2, Jorge Bergson¹, Rui Gomes Patrício 3

Leia mais

EMENTA DO CURSO. Tópicos:

EMENTA DO CURSO. Tópicos: EMENTA DO CURSO O Curso Preparatório para a Certificação Oracle Certified Professional, Java SE 6 Programmer (Java Básico) será dividido em 2 módulos e deverá ter os seguintes objetivos e conter os seguintes

Leia mais

RUI ROSSI DOS SANTOS PROGRAMAÇÃO DE COMPUTADORES EM. Java

RUI ROSSI DOS SANTOS PROGRAMAÇÃO DE COMPUTADORES EM. Java RUI ROSSI DOS SANTOS PROGRAMAÇÃO DE COMPUTADORES EM Java 2ª Edição n Sumário VII Sumário CAPÍTULO 1 Introdução ao Java... 1 A Origem... 2 O Caminho Para a Aprendizagem... 4 Java como Plataforma... 6 Finalidade...

Leia mais

2 Conceitos relativos a Web services e sua composição

2 Conceitos relativos a Web services e sua composição 15 2 Conceitos relativos a Web services e sua composição A necessidade de flexibilidade na arquitetura das aplicações levou ao modelo orientado a objetos, onde os processos de negócios podem ser representados

Leia mais

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Curso: Sistemas de Informação Arquitetura de Software Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 4 Estilos Arquitetônicos Estilos Arquiteturais Dataflow

Leia mais

Eduardo Bezerra. Editora Campus/Elsevier

Eduardo Bezerra. Editora Campus/Elsevier Princípios de Análise e Projeto de Sistemas com UML 2ª edição Eduardo Bezerra Editora Campus/Elsevier Capítulo 8 Modelagem de classes de projeto A perfeição (no projeto) é alcançada, não quando não há

Leia mais

Modelagem OO com UML. Vítor E. Silva Souza (vitorsouza@inf.ufes.br) http://www.inf.ufes.br/ ~ vitorsouza

Modelagem OO com UML. Vítor E. Silva Souza (vitorsouza@inf.ufes.br) http://www.inf.ufes.br/ ~ vitorsouza Modelagem OO com UML Vítor E. Silva Souza (vitorsouza@inf.ufes.br) http://www.inf.ufes.br/ ~ vitorsouza Departamento de Informática Centro Tecnológico Universidade Federal do Espírito Santo Modelos Maneira

Leia mais

Aspectos técnicos do desenvolvimento baseado em componentes

Aspectos técnicos do desenvolvimento baseado em componentes Aspectos técnicos do desenvolvimento baseado em componentes Um novo processo de desenvolvimento O uso de componentes traz mudanças no processo de desenvolvimento Além de desenvolver um produto, queremos

Leia mais

Tecnologias Web. Padrões de Projeto - Camada de Apresentação

Tecnologias Web. Padrões de Projeto - Camada de Apresentação Tecnologias Web Padrões de Projeto - Camada de Apresentação Cristiano Lehrer, M.Sc. Padrões da Camada de Apresentação (1/2) Intercepting Filter Viabiliza pré e pós processamento de requisições. Front Controller

Leia mais

Eduardo Bezerra. Editora Campus/Elsevier

Eduardo Bezerra. Editora Campus/Elsevier Princípios de Análise e Projeto de Sistemas com UML 2ª edição Eduardo Bezerra Editora Campus/Elsevier Capítulo 11 Arquitetura do sistema Nada que é visto, é visto de uma vez e por completo. --EUCLIDES

Leia mais

ILUSTRANDO PADRÕES DE IMPLEMENTAÇÃO DE PROJETOS BASEADOS EM OBJETOS

ILUSTRANDO PADRÕES DE IMPLEMENTAÇÃO DE PROJETOS BASEADOS EM OBJETOS ILUSTRANDO PADRÕES DE IMPLEMENTAÇÃO DE PROJETOS BASEADOS EM OBJETOS ANDREIA TRAVAGLIA Uberlândia, Dezembro/2001. ILUSTRANDO PADRÕES DE IMPLEMENTAÇÃO DE PROJETOS BASEADOS EM OBJETOS ANDREIA TRAVAGLIA Monografia

Leia mais

MVC e Camadas - Fragmental Bliki

MVC e Camadas - Fragmental Bliki 1 de 5 20-03-2012 18:32 MVC e Camadas From Fragmental Bliki Conteúdo 1 Introdução 2 Camadas: Separação Entre Componentes 3 MVC: Interação Entre Componentes 4 Conclusão 5 Referências Introdução A Arquitetura

Leia mais

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP) Hardware (Nível 0) Organização O AS/400 isola os usuários das características do hardware através de uma arquitetura de camadas. Vários modelos da família AS/400 de computadores de médio porte estão disponíveis,

Leia mais

5 Mecanismo de seleção de componentes

5 Mecanismo de seleção de componentes Mecanismo de seleção de componentes 50 5 Mecanismo de seleção de componentes O Kaluana Original, apresentado em detalhes no capítulo 3 deste trabalho, é um middleware que facilita a construção de aplicações

Leia mais

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Professora: Ana Paula Couto DCC 064 Processos- Clientes, Servidores, Migração Capítulo 3 Agenda Clientes Interfaces de usuário em rede Sistema X Window Software do lado cliente para

Leia mais

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Basedos na Web Capítulo 12 Agenda Arquitetura Processos Comunicação Nomeação Sincronização Consistência e Replicação Introdução

Leia mais

Semântica para Sharepoint. Busca semântica utilizando ontologias

Semântica para Sharepoint. Busca semântica utilizando ontologias Semântica para Sharepoint Busca semântica utilizando ontologias Índice 1 Introdução... 2 2 Arquitetura... 3 3 Componentes do Produto... 4 3.1 OntoBroker... 4 3.2 OntoStudio... 4 3.3 SemanticCore para SharePoint...

Leia mais

Modelagem de informações de. construçãocapítulo1: Capítulo. Objetivo do capítulo

Modelagem de informações de. construçãocapítulo1: Capítulo. Objetivo do capítulo construçãocapítulo1: Capítulo 1 Modelagem de informações de A modelagem de informações de construção (BIM) é um fluxo de trabalho integrado baseado em informações coordenadas e confiáveis sobre um empreendimento,

Leia mais

A linguagem UML. UML e Diagramas de Casos de Uso e Classes. Por que usar UML? O que é modelagem?

A linguagem UML. UML e Diagramas de Casos de Uso e Classes. Por que usar UML? O que é modelagem? UML e Diagramas de Casos de Uso e Classes Prof. Ms. Luiz Alberto Contato: lasf.bel@gmail.com A linguagem UML UML (Unified Modeling Language) Linguagem de Modelagem Unificada É uma linguagem de modelagem

Leia mais

Prototype, um Design Patterns de Criação

Prototype, um Design Patterns de Criação Prototype, um Design Patterns de Criação José Anízio Pantoja Maia Este artigo tem como finalidade compreender o funcionamento do padrão de projeto prototype, serão abordados os participantes que compõe

Leia mais

PRODUTO 1 (CONSTRUÇÃO DE PORTAL WEB)

PRODUTO 1 (CONSTRUÇÃO DE PORTAL WEB) RELATÓRIO DE ENTREGA DO PRODUTO 1 (CONSTRUÇÃO DE PORTAL WEB) PARA A ELABORAÇÃO DOS PLANOS MUNICIPAIS DE GESTÃO INTEGRADA DE RESÍDUOS SÓLIDOS PMGIRS PARA OS MUNICÍPIOS DE NOVO HORIZONTE, JUPIÁ, GALVÃO,

Leia mais

Projeto de Arquitetura

Projeto de Arquitetura Projeto de Arquitetura Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 11 Slide 1 Objetivos Apresentar projeto de arquitetura e discutir sua importância Explicar as decisões de projeto

Leia mais

Design Patterns STRATEGY EMERSON BARROS DE MENESES

Design Patterns STRATEGY EMERSON BARROS DE MENESES Design Patterns STRATEGY EMERSON BARROS DE MENESES 1 Breve Histórico Sobre Design Patterns A origem dos Design Patterns (Padrões de Desenho ou ainda Padrões de Projeto) vem do trabalho de um arquiteto

Leia mais

Unified Modeling Language UML - Notações

Unified Modeling Language UML - Notações Unified Modeling Language UML - Notações Prof. Ms. Elvio Gilberto da Silva elvio@fmr.edu.br UML Ponto de Vista É gerada com propósito geral de uma linguagem de modelagem visual usada para especificar,

Leia mais

Orientação à Objetos. Aécio Costa

Orientação à Objetos. Aécio Costa Aécio Costa O paradigma da orientação à objetos Paradigma? Um paradigma é uma forma de abordar um problema. No contexto da modelagem de um sistema de software, um paradigma tem a ver com a forma pela qual

Leia mais

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Especialização em Desenvolvimento de Aplicações Web com Interfaces Ricas EJB 3.0 Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 6 EJB Enterprise Java

Leia mais

Controladores Lógicos Programáveis (CLPs)

Controladores Lógicos Programáveis (CLPs) Controladores Lógicos Programáveis (CLPs) A UU L AL A Uma empresa fabrica clipes em três tamanhos: grande, médio e pequeno. Seus clientes consomem os produtos dos três tamanhos, mas a empresa nunca conseguiu

Leia mais

3.1 Definições Uma classe é a descrição de um tipo de objeto.

3.1 Definições Uma classe é a descrição de um tipo de objeto. Unified Modeling Language (UML) Universidade Federal do Maranhão UFMA Pós Graduação de Engenharia de Eletricidade Grupo de Computação Assunto: Diagrama de Classes Autoria:Aristófanes Corrêa Silva Adaptação:

Leia mais

Banco de Dados. Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com

Banco de Dados. Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com Banco de Dados Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com Roteiro Mapeamento de objetos para modelo relacional Estratégias de persistência Persistência JDBC Mapeando Objetos para o Modelo Relacional

Leia mais

Centro de Computação - Unicamp Gerência de Atendimento ao Cliente (e-mail:apoio@turing.unicamp.br) Sumário

Centro de Computação - Unicamp Gerência de Atendimento ao Cliente (e-mail:apoio@turing.unicamp.br) Sumário Sumário Conceitos Microsoft Access 97... 01 Inicialização do Access... 02 Convertendo um Banco de Dados... 03 Criando uma Tabela... 06 Estrutura da Tabela... 07 Propriedades do Campo... 08 Chave Primária...

Leia mais

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br ROTEIRO 1. Conceitos de Orientação a Objetos Introdução O paradigma da POO Classes

Leia mais

Arquitetura de Software e Atributos de Qualidade

Arquitetura de Software e Atributos de Qualidade Arquitetura de Software e Atributos de Qualidade Jair C Leite Requisitos e atributos de qualidade Requisitos Características, atributos, propriedades e restrições associadas ao software. Requisitos funcionais

Leia mais

Reuso. Curso de Especialização DEINF - UFMA Desenvolvimento Orientado a Objetos Prof. Geraldo Braz Junior

Reuso. Curso de Especialização DEINF - UFMA Desenvolvimento Orientado a Objetos Prof. Geraldo Braz Junior Reuso Curso de Especialização DEINF - UFMA Desenvolvimento Orientado a Objetos Prof. Geraldo Braz Junior Reutilização de Software Na maioria das áreas de engenharia de software, sistemas são desenvolvidos

Leia mais