Diagrama de Clases
Diagrama de Clases
Diagrama de Clases
Un diagrama de clases sirve para visualizar las relaciones entre las clases que involucran el sistema, las
cuales pueden ser asociativas, de herencia, de uso y de agregación, ya que una clase es una descripción
de conjunto de objetos que comparten los mismos atributos, operaciones, métodos, relaciones y
semántica; mostrando un conjunto de elementos que son estáticos, como las clases y tipos junto con
sus contenidos y relaciones.
NOTACON DE CLASE
Las clases se representan por rectángulos que muestran el nombre de la clase y opcionalmente el
nombre de las operaciones y atributos. Los compartimientos se usan para dividir el nombre de la clase,
atributos y operaciones. Adicionalmente las restricciones, valores iniciales y parámetros se pueden
asignar a clases.
La notación que precede el nombre del atributo u operación indica la visibilidad del elemento, si se usa
el símbolo “+“el atributo y la operación tienen un nivel público de visibilidad, si se usa un símbolo “–“
el atributo u operación es privado. Además, el símbolo “#” permite definir una operación o atributo
como protegido y el símbolo “~” indica la visibilidad del paquete.
TABLAS
Una tabla es una clase estereotipada. Esto se dibuja con un pequeño icono de la tabla en la esquina
superior derecha. Los atributos de la tabla son «columnas» estereotipadas. La mayoría de las tablas
tendrán una clave primaria, siendo uno o más campos los que forman una combinación única usada
para acceder la tabla, más una operación de clave primaria que es «PK» estereotipada. Algunas tablas
tendrán una o más claves foráneas, siendo uno o más campos que juntos trazan a una clave foránea en
una tabla relacionada, más una operación de clave foránea que es «FK» estereotipada.
ATRIBUTOS Y MÉTODOS
Los atributos o características de una clase pueden ser de tres tipos, los que definen el grado de
comunicación y visibilidad de ellos con el entorno, estos son:
public (+,): Indica que el atributo será visible tanto dentro como fuera de la clase, es decir, es
accsesible desde todos lados.
private (-,): Indica que el atributo sólo será accesible desde dentro de la clase (sólo sus métodos lo
pueden accesar).
protected (#,): Indica que el atributo no será accesible desde fuera de la clase, pero si podrá ser
accesado por métodos de la clase además de las subclases que se deriven (ver herencia).
Los métodos u operaciones de una clase son la forma en como ésta interactúa con su entorno, éstos pueden
tener las características:
public (+,): Indica que el método será visible tanto dentro como fuera de la clase, es decir, es
accsesible desde todos lados.
private (-,): Indica que el método sólo será accesible desde dentro de la clase (sólo otros métodos de
la clase lo pueden accesar).
protected (#,): Indica que el método no será accesible desde fuera de la clase, pero si podrá ser
accesado por métodos de la clase además de métodos de las subclases que se deriven (ver herencia).
RELACIONES
Ahora ya definido el concepto de Clase, es necesario explicar como se pueden interrelacionar dos o más
clases (cada uno con características y objetivos diferentes). Antes es necesario explicar el concepto de
cardinalidad de relaciones: En UML , la cardinalidad de las relaciones indica el grado y nivel de
dependencia, se anotan en cada extremo de la relación y éstas pueden ser: – uno o muchos: 1..* (1..n) – 0 o
muchos: 0..* (0..n) – número fijo: m (m denota el número).
AGREGACIÓN
Para modelar objetos complejos, no es suficiente con los tipos de datos básicos que proveen los lenguajes:
Enteros, reales y secuencias de caracteres. Cuando se requiere componer objetos que son instancias
de clases definidas por el desarrollador de la aplicación, tenemos dos posibilidades:
Por Valor: Es un tipo de relación estática, en donde el tiempo de vida del objeto incluido esta
condicionado por el tiempo de vida del que lo incluye. Este tipo de relación es comúnmente
llamada Composición (el Objeto base se construye a partir del objeto incluido, es decir, es
"parte/todo").
Por Referencia: Es un tipo de relación dinámica, en donde el tiempo de vida del objeto incluido es
independiente del que lo incluye. Este tipo de relación es comúnmente llamada Agregación (el
objeto base utiliza al incluido para su funcionamiento).
HERENCIA
Indica que una subclase hereda los métodos y atributos especificados por una superclase, de esta forma la
subclase además de poseer sus propios métodos y atributos, poseerá las características y atributos visibles
de la superclase (public y protected), ejemplo:
ASOCIACIÓN
La relación entre clases conocida como Asociación, permite asociar objetos que colaboran entre si. Cabe
destacar que no es una relación fuerte, es decir, el tiempo de vida de un objeto no depende del otro.
DEPENDENCIA O INSTANCIACION
Representa un tipo de relación muy particular, en la que una clase es instanciada (su instanciación es
dependiente de otro objeto/clase). Se denota por una flecha punteada. El uso más particular de este tipo de
relación es para denotar la dependencia que tiene una clase de otra, como por ejemplo una
aplicación grafica que instancia una ventana (la creación del Objeto ventana esta condicionado a la
instanciación proveniente desde el objeto Aplicación):