Diagrama de clases
Enviado por gerardillo123 • 22 de Noviembre de 2013 • 1.817 Palabras (8 Páginas) • 348 Visitas
Diagrama de clases
Representación de clases 2
Encapsulación 2
Tipos de datos 3
Firma de los métodos 3
Valores predeterminados 4
Atributos y métodos de clase 4
Atributos calculados 4
Asociaciones entre objetos 5
Cardinalidad de las asociaciones 6
Navegación 7
Clases-asociaciones 7
Restricciones sobre asociaciones 7
Información derivada 8
Objetos compuestos 8
Generalización/Especialización 9
Herencia 9
Interfaz 11
Restricciones 12
El diagrama de clases representa los objetos de nuestro sistema informático con sus atributos, métodos y asociaciones que existen entre ellos.
Representación de clases
Los objetos del sistema se representan mediante clases. Una clase está formada por su nombre, sus atributos y sus métodos, tal y como muestra la figura:
• El nombre de la clase se escribe en singular y con la inicial en mayúscula. Este nombre debe ser representativo de los objetos que se van a representar.
• Los atributos describen la estructura del objeto, y contienen información sobre éste. Cada objeto tendrá diferente información, por tanto diferentes valores en sus atributos, pero todos los objetos de una clase tendrán la misma estructura, es decir, los mismos atributos.
• Los métodos describen el comportamiento de los objetos. Cada método es un conjunto de instrucciones que pueden modificar los valores de los atributos, o generar algún resultado.
Encapsulación
La encapsulación consiste en ocultar los atributos y métodos de un objeto de manera que el resto de objetos no los puedan ver. Hay veces en las que algunos atributos y métodos se utilizan de forma interna en el objeto y no deben estar expuestos a los objetos exteriores.
UML ofrece las siguientes posibilidades de encapsulación, según la visibilidad del elemento, y una representación gráfica para cada una de ellas:
Privado - el elemento es visible sólo en la clase
Protegido # el elemento es visible en las subclases de la clase
Empaquetado ~ el elemento es visible en las clases del mismo empaquetado
Público + el elemento es visible para todos
La encapsulación se representa con los símbolos del cuadro anterior precediendo el nombre de los atributos o métodos:
Tipos de datos
En el diagrama de clases debemos especificar el conjunto de posibles valores que puede tomar cada atributo. Estos valores pueden ser valores numéricos, cadenas de caracteres, booleanos, o incluso otras clases de nuestro diagrama (aunque esto no es muy común ni recomendable).
Representaremos los tipos de datos de los atributos de la siguiente manera:
UML nos proporciona los siguientes tipos de datos primitivos:
• Integer: números enteros.
• String: texto o cadena de caracteres.
• Boolean: tipo de dato lógico, acepta los valores true/false.
• UnlimitedNatural: número positivos, de 0 a infinito.
Firma de los métodos
Los métodos pueden recibir parámetros y devolver un resultado. También tendremos que especificar el tipo de datos de los parámetros y los resultados.
Al conjunto formado por el nombre del método, sus parámetros con su nombre y su tipo, y el tipo de resultado se le conoce como firma del método.
En el ejemplo anterior tenemos la firma de dos métodos: el primero recibe dos parámetros, param1 de tipo Integer y param2 de tipo String, y devuelve un resultado de tipo Integer. El segundo método no recibe parámetros ni genera ningún resultado.
Valores predeterminados
Es posible dar valores predeterminados a los atributos y a los parámetros de los métodos. Estos valores son los que tomarán al crear el objeto. La representación es la siguiente:
Atributos y métodos de clase
Cada objeto contiene un valor específico para cada uno de sus atributos. Por tanto, este valor no se comparte con el resto de objetos. Si queremos usar valores que sean compartidos por todos los objetos de una misma clase utilizaremos los atributos de clase.
Los atributos de clase se representan igual que los atributos de los objetos, pero subrayados. No es obligatorio, pero sí muy recomendable asignar un valor predeterminado a los atributos de clase.
También podemos crear métodos de clase. Estos métodos sólo manipulan los atributos de clase.
(*) Los atributos y métodos de clase no se heredan.
Atributos calculados
En UML podemos tener atributos cuyo valor viene determinado por el valor de otros atributos. Estos atributos se representan mediante su nombre precedidos por el signo / y van seguidos de una función que expresa cómo se calcula su valor.
Asociaciones entre objetos
Las asociaciones sirven para representar los vínculos que existen entre objetos. La asociación tiene un nombre, y se representa mediante una línea que une las dos clases vinculadas.
Para señalar el sentido de lectura del nombre de la asociación con respecto al nombre de las clases, éste puede precederse del signo < o seguirse del signo >.
Los extremos de una asociación también pueden recibir un nombre, que representará la función que desempeñan en la asociación los objetos. En las funciones podemos especificar su tipo de encapsulamiento (pública, privada, protegida o empaquetada). Esto es así ya que la función la podemos entender como un atributo cuyo tipo sería la clase situada en el otro extremo de la asociación.
Las siguientes asociaciones serían equivalentes:
UML nos permite crear asociaciones ternarias y superiores, de la siguiente forma:
También podemos hacer asociaciones unarias, es decir, en las que sólo interviene una clase, que se relaciona con ella misma. Este tipo de asociación se llama reflexiva. En este tipo de asociación es preferible poner los nombres de las funciones que desempeña la clase, en lugar del nombre de la asociación.
Cardinalidad de las asociaciones
Las cardinalidades se ponen en los extremos de la asociación. La cardinalidad situada a la derecha indica a cuántos objetos de la clase de la derecha está vinculado un objeto de la clase de la izquierda.
Las cardinalidades las podemos representar mediante un valor o con un intervalo, especificando la cardinalidad mínima y la máxima. Tenemos las siguientes opciones, con su especificación:
0..1 Cero o una
...