Atribuição de Responsabilidades em Projeto OO

Slides:



Advertisements
Apresentações semelhantes
Orientação a objetos identidade abstração classificação encapsulamento
Advertisements

Análise e Projeto Orientado a Objetos
Projeto – Parte II - Exemplos de Diagrama de Colaboração
Princípios da Orientação a Objetos e a Linguagem UML
Requisitos de Software
Engenharia de Software
Curso: Banco de Dados I Análise de Sistemas PUC Campinas
UML Modelando um sistema.
Diagrama de Classes.
Orientação por Objectos > Modelo de Processo OO > Identificação de Classe e Objectos Aula 12.
Interface Humano-Computador
UML – MODELAÇÃO DA ESTRUTURA Professor Sandro Carvalho.
Modelagem Orientada a Objetos
Orientação a Objetos: Encapsulamento e Classificação
Cartões CRC (Class Responsibility Card)
Análise de Requisitos Use Case Renata Araujo Ricardo Storino
Refatorações Experiência é aquela coisa maravilhosa que permite que você reconheça um erro tão logo o cometa novamente F.P. Jones.
Professora: Aline Vasconcelos IF Fluminense
Projeto de Software Orientado a Objetos
Contratos em Projeto OO
Modulo I Padrões GRASP Professores
Construção de Diagramas de Colaboração
Introdução a diagrama de classes e UML
Linguagem de Programação II
Linguagem de Programação II
Programação orientada a objetos com Java
1 - Lafayette B. Melo – Análise e Projeto de Sistemas para a Internet – Noções de Engenharia de Software COINFO – CEFET-PB 9. Modelo conceitual (diagrama.
Padrões para Atribuições de Responsabilidades
Aspectos Avançados em Engenharia de Software Aula 3 Fernanda Campos
Geração de Código.
Classes e objetos Modelagem
TÉCNICAS DE PROGRAMAÇÃO II
Diagramas de Sequência e Comunicação
DIAGRAMA DE COMPONENTES
1 - Lafayette B. Melo – Análise e Projeto de Sistemas para a Internet – COINFO – CEFET-PB 9. Complemento de AOO 9.4 Comportamentos 9.5 Visibilidade 9.6.
Objetivo: compreender e aplicar um modelo conceitual
JAVA: Conceitos Iniciais
Polimorfismo em C#.
1 - Lafayette B. Melo – Análise e Projeto de Sistemas para a Internet – COINFO – CEFET-PB 12. Estados Objetivo: compreender a notação do diagrama de estados.
Sobrecarga e Encapsulamento
Treinamento do Microsoft® Access® 2010
Programação Orientada à Objetos
Análise e Projeto de Sistemas UNIVERSIDADE DE CRUZ ALTA Ciência da Computação 2010/1.
Fase de Elaboração: Fluxo de Análise Análise de Sistemas de Software Prof. Rodrigo Ribeiro.
Paradigmas da Programação – Semestre 1 – Aula 2 Professores: Eduardo Mantovani Fábio de Paula.
Marcio de Carvalho Victorino
Análise e Projeto de Sistemas
Programação Orientada a Objetos - Java
Prof. Silvestri – todos os direitos reservados SISTEMAS DISTRIBUIDOS Aula 5 Eduardo Silvestri
Cartões CRC – Classe Responsabilidade Colaboração
SISTEMAS DISTRIBUIDOS Aula 4
© Ricardo Pereira e Silva
Aula prática 14 Orientação a Objetos – C++ Parte 2
Análise e Desenvolvimento de Sistemas Guilhermi Vieira Dias.
Modelagem de Entidade/Objetos de Domínio com Diagrama de Classes
Interfaces e classes abstratas. Conceitos de Orientação a Objeto.
Paradigmas da Programação – Semestre 2 – Aula 1 Professores: Fábio de Paula Santos Eduardo Mantovani
Modelo de Análise e Projeto
Projetando Objetos com Responsabilidades
Padrões de projeto M.Sc. Sílvio Bacalá Jr..
Introdução a Orientação a Objetos
20/04/2017 Orientação a Objetos 1 1.
Módulo II Capítulo 1: Orientação a Objetos
Padrões GRASP.
Fundamentos de Engenharia de SW Diagramas da UML Usados no Projeto de Software.
Diagrama de Classes Herança Dependências.
Desenvolvendo sotfware com UML1 Visão Geral de Orientação a Objetos.
Delegação  É uma maneira de tornar a composição tão poderosa para fins de reutilização como a herança. Na delegação, dois objetos são envolvidos no tratamento.
GRASP: Projeto de Objetos com Responsabilidade – Parte 2.
Análise e Projeto de Sistemas Análise & modelagem conceitual Prof. Edjandir Corrêa Costa
Transcrição da apresentação:

Atribuição de Responsabilidades em Projeto OO Professora: Aline Vasconcelos Cefet Campos apires@iff.edu.br

Recordando: o que são Responsabilidades? O que é Responsabilidade? Um contrato ou obrigação de um tipo ou classe. Responsabilidades definem o comportamento do objeto! Há basicamente dois tipos de Responsabilidades: Fazer O objeto faz algo ele próprio. O objeto inicia ações em outros objetos. O objeto controla e coordena atividades em outros objetos. Conhecer O objeto conhece e gerencia os seus dados privados encapsulados. O objeto conhece objetos relacionados. O objeto conhece coisas que ele pode derivar ou calcular.  

Como identificar Responsabilidades? Especificação de Requisitos do Sistema: Identificando verbos que expressem ações no sistema. Avaliando as responsabilidades gerais do sistema. Lista das Classes Identificadas: Avaliando responsabilidades das classes. Avaliando responsabilidades necessárias para que as classes manipulem os seus atributos.  

Como atribuir Responsabilidades? Heurísticas: Distribuir igualmente a inteligência do sistema; Manter o comportamento junto das informações relacionadas ao mesmo; Manter informações sobre um elemento em um único local; Compartilhar responsabilidade entre objetos relacionados.  

Compartilhar Responsabilidades entre Objetos Relacionados Herança (“é um tipo de”): Existência de atributos comuns sugere a existência de responsabilidades comuns. Agregação (“todo-parte”): Relacionamentos todo-parte podem implicar na definição de responsabilidades divididas pelo todo para suas partes.  

Dificuldades Comuns ao se Atribuir Responsabilidades Ausência de Classes: Responsabilidades que não podem ser atribuídas facilmente a alguma classe existente. Atribuição Arbitrária: Várias classes poderiam assumir uma determinada responsabilidade.  

Registro de Responsabilidades: Cartões CRC Cartões CRC: Class-Responsibility-Collaborator Cards O que são cartões CRC? Cartões para registro de responsabilidades de classes. Incluem: Classe, Responsabilidade, Colaborações. Colaborações = objetos com os quais a classe colabora para satisfazer as suas responsabilidades. Representa uma técnica para projeto orientado a objeto. Representa a realidade como um sistema de agentes colaboradores.  

Registro de Responsabilidades: Cartões CRC Indexados por Classe; Registro das responsabilidades e colaborações; Tomada de Decisão: Que Classe deve assumir uma determinada Responsabilidade??? Cartões CRC são desenvolvidos em uma seção com técnicos, onde as pessoas representam papéis correspondentes às classes do sistema (“Role Playing”!).  

Registro de Responsabilidades: Cartões CRC Formato: Obs.: uma Classe por cartão!!   Classe: Responsabilidade Colaboração

Registro de Responsabilidades: Cartões CRC Deve-se registrar para a classe cada uma das responsabilidades atribuídas a ela. As responsabilidades devem ser descritas de forma breve. Uma classe não deve ter muitas responsabilidades. Não se deve registrar responsabilidades já presentes nas superclasses. Obs.: Os cartões CRC para superclasses devem conter o nome da classe e os nomes das suas subclasses. Se a classe possuir superclasses, elas também devem ser registradas abaixo do nome da classe.  

Aplicando os Padrões GRASP do LARMAN para Atribuição de Responsabilidades Padrões GRASP ajudam a responder: Que Classe deve assumir uma determinada Responsabilidade??? GRASP: Padrões para Atribuição de Responsabilidades (LARMAN, 2000): Expert (Especialista) Creator (Criador) Controller (Controlador) High Cohesion (Coesão Alta) Low Coupling (Acoplamento Baixo)  

Expert: Especialista Qual é o Princípio mais básico, segundo o qual as responsabilidades são atribuídas em projetos orientados a objetos??? “Atribuir responsabilidades ao especialista da informação, ou seja, à classe que tem a informação necessária para satisfazer a responsabilidade.” Em outras palavras, atribua as operações às Classes que possuem a maior parte dos atributos que serão necessários naquela operação.  

Creator - Criador Atribua à classe B a responsabilidade de criar uma instância da classe A se uma das seguintes condições for verdadeira: B agrega objetos A B contém objetos A B registra instâncias de objetos A B usa de maneira muito próxima objetos A B tem todos os dados de inicialização que serão passados para objetos A, quando de sua criação (assim, B é um Expert com relação à criação de A)  

Controller - Controlador Atribuir a responsabilidade do tratamento de um Evento do Sistema a uma classe que representa uma das seguintes escolhas: Representa todo o sistema (Controlador Fachada). Representa todo o negócio ou organização (Controlador Fachada). Representa algo do mundo real que é ativo (por exemplo, o papel de uma pessoa) e que pode estar envolvido na tarefa (Controlador do Papel ). Representa um tratador artificial de todos os eventos de sistema de um caso de uso, geralmente chamado Controlador do Caso de Uso. Observação: classes de interface (como janelas) não deveriam executar tarefas relacionadas à lógica do negócio. Portanto, estas classes não deveriam tratar eventos de sistema. Na realidade, elas deveriam receber estes eventos e os delegar a um controlador.  

Controller – Controlador Um Controlador deve delegar a outros objetos o trabalho que precisa ser feito, enquanto ele coordena a atividade. Controlador de Caso de Uso – Vantagem: Mantém informações sobre o estado do caso de uso, identificando, por exemplo, eventos fora de seqüência. Evite Controladores muito Inchados!!!! Eles conduzem a uma Classe com Alto Acoplamento e Baixa Coesão!