Está en la página 1de 15

Características avanzadas de las clases

Humberto Antonio Salinas Cortés 1811909

I. en C. Tania Lilia Chavez Soto


Facultad de Ingeniería. Universidad Autónoma del Estado de México.
LINC26 Ingeniería de software 1
14 de octubre de 2023
Características avanzadas de las clases
Humberto Antonio Salinas Cortés 1811909

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.

Aunque en el presente trabajo nos referimos a estas características como parte


de las clases, hay que tener siempre presente que como mencionan Booch et al “Las
clases son sólo un tipo de un bloque de construcción más general de UML, los
clasificadores”(p. 127).

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.

Figura 1. Icono clase UML. Adaptado de Booch et al. (2011, p. 130)

Interfaz
Una colección de operaciones que especifican un servicio de una clase o
componente.

Figura 2. Icono interfaz UML. Adaptado de Booch et al. (2011, p. 130)

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.

Figura 4. Icono señal UML. Adaptado de Booch et al. (2011, p. 130)

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

Figura 5. Icono componente UML. Adaptado de Booch et al. (2011, p. 130)

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.

Figura 6. Icono nodo UML. Adaptado de Booch et al. (2011, p. 130)

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

Figura 8. Icono subsistema UML. Adaptado de Booch et al. (2011, p. 130)

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.

Tipo Descripción Símbolo

Cualquier clasificador
public puede interactuar con esta +
propiedad

protected Cualquier descendiente del


clasificador puede utilizar #
la propiedad

private Únicamente el propio


clasificador puede acceder -
a la propiedad

package Sólo los clasificadores del


mismo paquete pueden ~
acceder a la propiedad.
Tabla 1. Tipos de visibilidad de las características de los clasificadores.

En caso de que a una característica no se le defina explícitamente su tipo de


visibilidad, se asume que esta es pública.

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.

Figura 9. Alcance de propiedad. Adaptado de Booch et al. (2011, p. 130)

Elementos abstractos, hojas y polimórficos


Como es normal en un sistema necesitaremos que distintos clasificadores
posean atributos y métodos en común, UML nos proporciona varias notaciones para
solucionar los casos que se nos presentan.

Un elemento abstract es útil cuando tenemos varias clases que comparten


métodos pero cada una los efectúa de manera muy distinta, mientras que una persona
y un carro, ambos avanzan, lo hacen de maneras muy distintas, por lo que es imposible
compartir el proceso, aquí definimos el proceso y se indica que es a sus herederos, a
los que se les pasa la tarea de implementarlos, esta no puede ser instanciada
directamente.

Se indica que la clase es abstracta colocando el Nombre y al menos un método


en cursivas, como se muestra en la figura 10, para las clases Icono, IconoRectangular
e IconoArbitrario.

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)

Normalmente la herencia se puede continuar indefinidamente, como la


transferencia genética en las personas, pero podemos especificar que una clase no
pueda tener hijos, el claro ejemplo está en la clase BotónOK de la figura 10, si notamos
la manera en que esto se especifica es colocando la propiedad leaf debajo del nombre
de la clase.

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

Figura 11. Multiplicidad. Adaptado de Booch et al.(2011, p.135)

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:

[ visibilidad ] nombre : [ tipo ] [ “[“ multiplicidad “]” ] = [ valor inicial ] [ { propiedad } ]

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 ”}” ]

Para definir la lista de parámetros (que puede contener 0 o más) se sigue la


siguiente sintaxis:

[ dirección ] nombre : tipo = [ valor por defecto ]

Dónde la dirección puede ser in, out e inout.

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:

1. metaclass Especifica un clasificador cuyos objetos son todos clases.


2. powertype Especifica un clasificador cuyos objetos son clases hijas de una
clase padre específica.
3. stereotype especifica que el clasificador es un estereotipo que se puede aplicar
a otros elementos.
4. utility Especifica una clase cuyos atributos y operaciones tienen alcance
estático

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.

Polimorfismo: permite que objetos de diferentes clases respondan a la misma


llamada de método de manera diferente. Esto puede ayudar a mejorar la flexibilidad y
la reutilización del código.

Abstracción: permite a los desarrolladores ocultar detalles de implementación de


los usuarios de una clase. Esto puede ayudar a mejorar la claridad y la mantenibilidad
del código.

Visibilidad: determina si una característica de una clase es visible para otras


clases. Esto puede ayudar a controlar el acceso a los datos y los métodos.

Alcance: determina si una variable o método es visible dentro de una clase,


dentro de un bloque de código o en todo el programa. Esto puede ayudar a mejorar la
claridad y la mantenibilidad del código.

Las características avanzadas de clases son una herramienta poderosa que


puede ayudar a los desarrolladores de software a crear sistemas más complejos y
eficientes.

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

(e-book): Manual de referencia. Pearson Educación.

Larman, C. (2004). Applying UML and Patterns: An introduction to Object-Oriented

Analysis and Design and Iterative Development (3rd ed.). Prentice Hall PTR.

Riesco, D. (n.d.). UML Diagrama de Clases y de Objetos. Universidad Nacional de San

Luis. Retrieved October 14, 2023, from

http://www.sel.unsl.edu.ar/licenciatura/ingsoft2/UML-DiagramaClaseObjeto.pdf

15

También podría gustarte