A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

GRASP: Projeto de Objetos com Responsabilidade. 2 Pauta Responsabilidades e métodos Responsabilidades e métodos Padrões Padrões GRASP: Padrões e princípios.

Apresentações semelhantes


Apresentação em tema: "GRASP: Projeto de Objetos com Responsabilidade. 2 Pauta Responsabilidades e métodos Responsabilidades e métodos Padrões Padrões GRASP: Padrões e princípios."— Transcrição da apresentação:

1 GRASP: Projeto de Objetos com Responsabilidade

2 2 Pauta Responsabilidades e métodos Responsabilidades e métodos Padrões Padrões GRASP: Padrões e princípios gerais de atribuição de responsabilidades GRASP: Padrões e princípios gerais de atribuição de responsabilidades Especialista na Informação (Especialista) Especialista na Informação (Especialista) Previsão de tempo médio por slide: 2 minutos

3 3 Desenhar diagramas UML é uma conseqüência da decisão sobre o projeto de objetos Desenhar diagramas UML é uma conseqüência da decisão sobre o projeto de objetos O que realmente importa são habilidades para o projeto de objetos, em vez de saber desenhar diagramas UML O que realmente importa são habilidades para o projeto de objetos, em vez de saber desenhar diagramas UML Fundamentalmente, o projeto de objetos exige o conhecimento de: Fundamentalmente, o projeto de objetos exige o conhecimento de: Princípios de atribuição de responsabilidades Princípios de atribuição de responsabilidades Padrões de projeto Padrões de projeto A saber...

4 4 Responsabilidades e Métodos As responsabilidades estão relacionadas com as obrigações de um objeto em termos de comportamento (método); As responsabilidades estão relacionadas com as obrigações de um objeto em termos de comportamento (método); Basicamente essas responsabilidades são de um dos dois tipos: Basicamente essas responsabilidades são de um dos dois tipos: Conhecer; Conhecer; Fazer; Fazer;

5 5 Responsabilidades e Métodos As responsabilidades fazer de um objeto incluem: As responsabilidades fazer de um objeto incluem: Fazer algo como por exemplo criar um objeto ou realizar um cálculo; Fazer algo como por exemplo criar um objeto ou realizar um cálculo; Iniciar uma ação em outros objetos; Iniciar uma ação em outros objetos; Controlar e coordenar atividades em outros objetos; Controlar e coordenar atividades em outros objetos; As responsabilidades saber incluem: As responsabilidades saber incluem: Conhecimento sobre dados privados encapsulados; Conhecimento sobre dados privados encapsulados; Conhecer objetos relacionados; Conhecer objetos relacionados; Conhecer coisas que ele pode derivar ou calcular. Conhecer coisas que ele pode derivar ou calcular.

6 6 Responsabilidades e Métodos Exemplo: Exemplo: O objeto Venda é responsável por criar linha de ItemDeVenda (fazer); O objeto Venda é responsável por criar linha de ItemDeVenda (fazer); O objeto Venda é responsável por conhecer seu total (saber); O objeto Venda é responsável por conhecer seu total (saber);

7 7 Responsabilidades e Métodos Interação para criar o item de venda e obter o total da venda: fazer e saber Interação para criar o item de venda e obter o total da venda: fazer e saber Fazer Saber

8 8 Responsabilidades e Métodos As responsabilidades saber são dedutíveis do modelo de domínio através das associações e atributos; As responsabilidades saber são dedutíveis do modelo de domínio através das associações e atributos; A tradução de responsabilidades é influenciada pela granularidade da responsabilidade: Ex. Responsabilidade de fornecer acesso ao banco de dados pode envolver dezenas de classes e centenas de métodos. A tradução de responsabilidades é influenciada pela granularidade da responsabilidade: Ex. Responsabilidade de fornecer acesso ao banco de dados pode envolver dezenas de classes e centenas de métodos.

9 9 Responsabilidades e Métodos Uma responsabilidade não é a mesma coisa que um método, porém os métodos são implementados para satisfazer às responsabilidades. Uma responsabilidade não é a mesma coisa que um método, porém os métodos são implementados para satisfazer às responsabilidades.

10 10 Padrões São princípios e idiomas, codificados de forma estruturada, que descrevem o problema e a solução e são identificados por um nome. São princípios e idiomas, codificados de forma estruturada, que descrevem o problema e a solução e são identificados por um nome. Também conhecidos como princípios de soluções idiomáticas que guiam na criação de software. Também conhecidos como princípios de soluções idiomáticas que guiam na criação de software. Simplificando, um padrão é um par nomeado problema/solução que pode ser aplicado em novos contextos, com conselhos sobre sua aplicação em novas situações e uma discussão sobre as conseqüências de seu uso. Simplificando, um padrão é um par nomeado problema/solução que pode ser aplicado em novos contextos, com conselhos sobre sua aplicação em novas situações e uma discussão sobre as conseqüências de seu uso.

11 11 Padrões Exemplo: Nome do Padrão: Especialista na informação (Information Expert) Solução: Atribuir uma responsabilidade para a classe que tem a informação necessária para satisfazê-la; Problema que resolve: Qual é o princípio básico de atribuição de responsabilidade?

12 12 GRASP: Padrões e princípios gerais de atribuição de responsabilidades Descrevem princípios fundamentais de projeto baseado em objetos e atribuição de responsabilidades aos mesmos. Descrevem princípios fundamentais de projeto baseado em objetos e atribuição de responsabilidades aos mesmos. GRASP é: General Responsability Assignment Software Patterns GRASP é: General Responsability Assignment Software Patterns Saber o nome original (inglês) e o significado das siglas é importante para a comunicação eficaz nos projetos de desenvolvimento de software.

13 13 Especialista na Informação (Information Expert) Atribuir uma responsabilidade ao especialista na informação: a classe que tem a informação necessária para satisfazer a responsabilidade. Atribuir uma responsabilidade ao especialista na informação: a classe que tem a informação necessária para satisfazer a responsabilidade. Dúvida importante: Olhamos no modelo de domínio ou no modelo de projeto para analisar as classes que têm a informação necessária? Dúvida importante: Olhamos no modelo de domínio ou no modelo de projeto para analisar as classes que têm a informação necessária? 1. Se houver classes relevantes no modelo de projeto, olhe lá primeiro; 2. Caso contrário, olhe no Modelo de Domínio.

14 14 Especialista na Informação (Information Expert) Analisaremos o caso abaixo em detalhes e vamos determinar o total da venda. Analisaremos o caso abaixo em detalhes e vamos determinar o total da venda.

15 15 Especialista na Informação (Information Expert) Que informação é necessária para determinar o total geral da venda? É preciso conhecer todas as instâncias de ItemDeVenda de uma Venda e a soma de seus subtotais. Uma instância de Venda conhece seus itens. Que informação é necessária para determinar o total geral da venda? É preciso conhecer todas as instâncias de ItemDeVenda de uma Venda e a soma de seus subtotais. Uma instância de Venda conhece seus itens. Segundo a diretriz do Especialista, Venda é uma classe de objetos adequada para receber essa responsabilidade; ela é a especialista nessa informação. Segundo a diretriz do Especialista, Venda é uma classe de objetos adequada para receber essa responsabilidade; ela é a especialista nessa informação.

16 16 Especialista na Informação (Information Expert) Diagrama de classe de software com suas responsabilidades: Diagrama de classe de software com suas responsabilidades: Responsabilidade adicionada Responsabilidades adicionadas

17 17 Especialista na Informação (Information Expert) Quem seria o responsável por calcular então o preço do item de venda? Pelo Especialista, o próprio item de venda teria a responsabilidade de fazer este cálculo uma vez que ele tem a informação do preço de venda e da quantidade e a regra diz que o preço do item de venda é calculado usando o produto aritmético entre a quantidade e o preço de venda. Quem seria o responsável por calcular então o preço do item de venda? Pelo Especialista, o próprio item de venda teria a responsabilidade de fazer este cálculo uma vez que ele tem a informação do preço de venda e da quantidade e a regra diz que o preço do item de venda é calculado usando o produto aritmético entre a quantidade e o preço de venda. Regra para cálculo do preço do item de venda

18 18 Especialista na Informação (Information Expert) Implementação do DS.

19 19 Prática Faça o projeto de classes, diagrama de interação (seqüência) e atribua as responsabilidades para calcular o percentual de presentes na aula. Considere o modelo de domínio abaixo. Implemente a solução em VB.NET. Faça o projeto de classes, diagrama de interação (seqüência) e atribua as responsabilidades para calcular o percentual de presentes na aula. Considere o modelo de domínio abaixo. Implemente a solução em VB.NET.

20 20 Resolução Diagrama de Classes de projeto Diagrama de Classes de projeto

21 21 Resolução Diagrama de interação Diagrama de interação

22 22 Resolução Agora implemente a solução em VB.NET!


Carregar ppt "GRASP: Projeto de Objetos com Responsabilidade. 2 Pauta Responsabilidades e métodos Responsabilidades e métodos Padrões Padrões GRASP: Padrões e princípios."

Apresentações semelhantes


Anúncios Google