jueves, 25 de febrero de 2016

Diagrama de clase de un sistema de control escolar















Diagrama caso de uso


1.2.- Lenguaje Unificado de Modelado: diagrama de clases.



UML
UML es un Lenguaje de Modelado Unificado basado en una notación gráfica que permite: especificar, construir, visualizar y documentar los objetos que forman un sistema software orientado a objetos.

UML representa la unificación de las notaciones de los métodos Booch, Objectory (Ivar Jacobson) y OMT (James Rumbaugh) siendo su sucesor directo y compatible. Igualmente, UML incorpora ideas de otros metodólogos entre los que podemos incluir a Peter Coad, Derek Coleman, Ward Cunningham, David Harel, Richard Helm, Ralph Johnson, Stephen Mellor, Bertrand Meyer, Jim Odell, Kenny Rubin, Sally Shlaer, John Vlissides, Paul Ward, Rebecca Wirfs-Brock y Ed Yourdon.
Algo que debe quedar bien claro es que se trata de una notación, es decir, reglas y recomendaciones para representar modelos. UML no es un proceso de desarrollo, entendido como el conjunto de pasos sistemáticos a seguir para desarrollar software. UML nos va a permitir documentar y especificar los elementos creados mediante un lenguaje común describiendo modelos.
Surge la pregunta, ¿qué es eso del modelado? En todos los ámbitos de la ingeniería se construyen modelos para entender mejor el sistema que vamos a desarrollar. Así los arquitectos diseñan planos de edificios que más tarde se van a construir. Los ingenieros industriales hacen diseños de automóviles. Por tanto, si hablamos de ingeniería del software, los ingenieros de software deberían hacer lo propio y construir modelos de los sistemas software.
Para la construcción de modelos, hay que centrarse en los detalles relevantes mientras se ignoran los demás, por lo cual con un único modelo no tenemos bastante. Varios modelos nos aportan diferentes vistas de un sistema para comprenderlo desde varios puntos de vista. Así, UML recomienda nueve diagramas para representar los distintos puntos de vista de un sistema: Casos de Uso, Diagrama de Clases, Diagrama de Objetos, Diagrama de Secuencia, Diagrama de Colaboración, Diagrama de Estados, Diagrama de Actividades, Diagrama de Componentes y Diagrama de Despliegue.
UML maneja un vocabulario que abarca tres clases de bloques: elementos, relaciones y diagramas.
  • Los elementos son abstracciones que representan las entidades principales en un modelo,
  • las relaciones son mecanismos para enlazar los elementos,
  • los diagramas permiten manejar diferentes visualizaciones de conjuntos de elementos conectados entre sí.
UML ofrece cuatro clases de elementos: los estructurales, los de comportamiento, los de agrupación y los de anotación.
Elementos estructurales
Los elementos estructurales representan la parte estática del modelo e identifican las partes que lo forman. UML contempla siete tipos de elementos estructurales: clases, interfaces, colaboraciones, casos de uso, clases activas, componentes y nodos. Durante el desarrollo del curso serán necesarios los siguientes:
  • Las clases describen un conjunto de objetos que comparten los mismos atributos, operaciones, relaciones y semántica. En la representación de clases y objetos distinguiremos uno de otro subrayando el nombre del objeto, a diferencia de la clase cuyo nombre irá sin subrayar.

  • Una interface es una colección de operaciones que especifica un servicio de una clase o componente, describiendo el comportamiento visible, parcial o total, de un elemento.

Elementos de comportamiento
Son la parte dinámica de UML y representan la forma de actuar del sistema, tanto en el tiempo como en el espacio. Hay dos clases de comportamiento:
  • Diagrama de interacción que refleja el conjunto de mensajes que intercambian una colección de objetos dentro de un contexto particular con un propósito específico. El comportamiento involucra los elementos: mensajes, secuencias de acción y ligas.

  • Máquina de estados que especifica la secuencia de estados que un objeto o una interacción tiene durante su tiempo de vida al responder a eventos.

Elementos de agrupación
Son la parte organizacional de UML. Representan las partes en las que se puede descomponer un modelo, las cuales son llamadas paquetes. Los paquetes son un mecanismo de propósito general para organizar elementos en grupos. En un paquete se pueden agrupar elementos estructurales, de comportamiento y otros. Es un elemento puramente conceptual, existe sólo en el tiempo de desarrollo.

Elementos de anotación
Sirven para documentar los modelos. Hablamos de las notas que utilizaremos para remarcar restricciones o comentarios a un elemento o a una colección de elementos.

Nos permiten modelar los enlaces existentes entre diferentes elementos estructurales, mostrando además información adicional como nombres de roles (identificación del papel que juegan cada elemento en la relación) ó multiplicidad (restricción que limita el número de instancias de una clase que pueden estar relacionadas con la clase asociada).
UML maneja cuatro tipos de relaciones:
  • Una dependencia es una relación semántica entre dos clases en la cual un cambio de un elemento puede afectar la semántica de otro (dependiente). Una asociación es una relación estructural que describe un conjunto de ligas, las cuales representan conexiones a través de objetos. La agregación es una clase especial de asociación que representa una relación de estructura entre un conjunto y sus partes. Se representa con un diamante en el extremo de la clase agregada.

  • La generalización es una relación de especialización/generalización en la cual los objetos de un elemento especializado (hijos) son consistentes con los objetos de un elemento generalizable (el padre). Modeliza el comportamiento de la herencia.

  • Una realización es una relación semántica entre clasificadores, en donde un clasificador especifica un contrato que otro clasificador garantiza llevar a cabo. Básicamente modeliza el comportamiento existente entre el interfaz y la clase que implementa el interfaz.

Un diagrama es la representación gráfica de un conjunto de elementos conectados entre sí. De los elementos vistos, un mismo elemento puede aparecer en uno, varios o ningún diagrama. UML incluye nueve tipos de diagramas que son:
  • Diagrama de Casos de Uso: modela la funcionalidad del sistema. agrupándola en descripciones de acciones ejecutadas por un sistema para obtener un resultado.
  • Diagrama de Clases: muestra las clases que componen el sistema y cómo se relacionan entre sí.

  • Diagrama de Objetos: muestra una serie de objetos y sus relaciones.
  • Diagrama de Secuencia: Describe la interacción entre los objetos por medio de los mensajes que intercambian a lo largo del tiempo entre sí.
  • Diagrama de Colaboración: Muestra la interacción entre los objetos resaltando la organización estructural de los objetos.
·  Diagrama de Estados: modela el comportamiento de acuerdo con eventos.
·  Diagrama de Actividades: simplifica el Diagrama de Estados modelando el comportamiento mediante flujos de actividades.
·  Diagrama de Componentes: muestra la organización y las dependencias entre un conjunto de componentes.
·  Diagrama de Despliegue: muestra los dispositivos que se encuentran en un sistema y su distribución en el mismo.

1.1 Elementos del modelo de objetos: clases, objetos, abstracción, modularidad, encapsulamiento, herencia y polimorfismo.




Clase:
Son los datos y operaciones comunes a un conjunto de objetos que comparten características.

Objetos:
Entidad compuesta de datos y operaciones que realizan sobre esos datos.
Mantienen unas características en una o más variables e implementan su comportamiento con métodos.
Todo objeto del mundo real tiene 2 componentes: características y comportamiento.
Por ejemplo, los automóviles tienen características (marca, modelo, color, velocidad máxima, etc.) y comportamiento (frenar, acelerar, retroceder, llenar combustible, cambiar llantas, etc.).

Abstracción:
La abstracción consiste en captar las características esenciales de un objeto, así como su comportamiento. Por ejemplo, volvamos al ejemplo de los automóviles, ¿Qué características podemos abstraer de los automóviles? O lo que es lo mismo ¿Qué características semejantes tienen todos los automóviles? Todos tendrán una marca, un modelo, número de chasis, peso, llantas, puertas, ventanas, etc. Y en cuanto a su comportamiento todos los automóviles podrán acelerar, frenar, retroceder, etc.
En los lenguajes de programación orientada a objetos, el concepto de clase es la representación y el mecanismo por el cual se gestionan las abstracciones.
Por ejemplo, en Java tenemos:
public class Automovil {
// variables
// métodos
}

Modularidad:
Es la propiedad que tiene un sistema que ha sido descompuesto en un conjunto de módulos cohesivos y vagamente convexos, cada módulo se puede compilar separadamente aunque tenga conexiones con otros módulos.
En un diseño estructural, popularización comprende el agrupamiento significado de subprogramas en diseño orientado a objetos, la modularidad debe ceñirse a la estructura lógica elegida en el proceso de diseño.
Dividir un programa en componentes individualizados reduce en alguna manera su complejidad; C++ separa los módulos interface de los módulos con implementación.

Encapsulamiento:
Es el ocultamiento de información que no es necesario saber un determinado usuario, la utilidad del encapsulamiento va por la facilidad para manejar la complejidad, donde solo se conoce el comportamiento pero no los detalles internos, aquí lo que interesa es ¿Qué hace la clase? Pero no el ¿Cómo lo hace?

Herencia:

Una herencia puede heredar sus variables y métodos a varias subclases (la clase que hereda es llamada es llamada súper clase o clase padre)

Polimorfismo:

Se basa en utilizar varios métodos con el mismo nombre y con diferente funcionalidad, un objeto polimorfismo es una entidad que puede contener valores de diferentes tipos durante la ejecución de un programa.