Sei sulla pagina 1di 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
Objetos
possuem
realizadas por

Responsabilidades Colaboradores

O que o objeto conhece O padro de cooperao


+ (comunicao) entre objetos
O que o objeto faz

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

Classe:
Responsabilidade Colaborao
Ex: CRC

Conta Corrente
Responsabilidade Colaborao
Saber o seu saldo Cliente
atributos
Saber seu cliente Histrico de Transaes
Saber seu nmero
Manter histrico de transaes
mtodos
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

Potrebbero piacerti anche