RESULTADO DE APRENDIZAJE:

Genera diagramas de clases valorando su importancia en el desarrollo de aplicaciones y empleando las herramientas disponibles en el entorno.

CRITERIOS DE EVALUACIÓN:

  1. Se han identificado los conceptos básicos de la programación orientada a objetos.
  2. Se ha instalado el módulo del entorno integrado de desarrollo que permite la utilización de diagramas de clases.
  3. Se han identificado las herramientas para la elaboración de diagramas de clases.
  4. Se ha interpretado el significado de diagramas de clases.
  5. Se han trazado diagramas de clases a partir de las especificaciones de las mismas.
  6. Se ha generado código a partir de un diagrama de clases.
  7. Se ha generado un diagrama de clases mediante ingeniería inversa.

CONTENIDOS:

Introducción al lenguaje unificado de modelado (UML Unified Modeling Language):

  • Características.
  • Versiones.
  • Diagramas UML.
  • Utilización en metodologías de desarrollo orientado a objetos.
  • Herramientas CASE con soporte UML.
  • Elaboración de diagramas de clases.
  • Notación de los diagramas de clases.
    • Clases. Atributos, métodos y visibilidad.
    • Objetos. «Instanciación».
    • Relaciones. Asociación, herencia, composición, agregación,dependencia, navegabilidad.
    • Clases abstractas. Interfaces.
    • Paquetes.
    • Grado de detalle.
  • Utilización de herramientas CASE para elaborar diagramas de clases con UML.
  • Módulos integrados en entornos de desarrollo para elaborar diagramas de clases.
  • Creación de código a partir de diagramas de clases.
  • Generación de diagramas de clases a partir de código (ingeniería inversa).

CALFICACIÓN:


UML

El Lenguaje Unificado de Modelado o notación UML es probablemente la representación visual de programas más conocida y utilizada habitualmente en el desarrollo de software. Existe una amplia gama de diagramas que le ayudarán a especificar sus datos y procesos antes de empezar a programar. Le ayudan a aclarar requisitos y limitaciones, aceleran la implementación, proporcionan una guía para realizar pruebas exhaustivas y evitan que se cuelen errores a lo largo de todo el proceso de desarrollo de software.

Nos vamos a centrar en una categoría de diagramas UML: los diagramas estructurales. Probablemente los diagramas estructurales más conocidos son los diagramas de clases, que especifican las estructuras de datos y sus relaciones dentro de tu programa.

Los diagramas de clase no sólo se utilizan para programar. Por ejemplo, los analistas de negocio pueden modelar la estructura empresarial de los activos y los procesos asociados a ellos.

Notación del diagrama de clases UML

Como es lógico, las clases de su programa van en un diagrama de clases, incluyendo sus atributos (variables) y métodos (funciones). Estos diagramas constituyen la base de la programación orientada a objetos.

Clases

Cada clase se representa mediante una caja con tres secciones apiladas una sobre otra con el siguiente formato. Sólo el nombre de la clase es obligatorio

  • Nombre de la clase
  • Atributos - nombre: tipo
  • Operaciones - nombre del método (lista de parámetros): tipo del valor de retorno
Ejemplo de clase
Ejemplo de clase

El símbolo delante del nombre del atributo o método indica su visibilidad - public (+), protected (#), private (-), derived (/) o package (~).

Al dibujar un elemento de clase en un diagrama de clases, debe utilizar el compartimento superior, y los dos compartimentos inferiores son opcionales. (Los dos inferiores serían innecesarios en un diagrama que represente un mayor nivel de detalle en el que el propósito sea mostrar sólo la relación entre los clasificadores).

Herencia

Cuando una clase hija tiene las mismas operaciones y atributos que su clase padre, pero añade algunos extras propios, eso es herencia. La herencia es una característica esencial de la programación orientada a objetos. Puedes indicarlo en tu diagrama dibujando una flecha sin relleno desde la clase hija a la clase padre.

Ejemplo de herencia
Ejemplo de herencia

Consejo: Las clases abstractas pueden indicarse poniendo en cursiva el nombre de la clase.

Asociaciones

Cuando existe un vínculo entre clases puedes indicarlo de varias maneras.

Ejemplo de asociación
Ejemplo de asociación
  • Bidireccional: Ambas clases conocen la asociación - dibuja una línea continua entre las clases, sin flechas.
  • Unidireccional: Sólo una clase conoce a la otra - utilice una punta de flecha abierta. Por ejemplo: FailedStudentsList conocerá la clase Student, pero la clase Student no conoce la clase FailedStudentsList.
  • Dependencia: Cuando los cambios en una clase causan cambios en otra clase, son dependientes. Utilice una línea discontinua para mostrar la dependencia.
  • Agregación: Cuando una clase contiene varias instancias de otra clase, pero esas instancias siguen existiendo aunque se elimine la clase contenedora, eso es agregación. Utilice un rombo hueco para indicar la clase contenedora.
  • Composición: Es similar a la agregación, pero cuando se elimina la clase contenedora, también se eliminan las instancias de las otras clases. La clase contenedora está “compuesta” por instancias de las otras clases. Utilice un rombo sólido para indicar la clase contenedora.
  • Multiplicidad: Donde se indica cuántas instancias de cada clase están relacionadas con la otra clase. Puede ser cero o más (0..*), uno a uno (1..1), o 1 a un número específico (1..5).

Existen muchas otras formas de indicar asociaciones, como las clases de asociación, las asociaciones reflexivas, los paquetes, etc. Para una visión completa del modelado de clases en UML, IBM ha proporcionado un gran tutorial.

Ejemplo composición y agregación
Ejemplo composición y agregación