Está en la página 1de 21

Programación 

Orientada a Objetos
Diagrama de Clases
d l

Tema: 1.2 Lenguaje de modelado


unificado: diagrama de clases.
clases

Ing. Rubén Zetina Saravia.

Instituto Tecnológico de Campeche.


Diagrama de Clases
Diagrama de Clases

En ingeniería de software, un diagrama de


clases en g j
Lenguaje Unificado de
Modelado (UML) es un tipo de diagrama de
estructura estática q
que describe la estructura
de un sistema mostrando las clases del
p
sistema, sus atributos, operaciones (o
métodos), y las relaciones entre los objetos.
Diagrama de Clases
Diagrama de Clases
El diagrama de clases puede tener como ejemplo: una clase que sería un
objeto
j o ppersona misma en la cual se especifica p cada acción y
especificación.
Propiedades de objetos que tienen propiedades y/u operaciones que
contienen un contexto y un dominio, los primeros dos ejemplos son clases
de datos y el tercero clase de lógica de negocio, dependiendo de quién
diseñe el sistema se pueden unir los datos con las operaciones.
El diagrama de clases incluye mucha más información como la relación
entre un objeto
bj y otro, la
l herencia
h i de
d propiedades
i d d de d otro objeto,
bj
conjuntos de operaciones/propiedades que son implementadas para una
interfaz gráfica.
Presenta las clases del sistema con sus relaciones estructurales y de
herencia.
El diagrama de clases es la base para elaborar una
arquitectura MVC o MVP.
MVP
UML proporciona mecanismos para representar los miembros de la clase,
como atributos y métodos, así como información adicional sobre ellos.
Diagrama de Clases
Diagrama de Clases
Los elementos básicos del diagrama son:

Clases

Una clase describe un conjunto de objetos con propiedades (atributos) similares y un


comportamiento común. Los objetos son instancias de las clases.

Dentro de la estructura de una clase se definen los atributos y las operaciones o


métodos:

L
•Los atributos
ib d una clase
de l representan los
l d
datos asociados
i d a los
l objetos
bj
instanciados por esa clase.
•Las operaciones o métodos representan las funciones o procesos propios de los
objetos de una clase, caracterizando a dichos objetos.

El diagrama de clases permite representar clases abstractas. Una Clase abstracta es una
clase que no puede existir en la realidad, pero que es útil conceptualmente para el
diseño del modelo orientado a objetos.
j Las clases abstractas no son instanciables
directamente sino en sus descendientes. Una clase abstracta suele ser situada en la
jerarquía de clases en una posición que le permita ser un depósito de métodos y
atributos para ser compartidos o heredados por las subclases de nivel inferior.
Diagrama de Clases
Diagrama de Clases
Las clases y en general todos los elementos de los diagramas, pueden estar
clasificados de acuerdo a varios criterios, como por ejemplo su objetivo
d
dentro d un programa. Esta
de E clasificación
l ifi ió adicional
di i l se expresa mediante
di
un Estereotipo. Algunos de los autores de métodos OO, establecen una
clasificación de todos los objetos que pueden aparecer en un modelo. Los
tipos son:

•Objetos Entidad.
Objetos límite o interfaz.
•Objetos
•Objetos de control.

Éstos son estereotipos


p de clases. Un estereotipo
p representa
p una meta‐
clasificación de un elemento.
Dependiendo de la herramienta utilizada, también se puede añadir
información adicional a las clases para mostrar otras propiedades de las
mismas, como son las reglas de negocio, responsabilidades, manejo de
eventos, excepciones, etc.
Diagrama de Clases
Diagrama de Clases
Notación

Clases

Una clase se representa como una caja, separada en tres zonas por líneas horizontales.

En la zona superior se muestra el nombre de la clase y propiedades generales como el


estereotipo. El nombre de la clase aparece centrado y si la clase es abstracta se
representa en cursiva. El estereotipo, si se muestra, se sitúa sobre el nombre y entre el
símbolo: << .... >>.

La zona central contiene una lista de atributos, uno en cada línea. La notación utilizada
para representarlos incluye, dependiendo del detalle, el nombre del atributo, su tipo y
su valor por defecto, con el formato:

visibilidad nombre : tipo = valor‐inicial { propiedades }

La visibilidad será́ en ggeneral p


publica ((+),
), p
privada ((‐)) o p
protegida
g ((#),
), aunque
q p puede haber
otros tipos de visibilidad dependiendo del lenguaje de programación empleado.
Visibilidad

Para especificar la visibilidad de un miembro de la clase (es


decir, cualquier atributo o método), se coloca uno de los
siguientes signos delante de ese miembro:
Diagrama de Clases
Diagrama de Clases

En la zona inferior se incluye una lista con las operaciones que proporciona 
la clase. Cada operación aparece en una línea con formato:

visibilidad nombre (lista‐de‐parámetros): tipo‐devuelto { propiedad }

La visibilidad será́ en ggeneral p


publica ((+),
) pprivada ((‐)) o p
protegida
g ((#),
)
aunque como con los atributos, puede haber otros tipos de visibilidad
dependiendo del lenguaje de programación. La lista de parámetros es una
lista con los parámetros recibidos en la operación separados por comas. El
formato de un parámetro es:

nombre : tipo = valor‐por‐defecto
Diagrama de Clases
Diagrama de Clases

La notación especificada se puede simplificar según el nivel de detalle con


ell que se quiera
i trabajar
b j en un momento dado.
d d
Ámbitos
UML especifica dos tipos de ámbitos para los
miembros: instancias y clasificadores
f y estos últimos se representan
p
con nombres subrayados.

Los miembros clasificadores se denotan comúnmente como “estáticos”


en muchos lenguajes de programación. Su ámbito es la propia clase.
Los valores de los atributos son los mismos en todas las instancias
La invocación de métodos no afecta al estado de las instancias
Los miembros instancias tienen como ámbito una instancia específica.
Los valores de los atributos pueden variar entre instancias
La invocación de métodos puede afectar al estado de las
instancias(es decir, cambiar el valor de sus atributos)

Para indicar que un miembro posee un ámbito de clasificador, hay que


subrayar su nombre. De lo contrario, se asume por defecto que tendrá
ámbito de instancia.
Relaciones
Una relación es un término ggeneral q que abarca los tipos
p
específicos de conexiones lógicas que se pueden encontrar
en los diagramas de clases y objetos. UML presenta las
siguientes relaciones:
Relaciones a nivel de instancia
Enlace
Un enlace es la relación
ó más á básica
á entre objetos.
Asociación
Una asociación representa
p a una familia de enlaces.
Agregación
La agregación o agrupación es una variante de la relación de
asociación “tiene
tiene un
un”:: la agregación es más específica que la
asociación.
Diagrama de Clases
Diagrama de Clases
Relaciones

Una relación de asociación se representa como una línea continua


entre las clases asociadas. En una relación de asociación,, ambos
extremos de la línea pueden conectar con la misma clase, indicando 
que una instancia de una clase, está asociada a otras instancias de la
misma clase, lo que se conoce como asociación reflexiva.

La relación puede tener un nombre y un estereotipo, que se colocan


junto a la línea. El nombre suele corresponderse con expresiones
verbales presentes en las especificaciones, y define la semántica de
la asociación. Los estereotipos permiten clasificar las relaciones en
familias y se escribirán entre el símbolo: << ... >>.
>>
Diagrama de Clases
Diagrama de Clases
Relaciones

Las diferentes p
propiedades
p de la relación se p
pueden representar
p con la siguiente
g notación:

•Multiplicidad: La multiplicidad puede ser un número concreto, un rango o una colección de números. La
letra ‘n’ y el símbolo ‘*’ representan cualquier número.

•Orden: Se puede especificar si las instancias guardan un orden con la palabra clave ‘{ordered}’
{ordered} . Si el
modelo es suficientemente detallado, se puede incluir una restricción que indique el criterio de
ordenación.

•Navegabilidad: La navegación desde una clase a la otra se representa poniendo una flecha sin relleno en
el extremo de la línea, indicando el sentido de la navegación.

•Rol o nombre de la asociación: Este nombre se coloca junto al extremo de la línea que esta unida a una
clase, para expresar cómo esa clase hace uso de la otra clase con la que mantiene la asociación.
Diagrama de Clases
Diagrama de Clases
Además, existen notaciones específicas para los otros tipos de relación, como son:

g g
•Agregación: Se representa
p con un rombo hueco en la clase cuya
y instancia es una agregación
g g de las
instancias de la otra.

•Composición: Se representa con un rombo lleno en la clase cuya instancia contiene las instancias de la
otra clase.

•Dependencia: Una línea discontinua con una flecha apuntando a la clase cliente. La relación puede tener
un estereotipo que se coloca junto a la línea, y entre el símbolo: << ... >>.

•Herencia: Esta relación se representa como una línea continua con una flecha hueca en el extremo que
apunta a la superclase.
Asociación

Una asociación
U i ió representa t a una familia
f ili de
d enlaces.
l U asociación
Una i ió binaria
bi i
(entre dos clases) normalmente se representa con una línea continua. Una
misma asociación puede relacionar cualquier número de clases. Una asociación
que
q relacione tres clases se llama asociación ternaria.
A una asociación se le puede asignar un nombre, y en sus extremos se puede
hacer indicaciones, como el rol que desempeña la asociación, los nombres de las
clases relacionadas, su multiplicidad, su visibilidad, y otras propiedades.
Hay cuatro tipos diferentes de asociación: bidireccional,
bidireccional unidireccional,
unidireccional
agregación (en la que se incluye la composición) y reflexiva. Las asociaciones
unidireccional y bidireccional son las más comunes.
Por ejemplo, una clase vuelo se asocia con una clase avión de forma
bidireccional. La asociación representa la relación estática que comparten los
objetos de ambas clases.
Agregación

La agregación o agrupación es una variante de la relación de asociación “tiene un”: la


agregación
ag egac ó es másás espec
específicaca que laa asoc
asociación.
ac ó Se ttrata
ata de u
unaa asoc
asociación
ac ó que representa
ep ese ta
una relación de tipo parte‐todo o parte‐de.
Como se puede ver en la imagen del ejemplo (en inglés), un Profesor 'tiene una' clase a la
que enseña.
Al ser un tipo de asociación,
asociación una agregación puede tener un nombre y las mismas
indicaciones en los extremos de la línea. Sin embargo, una agregación no puede incluir
más de dos clases; debe ser una asociación binaria.
Una agregación se puede dar cuando una clase es una colección o un contenedor de otras
clases,
l pero a su vez, ell tiempo
ti d vida
de id de
d las
l clases
l contenidas
t id no tienen
ti una dependencia
d d i
fuerte del tiempo de vida de la clase contenedora (de el todo). Es decir, el contenido de la
clase contenedora no se destruye automáticamente cuando desaparece dicha clase.
En UML, se representa gráficamente con un rombo hueco junto a la clase contenedora con
una línea que lo conecta a la clase contenida. Todo este conjunto es, semánticamente, un
objeto extendido que es tratado como una única unidad en muchas operaciones, aunque
físicamente está hecho de varios objetos más pequeños.
Composición

El rombo negro muestra una relación de composición: el almacén


está compuesto de cuentas, si se elimina el almacén las cuentas por
si solas no tienen sentido como una entidad separada del almacén y
se eliminan
li i también.
bié Ell rombob sini rellenar
ll muestra una relación
l ió de
d
agregación: el almacén tiene clientes, si el almacén cierra los clientes
irán a otro, su razón de existir sigue teniendo sentido sin el almacén.
Diferencias entre Composición y Agregación

Relación de Composición
Cuandod intentamos
i representar un todo
d y sus partes. Ejemplo,
j l un motor es una
parte de un coche.
Cuando se elimina el contenedor, el contenido también es eliminado. Ejemplo, si
eliminamos una universidad eliminamos igualmente
g sus departamentos.
p
Relación de Agregación (o Agrupación)
Cuando representamos las relaciones en un software o base de datos. Ejemplo, el
modelo de motor MTR01 es parte del coche MC01. Como tal, el motor MTR01
puede
d ser partet ded cualquier
l i otro t modelo
d l de
d coche,
h es decir
d i sii eliminamos
li i ell
coche MC01 no es necesario eliminar el motor pues podemos usarlo en otro
modelo.
Cuando el contenedor es eliminado, el contenido usualmente no es destruido.
Ejemplo, un profesor tiene estudiantes, cuando el profesor muere los estudiantes
no mueren con él o ella.
Así, una relación de agregación es a menudo "clasificar" o "catalogar" contenido
para distinguirlo del todo "físico"
físico del contenedor.
contenedor
Generalización

Generalización es otro nombre para herencia. Se refiere a una


relación entre dos clases en donde una Clase “Específica” es una
versión especializada de la otra, o Clase “General”. Por ejemplo,
Honda es un tipo de auto,
auto por lo que la Clase “Honda”
Honda va a tener una
relación de generalización con la Clase “Auto”.
Bibliografía

Larman G. (2002). UML y Patrones 2/E: Pearson Educacion

También podría gustarte