Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Contenido
Contenido 2
Introducción 3
Clasificadores 4
Interfaz 4
Tipo de datos 5
Asociación 5
Señal 5
Componente 6
Nodo 6
Caso de uso 7
Subsistema 7
Visibilidad 8
Alcance 9
Elementos abstractos, hojas y polimórficos 9
Multiplicidad 10
Atributos 11
Operaciones 11
Otros elementos 12
2
Características avanzadas de las clases
Humberto Antonio Salinas Cortés 1811909
Introducción
El diseño un sistema normalmente se da de manera incremental, esto debido a
que se parte de un nulo conocimiento acerca del funcionamiento y los requerimientos
técnicos de este, la morfología de los componentes del sistema cambiará y será
condicionada conforme se avanza en el proceso de desarrollo, los componentes
tomarán un significado completo, normalmente nos gusta utilizar la analogía que Booch
et al.(2011) realizan:
Cuando se construye una casa, en algún momento del proyecto se toma una
decisión sobre los materiales de construcción. Al principio, basta con indicar
madera, piedra o acero. Este nivel de detalle es suficiente para continuar
adelante. El material será elegido de acuerdo con los requisitos del proyecto (por
ejemplo, acero y hormigón será una buena elección si se construye en una zona
amenazada por huracanes). Según se avanza, el material elegido afectará a las
siguientes decisiones de diseño (por ejemplo, elegir madera en vez de acero
afectará a la masa que se puede soportar). (p.127-128)
Esto es, iteración con iteración, necesitaremos más detalle para poder continuar;
inicialmente no es de utilidad conocer que una clase contiene 10 atributos o 20
métodos, de hecho, definir a detalle una clase cuando aún no se definen los procesos
representaría condicionar la utilidad de esta, al principio, con solo conocer el nombre de
dicha clase es más que suficiente, posteriormente, iteración con iteración,
conoceremos aún más cómo los procesos interactúan con dicha clase y será entonces
cuando necesitaremos especificar aún más esta, es entonces cuando nos resulta útil
conocer las características más avanzadas que nos proporciona UML para así
comunicar de una manera estándar la composición de nuestra clase.
3
Características avanzadas de las clases
Humberto Antonio Salinas Cortés 1811909
Clasificadores
Dado que las clases son un subconjunto de los clasificadores, es entonces que
nos interesa definirlo, “Un clasificador es un mecanismo que describe características
estructurales y de comportamiento. Los clasificadores comprenden clases, interfaces,
tipos de datos, señales, componentes, nodos, casos de uso y subsistemas” (Booch et
al., 2011, 130). La forma en que nosotros podemos identificar dichos clasificadores es
analizando, si estos, pueden tener instancias, estructura y comportamiento, es
entonces que el componente más fácil de identificar como un clasificador es la clase.
También existen más clasificadores, estos se enlistan a continuación.
Interfaz
Una colección de operaciones que especifican un servicio de una clase o
componente.
4
Características avanzadas de las clases
Humberto Antonio Salinas Cortés 1811909
Tipo de datos
Un tipo cuyos valores son inmutables, incluyendo los tipos primitivos
predefinidos (como números y cadenas de caracteres), así como los tipos enumerados
(como los booleanos).
Figura 3. Icono tipo de dato UML. Adaptado de Booch et al. (2011, p. 130)
Asociación
Una descripción de un conjunto de enlaces, cada uno de los cuales relaciona a
dos o más objetos.
Señal
La especificación de un mensaje asíncrono enviado entre instancias.
Componente
Una parte modular de un sistema que oculta su implementación tras un conjunto
de interfaces externas.
5
Características avanzadas de las clases
Humberto Antonio Salinas Cortés 1811909
Nodo
Un elemento físico que existe en tiempo de ejecución y representa un recurso
computacional, generalmente con alguna memoria y a menudo capacidad de
procesamiento.
Caso de uso
Descripción de un conjunto de secuencias de acciones, incluyendo variantes,
que ejecuta un sistema y que produce un resultado observable de interés para un actor
particular.
6
Características avanzadas de las clases
Humberto Antonio Salinas Cortés 1811909
Figura 7. Icono caso de uso UML. Adaptado de Booch et al. (2011, p. 130)
Subsistema
Un componente que representa una parte importante de un sistema
7
Características avanzadas de las clases
Humberto Antonio Salinas Cortés 1811909
Visibilidad
Es un detalle que se puede especificar para un atributo y método (serán
referenciadas como propiedades), esta indica la forma en que puede ser utilizada por
otros clasificadores y nos encontramos con 4 tipos distintos, los cuales son mostrados
en la tabla 1.
Cualquier clasificador
public puede interactuar con esta +
propiedad
8
Características avanzadas de las clases
Humberto Antonio Salinas Cortés 1811909
Alcance
Nos sirve para indicar si la propiedad tiene un valor común para todas las
instancias (static), o si en su defecto, tiene su propio valor por cada instancia (instance)
del clasificador. En caso de ser static, dicha propiedad será subrayada, de otra forma
se considerará instance, como se muestra en la figura 9.
9
Características avanzadas de las clases
Humberto Antonio Salinas Cortés 1811909
Figura 10. Clases y operaciones abstractas y concretas. Adaptado de Booch et al. (2011, p.133)
Si una clase no es una clase hoja implica que sus métodos pueden ser
implementados, dando paso a un polimorfismo.
Multiplicidad
Una clase sin multiplicidad definida nos da la libertad tantas instancias de estas
como sea deseado, sin tener limitante alguna, es entonces que si se quiere restringir
dicha cantidad, se deberá colocar el número límite (como se observa en la figura 11) en
la esquina superior derecha de la clase.
10
Características avanzadas de las clases
Humberto Antonio Salinas Cortés 1811909
Dado que Larman (2004) define multiplicidad como “how many instances of a
class A can be associated with one instance of a class B”(p.249) implica que la
multiplicidad se puede aplicar, también, a los atributos, utilizando expresiones
encerradas en corchetes posterior al nombre de este, como se observa en el atributo
puertoConsola de la clase ControladorRed en la figura 11.
Atributos
Como se menciona en la nota introductoria, conforme avanzamos en el proceso
de diseño, necesitamos una definición más detallada de la clase, al inicio, basta con
simplemente con el nombre de la clase, posteriormente se ocupará únicamente el
nombre de sus atributos, eventualmente llegaremos a un punto donde requerimos
conocer a detalle los datos sobre dicho atributo, UML nos proporciona una sintaxis para
ello, esto nos resulta menos difícil, pues, en las distintas figuras hemos visto
implementaciones de esta sintaxis, está notación es la siguiente:
11
Características avanzadas de las clases
Humberto Antonio Salinas Cortés 1811909
Operaciones
También conocidos como métodos; sucede algo similar con las operaciones que
con los atributos, llegamos a un punto donde requerimos más información de estas,
como la visibilidad, el alcance, los parámetros y otras propiedades, la sintaxis que
propone UML es la siguiente:
[ visibilidad ] nombre [“(” lista de parámetros ”)”] : [ tipo de retorno ] [ “{” propiedad ”}” ]
Otros elementos
Además de la propiedad leaf que vimos en el apartado de elementos abstractos,
hojas y polimorfismo existen los siguientes:
● query
● sequential
● guarded
● concurrent
● static
También nos podemos encontrar con lo que se define como elementos estándar,
“Lo más frecuente es que se utilicen valores etiquetados para extender las propiedades
de la clase (cómo especificar la versión de la clase) y estereotipos para especificar
nuevos tipos de componentes (como los específicos del modelo)” (Booch et al., 2011,
p.140).
12
Características avanzadas de las clases
Humberto Antonio Salinas Cortés 1811909
UML define 4:
13
Características avanzadas de las clases
Humberto Antonio Salinas Cortés 1811909
Conclusión
Las características avanzadas de clases permiten a los desarrolladores de
software crear sistemas más complejos y eficientes. Estas características incluyen la
herencia, el polimorfismo, la abstracción, la visibilidad y el alcance.
Herencia: permite que una clase herede las características de otra clase. Esto
puede ayudar a reducir la duplicación de código y facilitar el mantenimiento del código.
14
Características avanzadas de las clases
Humberto Antonio Salinas Cortés 1811909
References
Booch, G., Rumbaug, J., & Jacobson, I. (2011). El lenguaje unificado de modelado
Analysis and Design and Iterative Development (3rd ed.). Prentice Hall PTR.
http://www.sel.unsl.edu.ar/licenciatura/ingsoft2/UML-DiagramaClaseObjeto.pdf
15