Qué es un diagrama de clases
Un diagrama de clases es una herramienta para comunicar el diseño de un programa que se creó para orientar objetos y que permite modelar relaciones entre diferentes entidades.
En UML, una clase se representa con un rectángulo que posee tres divisiones, nombre de la clase, abributos que tiene y mensajes que entiende.
En el primero de los cuadros se anota el nombre de la clase. Si es abstracta, se escribe en letra cursiva o también se utiliza un estereotipo como < > arriba del nombre de la clase.
En la segunda parte van los atributos o variables de instancia; las variables de clase van subrayados.
En el último cuadro se escriben las operaciones, es decir, los mensajes que puede entender. Lo importante es documentar los mensajes más relevantes y no todos los mensajes de un solo objeto.
Debemos tener en cuenta que una clase que no tiene comportamiento no está comunicando qué tipo de rol cumple en la solución, así que o está faltando definir qué es lo que le puedo pedir o entonces esa clase no debería estar en el diagrama.
Diagrama de clases: relaciones entre objetos
Comenzamos con la Relación USA, que incluye dependencia. Uno de los elementos usa o depende del otro cuando. Por ejemplo, el objeto de clase A recibe o devuelve como un parámetro de alguno de sus métodos a un objeto de clase B.
Se da la situación de si el objeto de clase A instancia un objeto de clase B. Viene con la condición de que no lo almacena como variable de instancia y solamente vive como variable local en el contexto de un método.
Esta relación indica que los dos elementos colaboran entre sí pero en una relación casual, débil y tiene un contexto temporal que no trasciende más allá de una operación. Sin embargo, sabemos que los cambios en la clase B podrían impactar en alguna medida en la clase A.
En la Relación CONOCE tenemos la asociación. Uno de los elementos conoce al otro, almacenándolo como variable de instancia. Puede definirse una etiqueta que indica el rol que cumple dicha relación y en cada extremo de la asociación puede agregarse información.
Un nombre de rol y flechas de navegación, que determinan el conocimiento (navegabilidad), desde un objeto hacia el otro.
Añade multiplicidad. Indica cuántos objetos de una clase se relacionan con la otra. La multiplicidad se puede indicar con un rango (0..1.. 2..5); un rango sin cota (0..*. 1..*); un valor (1) o una serie de valores (1, 3, 5).
En las asociaciones existe una relación mucho más fuerte que en las llamadas dependencias (uso) entre ambos elementos. El conocimiento implica que la colaboración se excede del marco temporal de una operación, aunque los objetos sigan teniendo objetivos diferentes.
Clases
Una clase describe un conjunto de objetos con propiedades (atributos) similares y un comportamiento común. Los objetos son instancias de las clases.
No existe un procedimiento inmediato que permita localizar las clases del diagrama de clases. Éstas suelen corresponderse con sustantivos que hacen referencia al ámbito del sistema de información y que se encuentran en los documentos de las especificaciones de requisitos y los casos de uso.
Dentro de la estructura de una clase se definen los atributos y las operaciones o métodos:
- Los atributos de una clase representan los datos asociados a los objetos instanciados por esa clase.
- Las operaciones o métodos representan las funciones o procesos propios de los objetos de una clase, caracterizando a dichos objetos.
El diagrama de clases permite representar clases abstractas. Una Clase abstracta es una clase que no puede existir en la realidad, pero que es útil conceptualmente para el diseño del modelo orientado a objetos. Las clases abstractas no son instanciables directamente sino en sus descendientes. Una clase abstracta suele ser situada en la jerarquía de clases en una posición que le permita ser un depósito de métodos y atributos para ser compartidos o heredados por las subclases de nivel inferior.
Las clases y en general todos los elementos de los diagramas, pueden estar clasificados de acuerdo a varios criterios, como por ejemplo su objetivo dentro de un programa. Esta clasificación adicional se expresa mediante un Estereotipo. Algunos de los autores de métodos OO, establecen una clasificación de todos los objetos que pueden aparecer en un modelo. Los tipos son:
- Objetos Entidad.
- Objetos límite o interfaz.
- Objetos de control.
Éstos son estereotipos de clases. Un estereotipo representa una la meta-clasificación de un elemento.
Dependiendo de la herramienta utilizada, también se puede añadir información adicional a las clases para mostrar otras propiedades de las mismas, como son las reglas de negocio, responsabilidades, manejo de eventos, excepciones, etc.
Relaciones
Los tipos más importantes de relaciones estáticas entre clases son los siguientes:
- Asociación. Las relaciones de asociación representan un conjunto de enlaces entre objetos o instancias de clases. Es el tipo de relación más general, y denota básicamente una dependencia semántica. Por ejemplo, una Persona trabaja para una Empresa.
Cada asociación puede presentar elementos adicionales que doten de mayor detalle al tipo de relación:- Rol, o nombre de la asociación, que describe la semántica de la relación en el sentido indicado. Por ejemplo, la asociación entre Persona y Empresa recibe el nombre de trabaja para, como rol en ese sentido.
- Multiplicidad, que describe la cardinalidad de la relación, es decir, especifica cuántas instancias de una clase están asociadas a una instancia de la otra clase. Los tipos de multiplicidad son: Uno a uno, uno a muchos y muchos a muchos.
- Herencia. Las jerarquías de generalización/especialización se conocen como herencia. Herencia es el mecanismo que permite a una clase de objetos incorporar atributos y métodos de otra clase, añadiéndolos a los que ya posee. Con la herencia se refleja una relación “es_un” entre clases. La clase de la cual se hereda se denomina superclase, y la que hereda subclase.
La generalización define una superclase a partir de otras. Por ejemplo, de las clases profesor y estudiantes e obtiene la superclase persona. La especialización o especificación es la operación inversa, y en ella una clase se descompone en una o varias subclases. Por ejemplo, de la clase empleado se pueden obtener las subclases secretaria, técnico e ingeniero. - Agregación. La agregación es un tipo de relación jerárquica entre un objeto que representa la totalidad de ese objeto y las partes que lo componen. Permite el agrupamiento físico de estructuras relacionadas lógicamente. Los objetos “son-parte-de” otro objeto completo. Por ejemplo, motor, ruedas, carrocería son parte de automóvil.
- Composición. La composición es una forma de agregación donde la relación de propiedad es más fuerte, e incluso coinciden los tiempos de vida del objeto completo y las partes que lo componen. Por ejemplo, en un sistema de Máquina de café, las relaciones entre la clase máquina y producto, o entre máquina y depósito de monedas, son de composición.
- Dependencia. Una relación de dependencia se utiliza entre dos clases o entre una clase y una interfaz, e indica que una clase requiere de otra para proporcionar alguno de sus servicios.
Interfaces
Una interfaz es una especificación de la semántica de un conjunto de operaciones de una clase o paquete que son visibles desde otras clases o paquetes. Normalmente, se corresponde con una parte del comportamiento del elemento que la proporciona.
Paquetes
Los paquetes se usan para dividir el modelo de clases del sistema de información, agrupando clases u otros paquetes según los criterios que sean oportunos. Las dependencias entre ellos se definen a partir de las relaciones establecidas entre los distintos elementos que se agrupan en estos paquetes .
No hay comentarios.:
Publicar un comentario