Exportar (0) Imprimir
Expandir todo
Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

Diagramas de clases de UML: Instrucciones

En Visual Studio Ultimate, puede utilizar un diagrama de clases de UML para describir los tipos de datos y sus relaciones con independencia de su implementación. El diagrama se utiliza para que la atención se centre en los aspectos lógicos de las clases en lugar de en su implementación.

Para crear un diagrama de clases de UML, en el menú Arquitectura, elija Nuevo diagrama.

Nota Nota

En este tema se analizan los diagramas de clases de UML. Existe otro tipo de diagrama de clases, que se crea y utiliza para visualizar el código del programa. Vea el tema sobre cómo diseñar y ver clases y tipos.

Los diagramas de clases de UML pueden utilizarse para una gran variedad de propósitos:

  • Para proporcionar una descripción de los tipos que se utilizan en un sistema y se pasan entre sus componentes que no tenga nada que ver con su implementación.

    Por ejemplo, en el código .NET, el tipo Pedido de menú podría implementarse en la capa del negocio; en XML, en las interfaces entre los componentes; en SQL, en la base de datos, y en HTML, en la interfaz de usuario. Aunque estas implementaciones tengan un nivel de detalle diferente, la relación entre el tipo Pedido de menú y otros tipos, como Menú y Pago, es siempre la misma. El diagrama de clases de UML permite analizar estas relaciones con independencia de las implementaciones.

  • Para clarificar el glosario de términos que se utiliza en la comunicación entre la aplicación y los usuarios y en las descripciones de las necesidades de los usuarios. Vea Crear modelos de los requisitos de los usuarios.

    Por ejemplo, piense en los casos de usuario, los casos de uso y otras descripciones de los requisitos de la aplicación de un restaurante. En este tipo de descripción, encontrará términos como Menú, Pedido, Comida, Precio, Pago, etc. Puede dibujar un diagrama de clases de UML en el que se definan las relaciones entre estos términos. De este modo, se reducirá el riesgo de inconsistencias en las descripciones de los requisitos, así como en la interfaz de usuario y los documentos de ayuda.

Dd409416.collapse_all(es-es,VS.120).gifRelación con otros diagramas

Un diagrama de clases de UML normalmente se crea junto con otros diagramas de modelado para proporcionar descripciones de los tipos que utilizan. En cada caso, la representación física de los tipos no está implícita en ninguno de los diagramas.

Si dibujó:

Utilice un diagrama de clases de UML para describir:

Diagrama de actividades

Tipos de datos que pasan por un nodo de objeto.

Tipos de terminales de entrada (Input Pin) y de salida (Output Pin) de nodos de parámetros de actividad.

Vea Diagramas de actividades UML: Instrucciones.

Diagrama de secuencia

Tipos de parámetros y valores devueltos de mensajes.

Tipos de líneas de vida. La clase de una línea de vida debe incluir las operaciones de todos los mensajes que puede recibir.

Vea Diagramas de secuencia de UML: Instrucciones.

Diagrama de componentes

Interfaces de componentes, con un listado de sus operaciones.

Vea Diagramas de componentes de UML: Instrucciones.

Diagrama de casos de uso

Tipos mencionados en las descripciones de los objetivos y los pasos de un caso de uso.

Vea Diagramas de casos de uso de UML: Instrucciones.

Para obtener más información de referencia sobre los elementos de los diagramas de clases de UML, vea Diagramas de clases de UML: Referencia.

Nota Nota

En Editar modelos y diagramas UML se describen en detalle los pasos para crear diagramas de modelado.

Para crear un diagrama de clases de UML

  1. En el menú de Arquitectura, elija Nuevo diagrama.

  2. En Plantillas, elija Diagrama de clases UML.

  3. Especifique un nombre para el diagrama.

  4. En Agregar a proyecto de modelado, seleccione un proyecto de modelado existente de la solución o Crear un nuevo proyecto de modelado y, a continuación, elija Aceptar.

    En el cuadro de herramientas Diagrama de clasesUML aparece un nuevo diagrama de clases. El cuadro de herramientas contiene las relaciones y elementos necesarios.

Para dibujar un diagrama de clases de UML

  1. Para crear un tipo, elija la herramienta Clase, Interfaz o Enumeración del cuadro de herramientas y, a continuación, haga clic en un espacio en blanco del diagrama. (Si no puede ver el cuadro de herramientas, presione CTRL+ALT+X).

    También puede crear tipos basados en los tipos del código. Puede arrastrar tipos del Explorador de soluciones, el Explorador de arquitectura o los gráficos de dependencia hasta el diagrama. Vea Crear diagramas de clases UML a partir del código.

  2. Para agregar atributos u operaciones a los tipos o agregar literales a una enumeración, elija el título Atributos, Operaciones o Literales del tipo y presione ENTRAR.

    Puede escribir una firma, como por ejemplo f(x:Boolean):Integer. Consulte Atributos y operaciones.

    Para agregar rápidamente varios elementos, presione ENTRAR dos veces al final de cada elemento. Puede utilizar las teclas de dirección para subir y bajar la lista.

  3. Para expandir o contraer un tipo, elija el icono de botón de contenido adicional situado en la parte superior izquierda. También puede expandir y contraer la sección Atributos y Operaciones de una clase o interfaz.

  4. Para dibujar vínculos de asociación, herencia o dependencia entre los tipos, haga clic en la herramienta adecuada, a continuación, en el tipo de origen y, por último, en el tipo de destino.

  5. Para crear tipos en un paquete, cree un paquete mediante la herramienta Paquete y, a continuación, cree los tipos y paquetes nuevos en el paquete. También puede copiarlos con el comando Copiar y pegarlos después en un paquete.

  6. Cada diagrama es una vista de un modelo que comparten otros diagramas del mismo proyecto. Para ver una vista de árbol del modelo completo, elija Ver, Otras ventanas, Explorador de modelos UML.

Hay tres tipos estándar de clasificadores disponibles en el cuadro de herramientas. En este documento, se les denomina tipos.

Clase, enumeración e interfaz
  • Utilice las clases (1) para representar datos o tipos de objetos para la mayor parte de los propósitos.

  • Utilice las interfaces (2) en contextos en los que es necesario diferenciar entre interfaces puras y clases concretas que tienen implementaciones internas. Esta diferencia resulta útil cuando el propósito del diagrama es describir una implementación de software. Resulta menos útil, sin embargo, cuando se modelan datos pasivos o cuando se definen contextos que se utilizan para describir los requisitos del usuario.

  • Utilice una enumeración (3) para representar un tipo que tiene un número limitado de valores literales, por ejemplo Stop y Go.

    • Agregue los valores literales a la enumeración. Asigne a cada uno un nombre diferente.

    • Si lo desea, también puede proporcionar un valor numérico para cada valor literal. Abra el menú contextual del literal de la enumeración, elija Propiedades y, a continuación, escriba un número en el campo Valor de la ventana Propiedades.

Asigne un nombre único a cada tipo.

Dd409416.collapse_all(es-es,VS.120).gifObtener tipos de otros diagramas

Puede hacer que los tipos de otro diagrama aparezcan en su diagrama de clases de UML.

Otro tipo de diagrama

Cómo obtener tipos del otro diagrama

Diagrama de clases de UML

Puede hacer que una clase aparezca en varios diagramas de clases de UML. Cuando haya creado una clase en un diagrama, arrastre la clase del Explorador de modelos UML al otro diagrama.

Esto resulta útil si desea que cada diagrama se concentre en un grupo de relaciones determinado.

Por ejemplo, puede mostrar las asociaciones entre un Pedido de menú y el Menú del restaurante en un diagrama y las asociaciones entre Pedido de menú y Pago en otro diagrama.

Diagrama de componentes

Si ha definido interfaces en los componentes de un diagrama de componentes, puede arrastrar una interfaz del Explorador de modelos UML al diagrama de clases. En el diagrama de clases, puede definir los métodos que la interfaz incluye.

Vea Diagramas de componentes de UML: Instrucciones.

Diagrama de secuencia de UML

Puede crear clases e interfaces a partir de las líneas de vida de un diagrama de secuencia y, a continuación, arrastrar la clase del Explorador de modelos UML a un diagrama de clases de UML. Cada línea de vida de un diagrama de secuencia representa una instancia de un objeto, componente o actor.

Para crear una clase a partir de una línea de vida, abra el menú contextual de la línea de vida y elija Crear clase o Crear interfaz. Vea Diagramas de secuencia de UML: Instrucciones.

Código de programa

Puede representar tipos del código en el modelo. Arrastre clases, interfaces o enumeraciones del Explorador de arquitectura o de los gráficos de dependencias hasta un diagrama de clases UML.

Los tipos que arrastra aparecerán en el diagrama. También se agregarán tipos dependientes al modelo. Cuando un tipo UML se ha creado de esta manera, puede hacer doble clic en este para abrir el código fuente. Vea Crear diagramas de clases UML a partir del código.

Nota Nota
El código y el modelo no se mantienen sincronizados. Puede actualizar el diagrama para discutir las propuestas de cambio sin afectar al código. Los cambios siguientes en el código no afectarán automáticamente al diagrama a menos que arrastre de nuevo los tipos al diagrama.

Un atributo (4) es un valor con nombre que todas las instancias de un tipo pueden tener. Cuando se obtiene acceso a un atributo, no se modifica el estado de la instancia.

Una operación (5) es un método o función que las instancias del tipo pueden realizar. Puede devolver un valor. Si su propiedad isQuery es true, no se puede modificar el estado de la instancia.

Para agregar un atributo u operación a un tipo, abra el menú contextual del tipo, elija Agregar y, a continuación, elija Atributo u Operación.

Para ver sus propiedades, abra el menú contextual del atributo u operación, y elija Propiedades. Las propiedades aparecen en la ventana Propiedades.

Para ver las propiedades de los parámetros de una operación, en la propiedad Parameters, elija [...]. Aparece un nuevo cuadro de diálogo Propiedades.

Para obtener información detallada sobre todas las propiedades que puede establecer, consulte:

Dd409416.collapse_all(es-es,VS.120).gifTipos de atributos y operaciones

Los tipos de atributo u operación y los tipos de parámetro pueden ser uno de los que se detallan a continuación:

  • (ninguno): un tipo puede dejarse sin especificar en la firma omitiendo el signo de dos puntos anterior (:).

  • Uno de los tipos primitivos estándar: Booleano, Entero, Cadena.

  • Un tipo que esté definido en el modelo.

  • Un valor parametrizado de un tipo de plantilla, con el formato Plantilla<Parámetro>. Vea Tipos de plantilla.

También puede escribir el nombre de un tipo que aún no haya definido en el modelo. El nombre aparecerá en Tipos sin especificar en el Explorador de modelos UML.

Nota Nota

Si posteriormente define una clase o interfaz con ese nombre en el modelo, los atributos y operaciones anteriores todavía harán referencia al elemento en Tipos sin especificar. Si desea cambiarlos para que hagan referencia a la nueva clase, deberá visitar cada atributo u operación y restablecer el tipo, seleccionando la nueva clase en el menú desplegable.

Dd409416.collapse_all(es-es,VS.120).gifTipos múltiples

Puede establecer la multiplicidad de cualquier tipo de parámetro, atributo u operación.

Los valores permitidos son los siguientes:

Multiplicidad

El atributo, parámetro o valor devuelto contiene:

[1]

Un valor del tipo especificado. Este es el valor predeterminado.

[0..1]

Null o un valor del tipo especificado.

[*]

Una colección con un número de instancias del tipo especificado.

[1..*]

Una colección de al menos una instancia del tipo especificado.

[n..m]

Una colección de entre n y m instancias del tipo especificado.

Si la multiplicidad es mayor que 1, también puede establecer estas propiedades:

  • IsOrdered: si es true, la colección tiene un orden definido.

  • IsUnique: si es true, no hay ningún valor duplicado en la colección.

Dd409416.collapse_all(es-es,VS.120).gifVisibilidad

La visibilidad indica si se puede obtener acceso al atributo u operación fuera de la definición de clase. Los valores permitidos son los siguientes:

Nombre

Forma abreviada

Significado

Public

+

Accesible desde todos los demás tipos.

Private

-

Solamente se puede obtener acceso a la definición interna de este tipo.

Package

~

Solamente se puede obtener acceso dentro del paquete que contiene este tipo y en los paquetes que lo importan explícitamente. Vea Definir espacios de nombres y paquetes.

Protected

#

Solamente se puede obtener acceso a este tipo y sus tipos heredados. Vea Herencia.

Dd409416.collapse_all(es-es,VS.120).gifEstablecer la firma de un atributo u operación

La firma de un atributo u operación es una colección de propiedades entre las que se incluyen la visibilidad, el nombre, los parámetros (en las operaciones) y el tipo.

Puede escribir directamente una firma en el diagrama. Haga clic en el atributo u operación para seleccionarlo y, a continuación, vuelva a hacer clic.

Escriba la firma con el formato:

visibility attribute-name : Type

O bien

visibility operation-name (parameter1 : Type1, ...) : Type

Por ejemplo:

+ AddItem (item : MenuItem, quantity : Integer) : Boolean

Utilice la forma abreviada de visibilidad. El valor predeterminado es + (public).

Los tipos pueden ser tipos definidos en el modelo, tipos estándar, como Entero o Cadena, o el nombre de un nuevo tipo que no se haya definido todavía.

NotaNota

Si escribe un nombre sin tipo en una lista de parámetros, especificará el nombre del parámetro, en lugar de su tipo. En este ejemplo, MenuItem e Integer resultan ser los nombres de dos parámetros con tipos no especificados:

AddItem(MenuItem, Integer) /* parameter names, not types! */

Para establecer la multiplicidad de un tipo en una firma, escriba la multiplicidad entre corchetes tras el nombre de tipo, por ejemplo:

+ AddItems (items : MenuItem [1..*])
+ MenuContent : MenuItem [*]

Si el atributo u operación es estático, su nombre aparecerá subrayado en la firma. Si es abstracto, el nombre aparecerá en cursiva.

Sin embargo, las propiedades Is Static e Is Abstract solo pueden establecerse en la ventana Propiedades.

Dd409416.collapse_all(es-es,VS.120).gifFirma completa

Al modificar la firma de un atributo u operación, algunas propiedades adicionales pueden aparecer al final de la línea y después de cada parámetro. Aparecen entre llaves {...}. Puede editar o agregar estas propiedades. Por ejemplo:

+ AddItems (items: MenuItem [1..*] {unique, ordered})
+ GetItems (filter: String) : MenuItem [*] {ordered, query}

Estas propiedades son las siguientes:

En la firma

Propiedad

Significado

unique

Is Unique

No hay valores duplicados en la colección. Se aplica a tipos cuya multiplicidad es mayor que 1.

ordered

Is Ordered

La colección es una secuencia. Si es false, no está definido el primer elemento. Se aplica a tipos cuya multiplicidad es mayor que 1.

query

Is Query

La operación no cambia el estado de la instancia. Solo se aplica a las operaciones.

/

Is Derived

El atributo se calcula a partir de los valores de otros atributos o asociaciones.

"/" precede al nombre de un atributo. Por ejemplo:

/TotalPrice: Integer

Normalmente, la firma completa solamente aparece en el diagrama mientras se está editando. Al finalizar la edición, las propiedades adicionales quedan ocultas. Si desea ver la firma completa en todo momento, abra el menú contextual del tipo y, a continuación, elija Mostrar signatura completa.

Utilice una asociación para representar cualquier tipo de vinculación entre dos elementos, con independencia del modo en que esta vinculación se implemente en el software. Puede utilizar, por ejemplo, una asociación para representar un puntero en C#, una relación de una base de datos o una referencia cruzada que asocie una parte de un archivo XML con otra. Puede representar una asociación entre objetos en el mundo real, como la tierra y el sol. La asociación no indica cómo se representa el vínculo, solo que existe la información.

Dd409416.collapse_all(es-es,VS.120).gifPropiedades de una asociación

Después de crear una asociación, establezca sus propiedades. Abra el menú contextual de la asociación y, a continuación, elija Propiedades.

Además de las propiedades de toda la asociación, cada rol, es decir, cada extremo de la asociación, tiene algunas propiedades específicas. Para verlas, expanda las propiedades First Role y Second Role.

Algunas propiedades de cada uno de los roles pueden verse directamente en el diagrama. Son las siguientes:

  • El nombre del rol. Aparece en el extremo correspondiente de la asociación del diagrama. Se puede especificar en el diagrama o en la ventana Propiedades.

  • Multiplicity, cuyo valor predeterminado es 1. También aparece en el diagrama situado junto al extremo correspondiente de la asociación.

  • Aggregation. Aparece en un extremo del conector y tiene forma de diamante. Puede utilizarse para indicar que las instancias del rol que se están agregando poseen o contienen instancias del otro rol.

  • Is Navigable. Si es true solamente en uno de los roles, aparece una flecha en la dirección navegable. Puede utilizarse para indicar la navegabilidad de vínculos y relaciones de base de datos en el software.

Para obtener todos los detalles sobre estas y otras propiedades, vea Propiedades de las asociaciones de diagramas de clases de UML.

Dd409416.collapse_all(es-es,VS.120).gifNavegabilidad

Cuando se dibuja una asociación, tiene una flecha en un extremo, lo que significa que la asociación es navegable en esa dirección. Esto resulta útil si el diagrama de clases representa las clases de software y las asociaciones representan punteros o referencias. Sin embargo, cuando se usa un diagrama de clases para representar entidades y relaciones o conceptos de negocio, es menos pertinente representar la navegabilidad. En este caso, podría ser preferible dibujar las asociaciones sin flechas. Puede hacerlo si establece la propiedad Is Navigable en ambos extremos de la asociación en true. Para que sea más fácil, puede descargar el ejemplo de código de modelado de dominio UML.

Dd409416.collapse_all(es-es,VS.120).gifAtributos y asociaciones

Una asociación es una manera gráfica de mostrar un atributo. Por ejemplo, en lugar de crear una clase Restaurante con un atributo de tipo Menú, puede dibujar una asociación entre Restaurante y Menú.

Cada nombre de atributo se transforma en un nombre de rol. Aparece en el extremo opuesto al tipo propietario de la asociación. Observe, por ejemplo, myMenu en la ilustración.

Por lo general, resulta más conveniente utilizar los atributos solo en aquellos tipos que no se van a dibujar en el diagrama, como los tipos primitivos.

Atributos y asociación equivalentes

Utilice la herramienta Herencia para crear las relaciones siguientes:

  • Una relación de generalización entre un tipo especializado y un tipo general.

    O bien

  • Una relación de realización entre una clase y una interfaz que implementa.

No se pueden crear bucles en las relaciones de herencia.

Dd409416.collapse_all(es-es,VS.120).gifGeneralización

La generalización significa que el tipo que se especializa o el tipo derivado heredan los atributos, las operaciones y las asociaciones del tipo general o tipo base.

El tipo general aparece en el extremo de la relación con la punta de flecha.

Las operaciones y atributos heredados no suelen mostrarse en los tipos especializados. Sin embargo, pueden agregarse operaciones heredadas a la lista de operaciones del tipo especializado. Esto resulta útil si desea invalidar algunas de las propiedades de una operación en el tipo especializado o si desea indicar que el código que se va a implementar debería hacerlo.

Para invalidar la definición de una operación en un tipo especializado

  1. Haga clic en la relación de generalización.

    Aparecerá resaltada junto a una etiqueta de acción.

  2. Haga clic en la etiqueta de acción y, a continuación, en Invalidar operaciones.

    Aparece el cuadro de diálogo Invalidar operaciones.

  3. Seleccione las operaciones que desea que aparezcan en el tipo especializado y, a continuación, haga clic en Aceptar.

Las operaciones que seleccionó aparecen ahora en el tipo especializado.

Dd409416.collapse_all(es-es,VS.120).gifRealización

La realización significa que una clase implementa los atributos y operaciones especificados por la interfaz. La interfaz se encuentra en el extremo del conector que tiene la flecha.

Al crear un conector de realización, las operaciones de la interfaz se replican automáticamente en la clase que se realiza. Si se agregan nuevas operaciones a una interfaz, estas operaciones se replicarán en las clases que se realizan.

Después de crear una relación de realización, puede transformarla en una notación circular. Haga clic con el botón secundario del mouse en la relación y elija Mostrar como círculo.

De este modo, puede mostrar las interfaces que una clase implementa sin llenar los diagramas de clases con vínculos de realización. También puede mostrar la interfaz y las clases que la realizan en diagramas independientes.

Realización mostrada con conector y círculo

Puede definir un tipo genérico o un tipo de plantilla que otros tipos o valores puedan parametrizar.

Por ejemplo, puede crear un Diccionario genérico parametrizado por tipos de valor y clave:

Clase de plantilla con dos parámetros

Para crear un tipo de plantilla

  1. Cree una clase o interfaz. Este objeto pasará a ser el tipo de plantilla. Asígnele el nombre apropiado, por ejemplo Dictionary.

  2. Abra el menú contextual del nuevo tipo y, a continuación, elija Propiedades.

  3. En la ventana Propiedades, en el campo Template Parameters, haga clic en [...].

    Aparecerá el cuadro de diálogo Editor de colecciones de parámetros de plantillas.

  4. Elija Agregar.

  5. Establezca la propiedad de nombre en el nombre de un parámetro del tipo de plantilla, por ejemplo, Key.

  6. Establezca Tipo de parámetro. El valor predeterminado es Clase.

  7. Si desea que el parámetro acepte solamente clases derivadas de una clase base determinada, establezca Valor restringido en la clase base que desee.

  8. Agregue tantos parámetros como necesite y, a continuación, elija Aceptar.

  9. Agregue atributos y operaciones al tipo de plantilla del mismo modo que lo haría en otras clases.

    Puede utilizar parámetros cuyo tipo sea Clase, Interfaz o Enumeración en la definición de atributos y operaciones. Por ejemplo, si utiliza las clases de parámetros Key y Value, puede definir esta operación en Dictionary:

    Get(k : Key) : Value

    Puede utilizar un parámetro cuyo tipo Entero sea un límite de multiplicidad. Por ejemplo, el valor entero máximo de un parámetro podría utilizarse para definir la multiplicidad de un atributo como [0..max].

Una vez creados los tipos de plantilla, puede utilizarlos para definir los enlaces de la plantilla:

Clase enlazada de la plantilla de diccionario

Para utilizar un tipo de plantilla

  1. Cree un nuevo tipo, por ejemplo, AddressTable.

  2. Abra el menú contextual del nuevo tipo y, a continuación, elija Propiedades.

  3. En la propiedad Template Binding, seleccione el tipo de plantilla, por ejemplo Dictionary, en la lista desplegable.

  4. Expanda la propiedad Template Binding.

    Aparecerá una fila para cada parámetro del tipo de plantilla.

  5. Establezca cada parámetro en un valor apropiado. Por ejemplo, establezca el parámetro Key en una clase denominada Name.

Puede ver los paquetes en un diagrama de clases de UML. Un paquete es un contenedor de otros elementos del modelo. Puede crear cualquier elemento dentro de un paquete. En el diagrama, los elementos incluidos en el paquete se desplazarán al mover el paquete.

Puede utilizar el control de expandir y contraer para ocultar o mostrar el contenido del paquete.

Vea Definir espacios de nombres y paquetes.

Para iniciar la implementación de las clases en un diagrama de clases UML, puede generar código C# o personalizar plantillas para la generación de código. Para iniciar la generación de código usando las plantillas de C# proporcionadas:

  • Abra el menú contextual del diagrama o un elemento, elija Generar código y establezca las propiedades necesarias.

    Para obtener más información sobre cómo establecer estas propiedades y personalizar las plantillas proporcionadas, consulte Generar código a partir de diagramas de clases UML.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2015 Microsoft