lunes, 24 de mayo de 2010

viernes, 7 de mayo de 2010

jueves, 6 de mayo de 2010

La agregación es una forma especial de asociación que modela una relación todo-parte entre un agregado (el todo) y sus partes. Es usada para modelar una relación de composición (o composicional) entre los elementos de un modelo (por lo que también se conoce como relación de composición, aunque una composición, como tal, tiene un significado distinto como reseñaré más adelante). Una Institución Educativa, por ejemplo, está compuesta de Profesores, Empleados y Auxiliares o Supernumerarios. Para modelar esto, el agregado (la Institución Educativa) tiene una asociación de agregación con sus partes constituyentes (Profesores, Empleados y Auxiliares). Ver figura 8.
Por su parte, una composición es una forma de agregación con un sentido de propiedad fuerte y un ciclo de vida coincidente de la parte con el agregado. En este caso, la multiplicidad del extremo agregado no puede exceder de uno, esto es, no puede ser compartida. Por ejemplo, un Automóvil está compuesto de una carrocería, cuatro llantas y un motor, y no es un Automóvil completo si falta alguna de las partes (un auto no arranca si el motor está dañado o no tiene motor del todo, o no tiene carrocería o le falta por lo menos una llanta; recíprocamente, una carrocería no constituye un auto por sí sola, ni las cuatro llantas, ni el motor).
La generalización, de otro lado, es una relación taxonómica entre un elemento más general y un elemento más específico. Este último es completamente consistente con el primero, el más general y puede contener información adicional. En programación (orientada a objetos), esta relación se conoce comúnmente como herencia. Esta relación también es usada para Paquetes, Casos de Uso y otros elementos
La asociación modela una conexión bi-direccional semántica entre instancias. En este contexto, semántica quiere decir que esa comunicación tiene un significado único que está dado por la cardinalidad y por el papel que se le asigne a dicha relación. Realmente una asociación representa una relación estructural entre instancias de dos clases distintas; ella constituye una conexión entre objetos de dos o más clases que existen durante algún tiempo. Por ejemplo, en la expresión “John Alexander Enseña una o más Asignaturas”, “John Alexander” es una instancia de la clase Profesor y “Asignatura” es una instancia de la clase del mismo nombre; entre tanto, “Enseña” es el Rol o Papel que “John Alexander” juega con el objeto Curso (todas las instancias de Profesor tienen ese papel con los objetos de la clase Asignatura); “uno o más” se refiere a la multiplicidad o cardinalidad de ese papel “Enseña” entre los objetos de las clases citadas.

UML.

Para recordar: “UML es un lenguaje estándar para especificar, visualizar, construir y documentar todos los artefactos de un sistema de software.”
La sintaxis del lenguaje está compuesta por un conjunto de símbolos con una semántica bien definida para crear diagramas y/o modelos de sistemas. Anteriormente les hablé de algunas características del lenguaje, de los casos de uso, los actores, los diagramas de secuencia y de colaboración.
UML es una notación estándar con carácter universal utilizado para escribir modelos de sistemas, ante todo, de sistemas de software, que utiliza una serie de diagramas y una semántica bien definida con el propósito de elaborar los artefactos de un sistema a través de las distintas etapas de su ciclo de vida, principalmente durante el análisis y el diseño del mismo.

Clases
Un diagrama de clases muestra las clases del sistema y las relaciones entre ellas. Un diagrama así muestra la estructura estática del modelo, pero no revela ninguna información relacionada con lo que sucede a través del tiempo cuando el modelo se ejecuta.
En resumen, una clase es una descripción de un conjunto de objetos que comparten las mismas especificaciones de atributos, operaciones, relaciones, restricciones y semántica.
En particular, una clase posee atributos, características o propiedades (datos) y expone un determinado comportamiento o métodos (programas). Pero esta no es una lección de Programación Orientada a Objetos, ese será el tema de otro artículo.
Lo que nos interesa aquí es que en UML una clase se representa mediante un rectángulo dividido en tres partes, como lo ilustra la figura 6. La primera sección de la clase contiene el nombre de la clase (también puede contener su clasificador o su estereotipo, conceptos de los que les hablaré más adelante en este mismo tratado). La sección siguiente contiene los atributos de la clase, junto con su tipo de dato, longitud, valor inicial y su visibilidad (esta puede ser Privada, Protegida o Pública). Y la sección inferior detalla los métodos de la clase con sus argumentos y su visibilidad. Recordemos además que el conjunto de métodos públicos de una clase conforman el protocolo de la clase, el mecanismo mediante el cual otras clases o elementos del modelo se comunican con ella.