Anda di halaman 1dari 16

Cartes CRC (Class

Responsibility Card)

Responsabilidades
Em sistemas OO, objetos encapsulam tanto dados
quanto comportamento.
O comportamento de um objeto definido de tal
forma que ele possa cumprir com suas
responsabilidades.
Uma responsabilidade uma obrigao que um
objeto tem para com o sistema no qual ele est
inserido.
Atravs delas, um objeto colabora (ajuda) com outros
para que os objetivos do sistema sejam alcanados.

Responsabilidades
O que Responsabilidade?
Um contrato ou obrigao de um tipo ou classe.

Responsabilidades definem o comportamento do objeto!


H basicamente dois tipos de Responsabilidades:
Fazer
O objeto faz algo ele prprio.
O objeto inicia aes 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.

Responsabilidades
Na prtica, uma responsabilidade alguma coisa
que um objeto conhece ou faz. (sozinho ou no).
Um objeto Cliente conhece seu nome, seu endereo,
seu telefone, etc.
Um objeto Pedido conhece sua data de realizao e
sabe fazer o clculo do seu total.

Se um objeto tem uma responsabilidade a qual no


pode cumprir sozinho, ele deve requisitar
colaboraes de outros objetos.

Colaborao

Modelo CRC
Composto de um conjunto de cartes com o
seguinte formato:
Classe:
Responsabilidade

Colaborao

Ex: CRC
Conta Corrente

atributos

Responsabilidade

Colaborao

Saber o seu saldo

Cliente

Saber seu cliente

Histrico de Transaes

Saber seu nmero


mtodos

Manter histrico de transaes


Realizar saques e depsitos

Tcnica CRC
Tcnica originalmente proposta para ensinar OO efetiva
para profissionais com pouca experincia
Modelo CRC no pertence a UML, mas tem sido bastante
utilizado com XP
A tcnica inclui uma sesso CRC que serve para extrao (e
tambm modelagem de requisitos) junto a especialistas de
domnio e desenvolvedores.
Uma sesso CRC envolve por volta de meia dzia de
pessoas: especialistas de domnio, projetistas, analistas e um
moderador.
A cada pessoa entregue um carto CRC.

Sesso de CRC
Distribuio dos cartes: considera-se as
categorias de responsabilidades.
Para cada cenrio de caso de uso tpico,
pode-se comear com:
um objeto de fronteira para cada ator
participante do caso de uso;
um objeto de controle para todo o caso de uso;
normalmente h vrios objetos de entidade.

Modelagem CRC
Configurao inicial:
O moderador da sesso pode desempenhar o
papel do objeto controlador
Outro participante desempenha o papel do
objeto de fronteira.
Um outro participante pode simular o ator (ou
atores, se houver mais de um).
Os demais representam objetos de entidade.

Sesso CRC
Seleo do conjunto de cenrios de cada caso de
uso a ser simulado
Para cada cenrio, uma sesso CRC realizada.
Se o caso de uso no for to complexo, ele pode ser
analisado em uma nica sesso.

Normalmente j existem algumas classes


candidatas para um certo cenrio (identificada a
partir do prprio caso de uso, descrio funcional,
etc)

Sesso CRC
Comea com a simulao do ator primrio
(aquele que inicia o caso de uso).
Os demais participantes encenam a
colaborao entre objetos para que o
objetivo do ator seja alcanado.
Atravs dessa encenao, as classes,
responsabilidades e colaboraes so
identificadas.

Procedimento CRC
1. Selecionar um conjunto de cenrios de casos de uso.
2. Para um dos cenrios:
a) Examinar a sua seqncia de passos para identificar as
responsabilidades do sistema em relao a cada um
desses passos.
b) Identificar classes relevantes que devem cumprir com as
responsabilidades.

3. Repetir o passo 2 para o prximo cenrio e


modificar a alocao de responsabilidades e a
definio de classes.

O que considerar
CRC so bons para discusso mas no documentao
As responsabilidades devem ser descritas de forma
breve e associadas considerando a especialidade da
classe.
Uma classe no deve ter muitas responsabilidades,
deve-se distribuir a inteligncia do sistema

Utilizam-se cartes de tamanho fixo (normalmente com as dimenses


aproximadas de 10cm x 15cm). O fato de as dimenses utilizadas serem
as mesmas para todos os cartes contribui para uma distribuio mais
uniforme das responsabilidades.

Cuidado para no criar God Classes

Agrupar as responsabilidades conceitualmente


relacionadas
=> Considerar coeso

O que considerar
Evitar responsabilidades redundantes

No se deve registrar responsabilidades j presentes nas superclasses.


No se deve criar classes mgicas, com responsabilidades inteis ou
desconectadas do mundo real.
Obs.: Os cartes CRC para superclasses devem conter o nome da classe
e os nomes das suas subclasses. Se a classe possuir superclasses, elas
tambm devem ser registradas abaixo do nome da classe.

As responsabilidades das classes s podero ser


estabelecidas de uma forma mais completa na fase de
projeto, com a elaborao dos diagramas de interao,
dos quais as operaes (e mtodos) sero refinados.
O comportamento das classes descrito pelos
diagramas de estado (e/ou atividades).

Referncias
Bezerra, E. Princpios de Anlise e Projeto Orientados a Objetos com
UML. Ed. Campus, Cap 5.
The Object Primer 3rd Edition: Agile Model Driven Development with
UML 2, Cambridge University Press, 2004, Cap 8

Anda mungkin juga menyukai