Definiciones Fundamentales
El Método
Es un procedimiento para alcanzar un determinado fin.
La Notación
Son sistemas de signos convencionales adoptados para expresar ciertos conceptos.
La acción de dibujar un diagrama no constituye análisis ni diseño. Un diagrama se limita a capturar una descripción del comportamiento del sistema (en el análisis), o la visión y los detalles de una arquitectura (en el diseño). Disponer de una notación expresiva y bien definida es importante para el proceso de desarrollo de software. Una notación estándar posibilita al analista o desarrollador describir un universo o formular una arquitectura y comunicar estas decisiones de forma no ambigua (es decir, que no se entienda de varias maneras).
Diagramas
Son una representación gráfica que detalla los pasos sucesivos de un proceso.
Una notación expresiva hace posible eliminar buena parte del tedio (incompatibilidad de 2 atributos) de comprobar la consistencia y corrección de las decisiones adoptadas.
Elementos de la Notación
La Necesidad de Vistas Múltiples
Es imposible capturar todos los detalles sutiles de un sistema de software complejo en una sola vista. Es necesario comprender:
- La estructura taxonómica (clasificación) de las clases (conjunto de objetos que comparten una estructura y un comportamiento en común).
- Los mecanismos de herencia utilizados.
- Los comportamientos individuales de los objetos.
- El comportamiento dinámico del sistema en su conjunto.
Los modelos del sistema reflejan toda la verdad sobre sus clases, relaciones y otras entidades, y cada diagrama representa una proyección de estos modelos.
El modelo físico de un sistema describe la composición concreta en cuanto a hardware y software del contexto o implantación del sistema.
Fases del Desarrollo: Análisis y Diseño
Cuestiones Durante el Análisis
Durante el análisis, deben plantearse las siguientes cuestiones principales:
- ¿Cuál es el comportamiento que se desea del sistema?
- ¿Cuáles son las misiones y responsabilidades de los objetos que llevan a cabo este comportamiento?
En el modelo lógico, los diagramas de objeto sirven de vehículos primarios para describir universos.
Cuestiones Durante el Diseño
Durante el diseño, deben plantearse las siguientes cuestiones principales relativas a la arquitectura del sistema:
- ¿Qué clases existen y cómo se relacionan estas clases?
- ¿Qué mecanismos se utilizan para regular la forma en que los objetos colaboran?
- ¿Dónde debería declararse cada clase y objeto?
Se utilizan los siguientes diagramas, respectivamente, para responder a estas preguntas:
- Diagramas de clases
- Diagramas de objetos
- Diagramas de módulos
- Diagramas de procesos
Los cuatro diagramas introducidos hasta ahora son fuertemente estáticos. Sin embargo, los eventos suceden dinámicamente en todos los sistemas basados en software: los objetos se crean y se destruyen, y envían mensajes a otros de forma ordenada.
En el desarrollo orientado a objetos, se expresa la semántica dinámica (significado de las palabras) de un problema o su implantación mediante dos diagramas adicionales:
- Diagrama de transición de estados
- Diagramas de interacción
Una de las cosas que las herramientas pueden hacer es ayudar a los malos diseñadores a crear diseños horribles mucho más rápido de lo que jamás habían podido.
Diagramas de Clases: Elementos Esenciales
Los dos elementos esenciales son: las clases y sus relaciones.
Clases y Relaciones
Se utiliza un diagrama de clase para mostrar la existencia de clases y sus relaciones en la visión lógica de un sistema.
Durante el análisis, se utiliza el diagrama de clases para indicar las misiones y responsabilidades comunes de las entidades que caracterizan el comportamiento de un sistema. Durante el diseño, se utilizan para plasmar la estructura de las clases que forman la arquitectura del sistema.
Atributos
Un atributo denota una parte de un objeto agregado. Por eso, se utiliza tanto durante el análisis como en el diseño para expresar una propiedad singular de la clase. La sintaxis es la siguiente:
A– Nombre del atributo solamente.:C– Clase del atributo solamente.A:C– Nombre y clase del atributo.A:C = E– Nombre, clase y valor por defecto del atributo.
El nombre del atributo debe ser no ambiguo (es decir, que no se entienda de distintas formas) en el contexto de la clase.
Operaciones
Una operación denota algún servicio proporcionado por la clase. La descripción completa de la operación es:
N()– Nombre de la operación solamente.R N(argumentos)– Clase de retorno de la operación, nombre y parámetros formales (si los hay).
Los nombres de operación deben ser no ambiguos en el contexto de la clase.
Clases Abstractas
Una clase abstracta se convierte en una clase guía de los comportamientos que deben existir en una clase; es aquella para la cual no pueden crearse instancias. Se introduce una marca o adorno especial para designar una clase como abstracta.
Relaciones entre Clases
Las clases raramente permanecen en solitario; colaboran con otras clases de diversas maneras. Las conexiones esenciales entre clases incluyen las relaciones de asociación, herencia, posesión y uso.
Asociación
El icono de asociación conecta dos clases y denota una conexión semántica. Una clase puede tener una asociación consigo misma (llamada asociación reflexiva).
Cardinalidad
Se aplica el adorno de la cardinalidad (número de instancias que participan en una relación de clases) al extremo de destino de una asociación, y denota el número de enlaces entre cada instancia de la clase origen y las instancias de la clase destino.
También es posible tener más de una asociación entre el mismo par de clases. Adicionalmente, puede expresarse la cardinalidad de las asociaciones, utilizando las sintaxis de los siguientes ejemplos:
1: Exactamente uno.Mo*: Número ilimitado (cero o más).0..N: Cero o más.1..N: Uno o más.0..1: Cero o uno.3..7: Rango especificado.1..3,7: Rango especificado o número exacto.
Herencia
El icono de herencia aparece como una asociación con una cabeza de flecha. La flecha apunta a la superclase y el extremo opuesto de la asociación designa la subclase.
Posesión (Agregación)
El icono de posesión (a la relación se le conoce también como agregación) aparece como una asociación con un círculo relleno en el extremo que señala al agregado.
Utilización
El icono de utilización denota una relación cliente/proveedor y aparece como una asociación con una circunferencia (en oposición al círculo relleno del icono de posesión) en el extremo que denota al cliente.
Los iconos descritos hasta ahora constituyen los elementos esenciales de todos los diagramas de clases. En conjunto, proporcionan al desarrollador una notación suficiente para describir los aspectos fundamentales de la estructura de clases de un sistema.
Conceptos Avanzados en Diagramas de Clases
Categoría de Clases
Es una colección lógica de clases. Una categoría de clase es un agregado que contiene clases y otras categorías de clases. No contribuye directamente al sistema con estado u operaciones, sino que lo hace indirectamente, a través de las clases que contiene.
Clases Parametrizadas
Denota una familia de clases cuya estructura y comportamiento están definidos independientemente de sus parámetros formales.
Una clase parametrizada se visualiza como una clase simple, pero con una caja de línea discontinua en la esquina superior derecha que indica sus parámetros formales. Una clase instanciada se señala con una caja de línea continua que denota sus parámetros actuales. La relación de instanciación entre una clase parametrizada y su clase instanciada se representa con una línea discontinua que apunta a la clase parametrizada.
Metaclase
Una metaclase es la clase de una clase. La meta-relación se representa como una línea gruesa de color gris con cabeza de flecha, que apunta de una clase a su metaclase.
Utilidades de Clase
Se manifiestan de una o dos formas:
- Una utilidad de clase puede denotar uno o más subprogramas libres. En los lenguajes híbridos (que proceden de dos cosas de distinta naturaleza), es posible escribir funciones que no son miembros de ninguna clase. El nombre de la utilidad de clase no tiene entonces más significado que el de dar un nombre adecuado a un grupo lógico de tales funciones.
- Una utilidad de clase puede nombrar a una clase que solamente tiene operaciones y variables de instancia de clase.
Una utilidad de clase se representa como un icono para una clase normal al que se le añade una sombra.
