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
O que o objeto conhece + O que o objeto faz

Colaboradores
O padro de cooperao (comunicao) entre objetos

precisam de

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

Colaborao

Ex: CRC
Conta Corrente Responsabilidade Saber o seu saldo Colaborao Cliente Histrico de Transaes

atributos

Saber seu cliente 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

Potrebbero piacerti anche