GRASP: PADRÕES PARA ATRIBUIÇÃO DE RESPONSABILIDADES. SSC 124 Análise e Projeto Orientado a Objeto Profa. Dra. Elisa Yumi Nakagawa

Documentos relacionados
Modulo II Padrões GRASP

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

Programação Orientada a Objetos SANTOS, Rafael

Análise de Requisitos

Capítulo 6. Projeto de arquitetura Pearson Pren0ce Hall. Todos os direitos reservados. 1. slide 1

Engenharia de Software II

Princípios e Conceitos de Desenho de Software. Projeto de Sistemas de Software Prof. Rodrigo Ribeiro

Introdução à orientação a objetos

Sistemas Distribuídos

Modelo Entidade Relacionamento (MER) Professor : Esp. Hiarly Alves

MDS II Aula 04. Concepção Requisitos Diagrama de Casos de Uso (Use Cases)

Análise de Sistemas 3º Bimestre (material 2)

Métricas de Software

Fundamentos de Bancos de Dados 3 a Prova Caderno de Questões

Falta Erro Falha. Motivação. Teste de Software. Falha, Falta e Erro. Falha, Falta e Erro. Falha, Falta e Erro. Falha, Falta e Erro 6/6/11

CRIAÇÃO DE TABELAS NO ACCESS. Criação de Tabelas no Access

aplicação arquivo Condições Gerais de Utilização

ADMINISTRAÇÃO DE BANCOS DE DADOS MÓDULO 8

Os passos a seguir servirão de guia para utilização da funcionalidade Acordo Financeiro do TOTVS Gestão Financeira.

Gestão da Qualidade. Aula 13. Prof. Pablo

Fundamentos de Teste de Software

ENGENHARIA DE SOFTWARE

Inteligência Artificial

Formas de Pagamento Resumida Vendas Vendedor Vendas Vendedor Resumido Vendas Vendedor Caixa Vendas por Artigos...

Disciplina: Unidade III: Prof.: Período:

Visibilidade e Diagrama de Classe de Projeto Estudo de Caso Sistema TPV

Para entender o conceito de objetos em programação devemos fazer uma analogia com o mundo real:

Sérgio Luisir Díscola Junior

Banco de Dados I Unidade 3: Projeto de BD Relacional. Cláudio Baptista

MANUAL HAE - WEB MANUAL WEB HAE

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

0.1 Introdução Conceitos básicos

Gerenciamento dos Riscos do Projeto (PMBoK 5ª ed.)

Fundamentos de Programação. Diagrama de blocos

Redes de Computadores

BPMN - Business Process Modeling Notation Uma Notação para a Modelagem de Processos. Renata Guanaes

Revisão Diagrama de Caso de Uso. Rodolfo Adamshuk Silva 30/08/2013

AULA 1 INTRODUÇÃO A BANCO DE DADOS E VISÃO GERAL DO SQL CONCEITUANDO BANCO DE DADOS MODELO RELACIONAL

Modelo Lógico: Tabelas, Chaves Primárias e Estrangeiras

FACULDADE SOGIPA DE EDUCAÇÃO FÍSICA

Desenvolvimento de Software

Descrição do Serviço Diagnóstico no Local

Sistema de Gestão Avícola SYSAVES. O sistema SYSAVES controla todo o processo, desde a saída dos

Gestão de Pessoas e Avaliação por competências

O que é um banco de dados? Banco de Dados. Banco de dados

Objetivo do Portal da Gestão Escolar

Prova de Fundamentos de Bancos de Dados 1 a Prova

Arquitecturas de Software Enunciado de Projecto

DOCUMENTAÇÃO SISTEMA DE ADMINISTRAÇÃO DE CONSULTÓRIO MÉDICO

Modelo Relacional Normalização Diagramas E-R e Tabelas Originadas

Comandos de Eletropneumática Exercícios Comentados para Elaboração, Montagem e Ensaios

Modelo de Precificação de A0vos Financeiros (CAPM) e Hipótese do Mercado Eficiente (HME) Aula de Fernando Nogueira da Costa Professor do IE- UNICAMP

Plano de Projeto. Tema 3. Gerência de Projetos Profa. Susana M. Iglesias

Gestão de Actas Escolares. Manual Utilizador. (Versão 4)

Manual Geral de Aplicação Universal Entrada 2008

Guião do Trabalho Laboratorial Nº 1 Criação do Modelo do Mundo no ABB RobotStudio

Fundo Municipal dos Direitos da Criança e do Adolescente

DIMENSÕES DE PESQUISA EM ENGENHARIA DE SOFTWARE

Tipologia dos Escritórios de Projeto

Padrões de Projeto. Factory Method

Driver Next Versão 1.0 de Português

ANÁLISE DE CIRCUITOS I ( AULA 03)

CONSIDERAÇÕES BÁSICAS SOBRE PROJETO DE MUSEU DE ARTES VISUAIS 1

WEBFLEET Índice remissivo. Notas de lançamento - Março de 2015

ISS Eletrônico. Formato de Arquivos para Transmissão de Documentos Declarados através do aplicativo OFFLINE. Extensão do Arquivo JUNHO2006.

Ondas EM no Espaço Livre (Vácuo)

Instruções para utilização dos Fóruns pelo Grupo dos Consensos Psiquiátricos para Clínicos Gerais 2005

Avaliando e Compreendendo o Desempenho. Capítulo 4

LOGO DO WEBSITE DA FUTURA APP

EDITAL DE SELEÇÃO PARA MESTRADO 2016 PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA DE PRODUÇÃO (UNIFEI)

Princípios de Engenharia de Software. Aula 6 Projeto de Software

Dicas Gerenciais Como devo definir o preço de venda de cada produto? Processo de Formação de Preços em uma Loja de Varejo de Alimentos.

Módulo 8 Entradas Digitais 24 Vdc Monitorado. Os seguintes produtos devem ser adquiridos separadamente para possibilitar a utilização do produto:

Mudar de tarifário ou serviço de telecomunicações

Como utilizar a tecnologia a favor da sua central de atendimento

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

CONSELHO REGIONAL DE ENFERMAGEM DE SÃO PAULO. Resposta aos questionamentos efetuados pela empresa TOTVS, temos a informar conforme segue:

CPGP 2016 CONGRESSO PARANAENSE DE GERENCIAMENTO DE PROJETOS CHAMADA DE TRABALHOS

Análise e Projeto Orientado a Objetos. Nazareno Andrade Baseado no material dos profs. Hyggo Almeida e Jacques Sauvé

Anabela Viegas, Recursos Humanos Portal de Gestão Documental do Colaborador Guia para consulta rápida

Capítulo I Disposições Gerais

PLANEJAMENTO ESTRATÉGICO

Módulo: M_CONFIRMA_AGENDAMENTO - Confirmação dos Agendamentos

Lógica de Programação. Profas. Simone Campos Camargo e Janete Ferreira Biazotto

ACESSO HABITAÇÃO MUNICIPAL Candidatura online Manual do Utilizador

Arquitetura de Aplicações J2EE. Jorge Fernandes Outubro de 2003

Estudo aponta influência do código de barras e da tecnologia na decisão de compra do consumidor e na estratégia do varejo

MODELAGENS. Modelagem Estratégica

Impresso em 26/08/ :39:41 (Sem título)

Microeconomia. Prof.: Antonio Carlos Assumpção

MANUAL DE PROCEDIMENTO V.WEISS & CIA LTDA PROCEDIMENTO PADRÃO PARA VIAGEM A SERVIÇO ATUALIZADO: JULHO/2015 V.WEISS & CIA LTDA

manual: o envio de documentos passo a passo ano lectivo

FACULDADE DE ARARAQUARA IESP Instituto Educacional do Estado de São Paulo Rua Miguel Cortez, 50, Vila Suconasa, Araraquara/SP Tel:

Transcrição:

GRASP: PADRÕES PARA ATRIBUIÇÃO DE RESPONSABILIDADES SSC 124 Análise e Projeto Orientado a Objeto Profa. Dra. Elisa Yumi Nakagawa 2 o semestre de 2016 1

RESPONSABILIDADE Responsabilidade um contrato ou obrigação de um 1po ou classe serviços fornecidos por um elemento (classe ou subsistema) Dois.pos de responsabilidades básicas: Fazer fazer algo (criar um objeto, executar uma operação, ) iniciar ações em outros objetos coordenar e controlar a1vidades em outros objetos Saber conhecer dados privados encapsulados conhecer objetos relacionados conhecer coisas que podem ser derivadas ou calculadas 2

RESPONSABILIDADE Exemplos: uma Venda é responsável por criar ItemLinhaVenda FAZER uma Venda é responsável por conhecer o seu total - SABER OBS: responsabilidades do.po saber frequentemente podem ser deduzidas do modelo conceitual (atributos e associações) 3

RESPONSABILIDADE E DIAGRAMA DE COMUNICAÇÃO Diagramas de comunicação mostram escolhas de atribuição de responsabilidade a objetos Métodos são implementados para sa.sfazer uma responsabilidade Objetos podem colaborar com outros objetos para atender a uma responsabilidade Exemplo: imprimir() :Venda Responsabilidade de imprimir atribuída a :Venda 4

RESPONSABILIDADE Existem diferentes granularidades da responsabilidade Exemplo: Fornecer acesso a bancos de dados relacionais pode envolver muitos objetos e métodos Imprimir uma venda pode envolver apenas um objeto ou alguns poucos métodos 5

EXEMPLO fazerpagamento(quantia) :Venda 1:criar(quantia) Responsabilidade Fazer Pagamento Ø atribuída ao objeto :Venda Ø colaboração entre :Venda e :Pagamento Pagamento 6

PADRÕES Repertório de princípios gerais e boas soluções para guiar a construção de sojware Descritas em um formato padronizado (nome, problema e solução) e podem ser usadas em outros contextos Usualmente não contêm novas ideias organizam conhecimentos e princípios existentes, testados e consagrados Padrão é uma descrição nomeada de um problema e uma solução, que pode ser aplicado em novos contextos 7

PADRÕES GRASP GRASP = General Responsibility Assignment So4ware Pa7erns Descrevem princípios fundamentais de atribuição de responsabilidade a objetos Principais padrões GRASP: Especialista (Expert) Criador (Creator) Coesão alta (High Cohesion) Acoplamento fraco (Low Coupling) Controlador (Controller) 8

ESPECIALISTA Problema: qual é o princípio mais básico de atribuição de responsabilidades a objetos? Solução: Atribuir responsabilidade ao especialista da informação. 9

EXEMPLO tot:=calculartotal() :TPV 1*:[para cada]liv:=prox() :LinhaItemVenda :Venda 2: st:=subtotal() liv:linhaitemvenda tot:=calculartotal() 2.1:pr:=preco() No sistema TPV, um objeto precisa conhecer o total geral de uma venda. Qual é esse objeto? ep:especificacaoproduto :Venda à conhece o total da venda :LinhaItemVenda à conhece o subtotal da linha :EspecificacaoProduto à conhece o preço do produto 10

ESPECIALISTA Discussão Padrão mais u1lizado Fazê-lo eu mesmo objetos fazem coisas relacionadas à informação que têm Existem especialistas parciais que colaboram em uma tarefa informação espalhada comunicação via mensagens Há uma analogia no mundo real 11

ESPECIALISTA BeneZcios Mantém encapsulamento favorece o acoplamento fraco Comportamento fica distribuído entre as classes que têm a informação necessária (classes leves ) favorece alta coesão Contra-indicações contra indicado quando aumenta acoplamento e reduz coesão 12

CRIADOR Problema: Quem deveria ser responsável pela criação de uma nova instância de alguma classe? Solução: atribua à classe B a responsabilidade de criar uma nova instância da classe A se uma das seguintes condições for verdadeira: B agrega/contém/registra objetos de A B usa objetos de A B tem os valores iniciais que serão passados para objetos de A, quando de sua criação 13

CRIADOR Exemplo: No sistema TPV, quem é responsável pela criação de uma instância de ItemLinhaVenda? criaritemlinha (quantidade) :Venda Ø :Venda contém vários :ItemLinhaVenda 1:criar(quantidade) ItemLinhaVenda 14

CRIADOR Discussão obje1vo do padrão: definir como criador o objeto que precise ser conectado ao objeto criado em algum evento escolha adequada favorece acoplamento fraco objetos agregados, contêineres e registradores são bons candidatos à responsabilidade de criar outros objetos algumas vezes o candidato a criador é o objeto que conhece os dados iniciais do objeto a ser criado Ex: Venda e Pagamento 15

EXEMPLO fazerpagamento(quantia) :Venda 1:criar(quantia) Ø :Venda possui dados iniciais do pagamento Pagamento 16

CRIADOR BeneZcios favorece o acoplamento fraco provavelmente o acoplamento não é aumentado porque o objeto criado provavelmente já é visível para o objeto criador, devido às associações existentes que mo1varam sua escolha como criador 17

ACOMPLAMENTO Dependência entre elementos (classes, subsistemas, ), normalmente resultante de comunicação para atender a uma responsabilidade Mede o quanto um objeto está conectado a, tem conhecimento de ou depende de outros objetos acoplamento fraco (ou baixo) um objeto não depende de muitos outros acoplamento forte (ou alto) um objeto depende de muitos outros 18

ACOPLAMENTO Problemas do acoplamento alto: Mudanças em classes interdependentes forçam mudanças locais Dificulta a compreensão do obje1vo de cada classe Dificulta reu1lização 19

FORMAS DE ACOPLAMENTO Objeto tem um atributo que referencia um objeto de outra classe Objeto tem um método que referencia um objeto de outra classe parâmetro, variável local ou retorno Classe é subclasse de outra, direta ou indiretamente 20

ACOPLAMENTO FRACO Problema: como favorecer a baixa dependência e aumentar a reu.lização? Solução: Atribuir responsabilidade de maneira que o acoplamento permaneça baixo. Exemplo: No sistema TPV, suponha que queremos criar uma instância de Pagamento e associá-la à Venda. Qual classe deve ser responsável por essa tarefa? 21

Solução 1: segundo padrão Criador, responsabilidade atribuída ao TPV fazerpagamento( ) :TPV 1: p:=criar( ) Pagamento 2 : adicionarpagamento(p) :Venda Solução 2: segundo padrão Acoplamento Fraco responsabilidade atribuída à Venda fazerpagamento( ) :TPV 1: fazer Pagamento( ) 1.1: criar( ) :Venda Pagamento

QUAL É MELHOR? Qual das soluções anteriores favorece o acoplamento fraco? em ambos os casos, Venda será acoplada a (terá conhecimento de) Pagamento Solução 1 acoplamento entre Pagamento e TPV Solução 2 não aumenta acoplamento 23

ACOPLAMENTO FRACO Discussão: Acoplamento fraco à classes mais independentes reduz impacto de mudanças favorece reúso de classes Considerado em conjunto com outros padrões Extremo de acoplamento fraco não é desejável fere princípios da orientação a objetos que é a comunicação por mensagens projeto pobre, ou seja, objetos inchados e complexos, responsáveis por muito trabalho à baixa coesão 24

ACOPLAMENTO FRACO Discussão: Concentre-se em reduzir o acoplamento em pontos de evolução ou de alta instabilidade do sistema BeneZcios: exemplo: cálculo de impostos no sistema TPV Classe são pouco afetadas por mudanças em outras partes Classes são simples de entender isoladamente Conveniente para reu1lização 25

COESÃO Coesão mede o quanto as responsabilidades de um elemento (classe, objeto, subsistema, ) são fortemente relacionadas Objeto com Coesão Alta objeto cujas responsabilidades são altamente relacionadas e que não executa um volume muito grande de trabalho Objeto com Coesão Baixa objeto que faz muitas coisas não relacionadas ou executa muitas tarefas di`cil de compreender, reu1lizar e manter constantemente afetadas por mudanças 26

COESÃO ALTA Problema: Como manter a complexidade sob controle? Solução: Atribuir responsabilidade de tal forma que a coesão permaneça alta. Exemplo (o mesmo para o acoplamento fraco): No sistema TPV, suponha que queremos criar uma instância de pagamento e associá-la à venda. Qual classe deve ser responsável por essa tarefa? 27

Solução 1: segundo padrão Criador, responsabilidade atribuída ao TPV fazerpagamento( ) :TPV 1: p:=criar( ) Pagamento 2 : adicionarpagamento(p) :Venda O TPV toma parte na responsabilidade de fazer pagamento. Neste exemplo, isso seria aceitável, mas o que aconteceria se houvessem 50 mensagens recebidas por TPV?

Solução 2: segundo padrão Coesão Alta responsabilidade atribuída à Venda fazerpagamento( ) :TPV 1: fazer Pagamento( ) 1.1: criar( ) :Venda Pagamento Esta solução favorece uma coesão mais alta em TPV e também um acoplamento mais fraco. Portanto, projeto 2 é preferível.

COESÃO ALTA Discussão: Coesão alta, assim como Acoplamento Fraco, são princípios que devem ser considerados no projeto de objetos má coesão traz acoplamento ruim e vice-versa Regra prá1ca: classe com coesão alta tem um número rela1vamente pequeno de métodos, com funcionalidades relacionadas, e não executa muito trabalho Analogia com mundo real Pessoas que assume muitas responsabilidades não associadas podem tornar-se (e normalmente tornam-se) ineficientes 30

COESÃO ALTA BeneZcios: Mais clareza e facilidade de compreensão no projeto Simplificação de manutenção e acréscimo de funcionalidade/melhorias Favorecimento do acoplamento fraco Aumento no potencial de reu1lização classe altamente coesa pode ser usada para uma finalidade bastante específica 31

CONTROLADOR Problema: Quem deve ser responsável por tratar um evento do sistema? Solução: A responsabilidade de receber ou tratar os eventos (operações) do sistema pode ser atribuída a uma classe que: Represente todo o sistema, um disposi1vo ou um subsistema chamado de controlador fachada OU Represente um cenário de um caso de uso dentro do qual ocorra o evento TratadorDe<NomeDoCasoDeUso>, ControladorDe<NomeDoCasoDeUso> 32

CONTROLADOR Exemplo: quem vai tratar os eventos do sistema TPV? Comprar Itens :Sistema :Caixa iniciarnovavenda( ) entraritem(cup, quantidade) descrição item, total *[mais itens] terminarvenda() fazerpagamento(quantia) troco, recibo 33

ID Item Quantidade :Caixa Entrar Item ( açãoexecutada(eventodaação Camada de Interface :CWindow ( quantidade entraritem(cpu, Camada do Domínio :????

EXEMPLO: OPÇÕES DE CONTROLADOR Todo o sistema (controlador fachada): TPV Tratador artificial do caso de uso: ControladorDeComprarItem entraritem( ) :TPV entraritem( ) :ControladorDe ComprarItem 35

DISCUSSÃO: CONTROLADORES FACHADA Deve ser um objeto (do domínio) e que seja o ponto principal para as mensagens provenientes da interface com o usuário ou de outros sistemas Pode ser uma abstração de uma en1dade `sica Exemplo: TPV Pode ser um conceito que represente o sistema Exemplo: SistemaTPV Adequados quando não há uma quan.dade muito grande de eventos de sistema 36

DISCUSSÃO: CONTROLADORES DE CASOS DE USO Não é um objeto do domínio Controlador diferente para cada caso de uso Uma alterna.va se a escolha de controladores fachada deixar a classe controladora com alto acoplamento e/ou baixa coesão (controlador inchado por excesso de responsabilidade) Boa alterna.va quando existem muitos eventos envolvendo diferentes e muitos casos de uso 37

CONTROLADORES INCHADOS Classe controladora mal projetada inchada Coesão baixa falta de foco e tratamentos de muitas responsabilidades Sinais de inchaço: Única classe controladora tratando todos os eventos, que são muitos. Comum com controladores fachada Próprio controlador executa as tarefas necessárias para atender o evento, sem delegar para outras classes (coesão alta, não especialista) Controlador tem muitos atributos e mantém informação significa1va sobre o domínio, ou duplica informações existentes em outros lugares 38

CONTROLADOR Curas para controladores inchados Acrescentar mais controladores Misturar controladores fachada e de casos de uso Observação: Objetos de interface (como objetos janela ) e da camada de apresentação não devem ter a responsabilidade de tratar eventos do sistema 39

CONTROLADOR BeneZcios: Aumento das possibilidades de reu1lização de classes Aumento das possibilidades de interfaces plugáveis Conhecimento do estado do caso de uso controlador pode armazenar estado do caso de uso, garan1ndo a sequência correta de execução de operações 40

GRASP: PADRÕES PARA ATRIBUIÇÃO DE RESPONSABILIDADES SSC 124 Análise e Projeto Orientado a Objeto Profa. Dra. Elisa Yumi Nakagawa 2 o semestre de 2016 41