6NA-ModelagemClasseAnalise
121 pág.

6NA-ModelagemClasseAnalise


DisciplinaAnálise e Projeto de Sistemas376 materiais6.535 seguidores
Pré-visualização6 páginas
Cliente conhece seu nome, seu endereço, 
seu telefone, etc
\u2013 Um objeto Pedido conhece sua data de realização e \u2013 Um objeto Pedido conhece sua data de realização e 
sabe fazer o cálculo do seu total
\u2022 Se um objeto tem uma responsabilidade com a 
qual não pode cumprir sozinho, ele deve 
requisitar colaborações de outros objetos
Marcos Antonio de Oliveira (MAS - 2012.1) 91
Responsabilidades e Colaboradores
\u2022 Um exemplo: quando a impressão de uma 
fatura é requisitada em um sistema de vendas, 
vários objetos precisam colaborar
\u2013 Um objeto Pedido pode ter a responsabilidade de 
fornecer o seu valor total
Um objeto Pedido pode ter a responsabilidade de 
fornecer o seu valor total
\u2013 Um objeto Cliente fornece seu nome
\u2013 Cada ItemPedido informa a quantidade 
correspondente e o valor de seu subtotal
\u2013 Os objetos Produto também colaboraram 
fornecendo seu nome e preço unitário 
Marcos Antonio de Oliveira (MAS - 2012.1) 92
Responsabilidades e Colaboradores
Marcos Antonio de Oliveira (MAS - 2012.1) 93
Responsabilidades e Colaboradores
Marcos Antonio de Oliveira (MAS - 2012.1) 94
Modelagem CRC
\u2022 Essa técnica é denominada modelagem CRC 
(Class, Responsibility, Collaboration)
\u2022 A modelagem CRC foi proposta em 1989 por Kent 
Beck e Ward CunninghamBeck e Ward Cunningham
\u2013 Em princípio, essa técnica de modelagem foi proposta 
como uma forma de ensinar o paradigma OO a 
iniciantes
\u2013 Contudo, sua simplicidade de notação a tornou 
particularmente interessante para ser utilizada na 
identificação de classes
Marcos Antonio de Oliveira (MAS - 2012.1) 95
Modelagem CRC
Marcos Antonio de Oliveira (MAS - 2012.1) 96
Sessão CRC
\u2022 Para aplicar essa técnica, esses profissionais se 
reúnem em uma sala, onde tem início uma 
sessão CRC
\u2022 Uma sessão CRC é uma reunião que envolve \u2022 Uma sessão CRC é uma reunião que envolve 
cerca de meia dúzia de pessoas
\u2022 Entre os participantes estão especialistas de 
domínio, projetistas, analistas e o moderador da 
sessão
Marcos Antonio de Oliveira (MAS - 2012.1) 97
Sessão CRC
\u2022 A cada pessoa é entregue um cartão de papel que 
mede aproximadamente 10cm x 15cm
\u2022 Uma vez distribuídos os cartões pelos 
participantes, um conjunto de cenários de 
determinado caso de uso é selecionado
participantes, um conjunto de cenários de 
determinado caso de uso é selecionado
\u2022 Então, para cada cenário desse conjunto, uma 
sessão CRC é iniciada
\u2013 Se o caso de uso não for tão complexo, ele pode ser 
analisado em uma única sessão
Marcos Antonio de Oliveira (MAS - 2012.1) 98
Sessão CRC
\u2022 Um cartão CRC é dividido em várias partes
\u2013 Na parte superior do cartão, aparece o nome de uma 
classe
\u2013 A parte inferior do cartão é dividida em duas colunas\u2013 A parte inferior do cartão é dividida em duas colunas
\u2013 Na coluna da esquerda, o indivíduo ao qual foi entre o 
cartão deve listar as responsabilidades da classe
\u2013 Na coluna direita, o indivíduo deve listar os nomes de 
outras classes que colaboram com a classe em 
questão para que ela cumpra com suas 
responsabilidades
Marcos Antonio de Oliveira (MAS - 2012.1) 99
Modelagem CRC
\u2022 Normalmente já existem algumas classes 
candidatas para determinado cenário
\u2013 Identificadas através de outras técnicas
\u2022 A sessão CRC começa com algum dos 
participantes simulando o ator primário que 
dispara a realização do caso de uso
Marcos Antonio de Oliveira (MAS - 2012.1) 100
Modelagem CRC
\u2022 Na medida em que esse participante simula a 
interação do ator com o sistema, os demais 
participantes encenam a colaboração entre 
objetos que ocorre internamente ao sistemaobjetos que ocorre internamente ao sistema
\u2022 Através dessa encenação dos participantes da 
sessão CRC, as classes, responsabilidades e 
colaborações são identificadas
Marcos Antonio de Oliveira (MAS - 2012.1) 101
Estrutura do Cartão CRC
<Nome da Classe>
Responsabilidades Colaboradores
1ª responsabilidade 1º colaborador
Marcos Antonio de Oliveira (MAS - 2012.1) 102
2ª responsabilidade 2º colaborador
... ...
n-ésima responsabilidade m-ésimo colaborador
Exemplo (Cartão CRC)
ContaBancária
Responsabilidades Colaboradores
1ª Conhecer o seu cliente 1º Cliente
Marcos Antonio de Oliveira (MAS - 2012.1) 103
1ª Conhecer o seu cliente 1º Cliente
2ª Conhecer o seu nome 2º Transação
3ª Conhecer o seu saldo
4ª Manter um histórico de transações
5ª Aceitar saques e depósitos
Dicas para Atribuição de Responsabilidades
\u2022 Associar responsabilidades com base na 
especialidade da classe
\u2022 Distribuir a inteligência do sistema 
\u2022 Agrupar as responsabilidades \u2022 Agrupar as responsabilidades 
conceitualmente relacionadas 
\u2022 Evitar responsabilidades redundantes
Marcos Antonio de Oliveira (MAS - 2012.1) 104
Padrões de Análise
\u2022 Após produzir diversos modelos para um mesmo 
domínio, é natural que um modelador comece a 
identificar características comuns entre esses 
modelos
\u2022 Em particular, um mesmo conjunto de classes ou 
colaborações entre objetos costuma recorrer
(com algumas pequenas diferenças)
\u2013 Quantos modelos de classes já foram construídos que 
possuem os conceitos Cliente, Produto, Fornecedor, 
Departamento, etc?
Marcos Antonio de Oliveira (MAS - 2012.1) 105
Padrões de Análise
\u2022 A identificação de características comuns 
acontece em conseqüência do ganho de 
experiência do modelador em determinado 
domínio de problemadomínio de problema
\u2022 Ao reconhecer processos e estruturas comuns 
em um domínio, o modelador pode descrever 
(catalogar) a essência dos mesmos, dando 
origem a padrões de software
Marcos Antonio de Oliveira (MAS - 2012.1) 106
Padrões de Análise
\u2022 Quando o problema correspondente ao 
descrito em um padrão de software acontecer 
novamente, um modelador pode utilizar a 
solução descrita no catálogosolução descrita no catálogo
\u2022 A aplicação desse processo permite que o 
desenvolvimento de determinado aspecto de 
um sistema seja feito de forma mais rápida e 
menos suscetível a erros
Marcos Antonio de Oliveira (MAS - 2012.1) 107
Padrões de Análise
\u2022 Um padrão de software pode então ser 
definido como uma descrição essencial de um 
problema recorrente no desenvolvimento de 
softwaresoftware
Marcos Antonio de Oliveira (MAS - 2012.1) 108
&quot;Cada padrão descreve um problema que
ocorre freqüentemente no nosso ambiente, e
então descreve o núcleo de uma solução para
tal problema. Esse núcleo pode ser utilizado
um milhão de vezes, sem que haja duas
formas de utilização iguais.&quot; (Christopher
Alexander)
Padrões de Análise
\u2022 Padrões de software podem ser utilizados em diversas 
atividades e existem em diversos níveis de abstração
\u2013 Padrões de Análise (Analysis Patterns)
\u2013 Padrões de Projeto (Design Patterns)
\u2013 Padrões Arquiteturais (Architectural Patterns)
\u2013 Idiomas (Idioms)\u2013 Idiomas (Idioms)
\u2013 Anti-padrões (Anti-patterns)
\u2022 Um padrão de análise normalmente é composto, 
dentre outras partes, de um fragmento de diagrama de 
classes que pode ser customizado para uma situação 
de modelagem em particular
Marcos Antonio de Oliveira (MAS - 2012.1) 109
CONSTRUÇÃO DO MODELO DE 
CLASSES
Marcos Antonio de Oliveira (MAS - 2012.1) 110
Propriedades de uma Classe
\u2022 Uma responsabilidade de conhecer é mapeada 
para um ou mais atributos
\u2022 Operações de uma classe são um modo mais 
detalhado de explicitar as responsabilidades de 
fazer
detalhado de explicitar as responsabilidades de 
fazer
\u2013 Uma operação pode ser vista como uma contribuição 
da classe para uma tarefa mais complexa 
representada por um caso de uso
\u2013 Uma definição mais completa das operações de uma 
classe só pode ser feita após a construção dos 
diagramas de interação
Marcos Antonio de Oliveira (MAS - 2012.1) 111
Definição de Associações e Agregações
\u2022 O fato de uma classe possuir colaboradores 
indica que devem existir relacionamentos 
entre estes últimos e a classe
\u2013 Isto porque um objeto precisa conhecer o outro 
para poder lhe fazer requisições
Isto porque um objeto precisa conhecer o outro 
para poder lhe fazer requisições
\u2013 Portanto, para criar associações,