7/23/2019 E2 Sesion03 Tarjeta CRC
1/20
ELECTIVO II
SESION 03:TARJETA CRC
7/23/2019 E2 Sesion03 Tarjeta CRC
2/20
Introduccin
La tcnica Clase, Responsabilidad yColaboracin (CRC) creada por Kent Beck yWard Cunningham ayuda a realizar el anlisiso el diseo orientado a objetos y sirve paraintroducir al estudiante en el pensamientoorientado a objetos.
7/23/2019 E2 Sesion03 Tarjeta CRC
3/20
Introduccin
La gran mayora de los autores de metodologas
de desarrollo orientadas a objetos, coinciden en
que la identificacin de un conjunto apropiado de
clases y su correcta asignacin deresponsabilidades, son los pilares fundamentales
de un diseo orientado a objetos.
7/23/2019 E2 Sesion03 Tarjeta CRC
4/20
Utilidad de las tarjetas CRC
Identificar las clases que participan del diseo
del sistema.
Obtener las responsabilidades que deben
cumplir cada clase.
Establecer cmo colabora una clase con otras
clases para cumplir con sus responsabilidades.
7/23/2019 E2 Sesion03 Tarjeta CRC
5/20
Proceso de desarrollo: Clases
La clase representa una coleccin de objetos similares. Aqu es
donde se encuentran todas las clases involucradas en el sistema.
Para localizar estas clases se recomienda lo siguiente:
Listar todas las clases: Listar las clases que se encuentren en la
especificacin de requerimientos.
Modelar los objetos fsicos: Las instancias de aquellas clases
que son fsicas que se pueden tocar, tienen que ser
modeladas.
Modelar las entidades conceptuales.
Seleccionar de varios conceptos iguales el que ms representeo describa al objeto
Tener cuidado con los adjetivos.
7/23/2019 E2 Sesion03 Tarjeta CRC
6/20
Proceso de desarrollo: Clases
Tener cuidado con oraciones que tengan sujetos engaosos.
Modelar categoras; reconocer superclases, subclases y clases
abstractas.
Modelar interfaces del sistema.
Modelar valores de atributos, no los atributos mismos. Localizar la parte interactiva con el sistema o parte del sistema
Usar una o dos palabras que describan la clase.
7/23/2019 E2 Sesion03 Tarjeta CRC
7/20
Proceso de desarrollo: Clases
Despus de haber identificado las clases, mediante el anlisisde las especificaciones de requerimientos, es necesario llenar
una tarjeta, la cual contiene tres partes:
En la parte superior se coloca el nombre de la clase, al reverso
de la tarjeta se recomienda escribir una breve descripcin delpropsito de la clase.
Se escribe una tarjeta para cada clase encontrada en los
requisitos.
7/23/2019 E2 Sesion03 Tarjeta CRC
8/20
Proceso de desarrollo: Clases
Cuando una clase tiene una superclase o subclasepuede ser representada de la siguiente forma:
7/23/2019 E2 Sesion03 Tarjeta CRC
9/20
Proceso de desarrollo: Responsabilidades
Una responsabilidad es algo que una clase conoce o
hace.
Son todos los servicios que un objeto puede realizar
y que mantiene en un contrato que tiene con otros
objetos. Cabe recordar que el contrato entre 2 clases
representa una lista de servicios. Un servicio puede
realizar una accin o regresar alguna informacin.
Las responsabilidades representan la parte pblica
de los objetos, debido a que un contrato cliente-servidor no se necesita conocer como se hacen las
cosas, sino que cosas se hacen.
7/23/2019 E2 Sesion03 Tarjeta CRC
10/20
Proceso de desarrollo: Responsabilidades
Identificacin de las responsabilidades
Para llevar acabo la identificacin de las
responsabilidades se usan dos fuentes, la
especificacin de requerimientos y las clases que ya
han sido identificadas.
La Especificacin de requerimientos: volver a leer el
documento e identificar los verbos que representan
acciones que un objeto puede tomar y hacer dentro
del sistema.
7/23/2019 E2 Sesion03 Tarjeta CRC
11/20
Proceso de desarrollo: Responsabilidades
Identificacin de las responsabilidades
Las Clases: una vez que se ha analizado y realizado
esta etapa se puede usar la informacin con la que se
cuenta y as poder usar la descripcin de la clase
para poder identificar sus responsabilidades las
cuales deber cumplir el objetivo de la creacin de
dicha clase.
7/23/2019 E2 Sesion03 Tarjeta CRC
12/20
Proceso de desarrollo: Responsabilidades
Recomendaciones para identificar responsabilidades
Preguntar que clases se conocen.
Preguntar que clases se hacen.
Si ya se tiene identificada la responsabilidadpreguntar que clase seguir.
Clases que colaboraran para el llenado de muchas de
sus responsabilidades.
Establecer responsabilidades generales. No permitir informacin duplicada de objetos.
7/23/2019 E2 Sesion03 Tarjeta CRC
13/20
Proceso de desarrollo: Responsabilidades
Identificar clases mediante sus relaciones con otras
clases, es otra forma que existe para identificar las
responsabilidades es mediante las relaciones que hay
entre las clases. Se encuentran tres tipos de relaciones:
Es un tipo de:Esta relacin es un tipo que representa una
relacin de subclase que hereda una super-clase.
Es igual que:Cuando dos clases son anlogas quiere decir que
pueden tener una super-clase comn, lo cual indica tambin
que pueden tener las mismas responsabilidades. Es parte de: Cuando una clase, esta compuesta de otras clases
pero no de su comportamiento.
7/23/2019 E2 Sesion03 Tarjeta CRC
14/20
Proceso de desarrollo: Responsabilidades
Registro de responsabilidadesPor cada tarjeta CRC que se tiene, en la parte inferior izquierda
colocar todas las responsabilidades para dicha clase.
Si la clase tiene muchas responsabilidades, las cuales no pueden ser
mostradas en una sola tarjeta esto es signo de que no hay dominio del
problema.
7/23/2019 E2 Sesion03 Tarjeta CRC
15/20
Proceso de desarrollo: Responsabilidades
Tenemos el siguiente ejemplo:
Pacman
Pacman puede comer FrutasPacman camina sobre Laberinto
Pacman pierde una vida cuando el
Fantasma lo atrapa
7/23/2019 E2 Sesion03 Tarjeta CRC
16/20
Proceso de desarrollo: Colaboraciones
Las colaboraciones representan peticiones de un cliente a unservidor para cumplir la responsabilidad del cliente.
Las colaboraciones representan los contratos que hay entre la
clase cliente y la(s) clase(s) servidor(es).
Para cumplir una responsabilidad no necesariamente debe
existir una colaboracin con otros objetos ya que una misma
clase puede cumplirla, debido a que conoce toda la
informacin para realizarla. Las colaboraciones son
importantes porque demuestran el flujo de control e
informacin durante la ejecucin del sistema, adems que
determinan en un contrato los roles de cada clase.
7/23/2019 E2 Sesion03 Tarjeta CRC
17/20
Proceso de desarrollo: Colaboraciones
Para identificar las colaboraciones es necesarioanalizar como interacta cada clase. Examinar lasresponsabilidades de cada clase para saber si laclase posee todo el conocimiento para cumplir
con su responsabilidad por si misma o requierede alguna otra instancia de clase que contengainformacin que puede ayudar a cumplir con eltrabajo.
7/23/2019 E2 Sesion03 Tarjeta CRC
18/20
Proceso de desarrollo: Colaboraciones
Para identificar colaboraciones, es necesario
responder a las siguientes preguntas para cada
responsabilidad de cada clase.
1. Es la clase capaz de cumplir la responsabilidad
por si misma?
2. Sino, que es necesario hacer?
3. De cul otra clase puede tomar lo que necesita?
7/23/2019 E2 Sesion03 Tarjeta CRC
19/20
Proceso de desarrollo: Colaboraciones
Como cada colaboracin cumple unaresponsabilidad, se obtiene la tarjeta CRC parauna clase que toma el rol de cliente y en ella seescribe al lado derecho de la responsabilidad elnombre de la clase servidor. Si la responsabilidad
requiere para ser cumplida de variascolaboraciones, se escribe el nombre de cadaclase.
7/23/2019 E2 Sesion03 Tarjeta CRC
20/20
Proceso de desarrollo: Colaboraciones
Completando el ejemplo tenemos:
Pacman
Pacman puede comer FrutasPacman camina sobre Laberinto
Pacman pierde una vida cuando el
Fantasma lo atrapa
FrutaLaberinto
Fantasma