Desarrollo de Proyecto de software
nop16 de Mayo de 2013
4.349 Palabras (18 Páginas)566 Visitas
DIRECCIÓN GENERAL DE EDUCACIÓN SUPERIOR TECNOLÓGICA
INSTITUTO TECNOLOGICO DE ACAPULCO
“Educación Tecnológica con compromiso social”
INGENIERIA EN SISTEMAS COMPUTACIONALES
DIAGRAMAS DE CLASES, INTERACCIÓN Y DE ESTADOS.
Desarrollo de Proyecto de software
Noé de la Cruz Montes de Oca
Maestro: Cesar Augusto Sebastián Gómez
26 de abril de 2013
Diagramas de clases 3
Perspectivas 4
Clases 4
Compartimento del nombre 5
Compartimento de la lista de atributos 5
Relaciones en un diagrama de clases 6
• Relación de asociación 7
• Relación de dependencia 7
• Relación de generalización 7
Asociación 7
• Nombre 7
• Rol 7
• Multiplicidad 8
• Restricciones 8
Tipos de asociación 8
1. Asociación normal 8
2. Agregación 9
• Agregación normal 9
• Agregación compartida 9
• Agregación de composición 9
Ejemplos de asociaciones normales 10
Ejemplos de agregaciones 11
Dependencia 11
• bind 12
• derive 12
friend 12
• powertype 12
• refine 13
Ejemplos de dependencias 13
Diagramas de interacción 14
Diagramas de secuencia 16
Diagrama de colaboración 17
Enfatiza la organización estructural de los objetos que envían y reciben mensajes. Gráficamente, es una colección de vértices y arcos. 17
Para hacer un diagrama de secuencia 17
Para hacer un diagrama de colaboración 18
Diferencias entre los diagramas se secuencia y colaboración Diagrama de secuencia: 18
Diagrama de colaboración: 18
Usos comunes 18
1. Para modelar flujos de control por orden de tiempo 19
2. Para modelar flujos de control por organización 19
Modelando flujos de control por orden de tiempo 19
Modelando flujos de control por organización 20
Ingeniería hacia delante (creación de código desde un modelo) 21
Ingeniería inversa (creación de un modelo desde código) 22
Diagramas de estado 22
Casos de uso reales 26
Diagramas de colaboración 26
Bibliografía 31
Diagramas de clases
Los diagramas de clases se utilizan para modelar la visión estática de un sistema. Esta visión soporta los requisitos funcionales del sistema, en concreto, los servicios que el sistema debería proporcionar a sus usuarios finales. Normalmente contienen: clases, interfaces y relaciones entre ellas: de asociación, de dependencia y/o de generalización.
Los diagramas de clases también pueden contener a paquetes o subsistemas, que se usan para agrupar elementos del modelo en partes más grandes (por ejemplo, paquetes que a su vez contienen a varios diagramas de clases).
Al igual que otros diagramas, en los diagramas de clases pueden aparecer notas explicativas y restricciones.
Perspectivas
Según Fowler, hay tres perspectivas que podemos tener en cuenta a la hora de dibujar los diagramas de clases (o cualquier otro tipo de diagrama, pero es más evidente en los diagramas de clases):
• Conceptual: Estamos dibujando un diagrama que representa los conceptos del dominio del sistema. Estos conceptos se relacionarán de forma natural con las clases que los implementen, pero a menudo no hay una aplicación directa. Es decir, el modelo se dibuja sin tener en cuenta el software que lo implementa y generalmente es independiente del lenguaje de programación.
• Análisis: Desde el punto de vista del software, nos fijamos en las interfaces del software, no en su implementación. Es decir, miramos los tipos más que las clases.
El desarrollo orientado a objetos pone mucho énfasis en la diferencia entre tipo y clase, pero luego no se aplica en la práctica. Es importante separar interfaz (tipo) de implementación (clase). Muchos lenguajes de programación no lo hacen y los métodos, influidos por ellos, tampoco. Esto está cambiando, pero no lo suficientemente rápido (Java y CORBA tendrán algo de influencia aquí). Los tipos representan una interfaz que puede tener muchas implementaciones diferentes debidas, por ejemplo, a las características del entorno de instalación.
• Implementación: Estamos poniendo la implementación al descubierto, pues realmente tenemos clases. Es la perspectiva más utilizada, pero de todas formas la perspectiva del análisis se considera la mejor de las tres.
Clases
Las clases describen un conjunto de objetos con características y comportamiento idénticos, es decir, objetos que comparten los mismos atributos, operaciones y relaciones.
Las clases se representan gráficamente por medio de un rectángulo con tres divisiones internas. Los tres compartimentos alojan el nombre de la clase, sus atributos y sus operaciones, respectivamente. En muchos diagramas se omiten los dos compartimentos inferiores. Incluso cuando están presentes, no muestran todos los atributos y todas las operaciones. Por ejemplo, en la Figura 3.1 viene representada la clase Ventana de tres formas diferentes: sin detalles, detalles en el ámbito de análisis y detalles en el ámbito de implementación.
Compartimento del nombre
Cada clase debe tener un nombre que la distinga de las otras clases. Dicho nombre puede ser un nombre simple (nombre de la clase) o un nombre compuesto (nombre del paquete que contiene a la clase :: nombre de la clase).
En el ejemplo de la Figura 3.1 Ventana es un nombre simple de clase; pero si estuviese contenida en el paquete Gráficos, entonces el nombre compuesto sería Gráficos::Ventana. Otra forma de representar dicho nombre compuesto es escribir dentro de este compartimento primero el nombre del paquete (en este caso, «Gráficos») y debajo el nombre de la clase contenida en él.
Compartimento de la lista de atributos
Los atributos describen las características propias de los objetos de una clase. La sintaxis completa de un atributo es:
[visibilidad] nombre [multiplicidad] [: tipo] [= valor-inicial]
[{lista-propiedades}]
donde visibilidad puede ser:
• + (pública): que hace el atributo visible a todos los clientes de la clase;
• - (privada): que hace el atributo visible sólo para la clase;
• # (protegida): que hace el atributo visible a las subclases de la clase.
Si un atributo no tiene asignada ninguna visibilidad, quiere decir que la visibilidad no está definida (no hay visibilidad por defecto). Donde nombre es una cadena de texto que representa el nombre del atributo; donde tipo es un tipo de atributo típico: string, boolean, integer, real, double, point, area y enumeration. Se llaman tipos primitivos. También pueden ser específicos de un cierto lenguaje de programación, aunque se puede usar cualquier tipo, incluso otras clases. Donde multiplicidad es un indicador de la multiplicidad del atributo, que va encerrado entre corchetes.
La ausencia de multiplicidad significa que tiene exactamente valor 1, mientras que una multiplicidad de 0..1 proporciona la posibilidad de valores nulos (la ausencia de un valor). Donde valor-inicial es una expresión con el valor inicial que va a contener el atributo cuando se crea de nuevo el objeto; donde lista-propiedades es una lista que contiene los valores permitidos en un atributo. Se utiliza para especificar tipos enumerados tales como color, estado, etc
Ciertos atributos pueden ser visibles globalmente, en toda la amplitud léxica de la clase. Para ello se definen como atributos cuyo ámbito es la clase (class-scope attributes), llamados también variables de clase (class variables), y se representan como los objetos por un nombre subrayado. La notación se justifica por el hecho de que una variable de clase aparece como un objeto compartido por las instancias de una clase.
Relaciones en un diagrama de clases
Los diagramas de clases están compuestos por clases y por relaciones entre ellas. Las relaciones que se pueden usar son:
• Relación de asociación
Una asociación es una conexión entre clases, una conexión semántica (enlace) entre los objetos de dichas clases. Un tipo especial de asociación es la relación de agregación.
• Relación de dependencia
Una dependencia es una relación entre elementos, uno independiente y otro dependiente. Un cambio en el elemento independiente afectará al elemento dependiente.
• Relación de generalización
Una generalización es una relación entre un elemento más general y otro más específico. El elemento más específico puede contener sólo información adicional. Una instancia (un objeto es una instancia de una clase) del elemento más específico se puede usar si el elemento más general lo permite.
Asociación
Una asociación es una relación estructural que especifica que los objetos de una clase están conectados con los objetos de otra. Cuando una asociación es una conexión semántica entre los objetos de dos clases, se llama asociación binaria. Aunque no es lo común, se pueden tener asociaciones que conecten más de dos clases;
...