Diagramas de Clases

Descargar como pptx, pdf o txt
Descargar como pptx, pdf o txt
Está en la página 1de 68

LENGUAJE DE MODELADO UNIFICADO

UML

Programación I/2019. Ing. Asencio


• El UML es el lenguaje estándar de modelado
para desarrollo de software utilizando POO.
• El lenguaje UML tiene una gran aplicación en
la representación y modelado de la
información que se utiliza en las fases de
análisis y diseño del ciclo de vida de los
sistemas.
Programación I/2019. Ing. Asencio
Programación I/2019. Ing. Asencio
• Un modelo es una simplificación del sistema real
que se consigue mediante una abstracción;
ignorando los detalles que sean irrelevantes.
• En pocas palabras es la representación gráfica
del sistema real, mediante una simbología que
esquematiza clases, objetos, relaciones, etc.
• El modelado pretende capturar las partes
fundamentales de un sistema.

Programación I/2019. Ing. Asencio


• El lenguaje UML consiste de un conjunto de
símbolos y reglas para visualizar, especificar,
construir y documentar software.
• Está compuesto por tres categorías de
diagramas:
 De estructura
 De comportamiento
 De interacción

Programación I/2019. Ing. Asencio


CLASIFICACION DE DIAGRAMAS UML

Programación I/2019. Ing. Asencio


• Los diagramas de estructura enfatizan en los
elementos que deben existir en el sistema
modelado (los requerimientos):
• 1. Diagrama de clases
• 2. Diagrama de componentes
• 3. Diagrama de objetos
• 4. Diagrama de estructura compuesta (UML 2.0)
• 5. Diagrama de despliegue
• 6. Diagrama de paquetes
Programación I/2019. Ing. Asencio
• Los diagramas de comportamiento enfatizan
en lo que debe suceder en el sistema
modelado:
• 1. Diagrama de actividades
• 2. Diagrama de casos de uso
• 3. Diagrama de estados

Programación I/2019. Ing. Asencio


• Los diagramas de interacción, son un subtipo
de diagramas de comportamiento. Enfatiza
sobre el flujo de control y de datos entre los
elementos del sistema modelado:
• 1. Diagrama de secuencia
• 2. Diagrama de comunicación
• 3. Diagrama de tiempos (UML 2.0)
• 4. Diagrama de vista de interacción (UML 2.0)

Programación I/2019. Ing. Asencio


DIAGRAMAS DE CLASES

Programación I/2019. Ing. Asencio


El modelo conceptual o modelo de dominio es
una primera aproximación al diagrama de clases
del sistema.
Es el encargado de mostrar el conjunto de clases
conceptuales del problema y las relaciones
presentes entre si.
En esta etapa lo que se busca es identificar los
conceptos más relevantes del problema, sus
atributos y relaciones.
Programación I/2019. Ing. Asencio
El modelo conceptual no es una descripción de los
componentes del software; sino más bien representa los
conceptos en el dominio del problema en el mundo real.

Cuando se está elaborando el modelo conceptual lo más


relevante es el nombre de la clase y de ser posible, sus
atributos.

Programación I/2019. Ing. Asencio


Un Diagrama de Clases es una representación
gráfica de las clases de un sistema.
Sirve para modelar el sistema en términos de sus
clases, atributos y las relaciones entre estos
elementos.
Este tipo de diagramas proporcionan un medio de
capturar la estructura física de un sistema.
Se utiliza en la etapa de análisis del problema y
diseño de la solución.
Programación I/2019. Ing. Asencio
• Un diagrama de clases esta compuesto por los siguientes
elementos:
 Clase: atributos, métodos y visibilidad.
 Relaciones: Es una conexión entre clases. Dependencia,
Asociación, Agregación, composición y Generalización.
 Multiplicidad: Representa la cantidad de objetos de una
clase que se relacionan con un objeto de la clase
asociada.
Programación I/2019. Ing. Asencio
CLASE
• Es la unidad básica que encapsula toda la
información de un Objeto (un objeto es una
instancia de una clase).
• A través de ella podemos modelar el entorno
en estudio (una Casa, un Auto, una Cuenta
Corriente, etc.).

Programación I/2019. Ing. Asencio


• En UML, una clase es representada por un
rectángulo que posee tres divisiones:

Programación I/2019. Ing. Asencio


La parte superior: Contiene el nombre de la Clase
La parte intermedia: Contiene los atributos (o
variables de instancia) que caracterizan a la Clase.
La parte inferior: Contiene los métodos u
operaciones, los cuales son la forma como
interactúa el objeto con su entorno.

Programación I/2019. Ing. Asencio


EJEMPLO

Cuenta

saldo
depositar
retirar
calcularSaldo

Programación I/2019. Ing. Asencio


ATRIBUTOS
Los atributos o características de una Clase
pueden tener cinco tipos de accesibilidad, 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 accesible desde todos lados.
Programación I/2019. Ing. Asencio
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 y
por las subclases que heredan de ella.
Programación I/2019. Ing. Asencio
• Internal ( ~ ): Los miembros de tipo internal
solo resultan accesibles dentro del
ensamblado al que pertenecen.
• protected internal ( #~ ): Permite que la
propia clase, sus subclases y las del
ensamblado al que pertenece accedan a sus
miembros.

Programación I/2019. Ing. Asencio


METODOS
• Los métodos u operaciones de una clase
son la forma en como ésta interactúa con
su entorno.
• Pueden tener los mismos modificadores de
acceso que los atributos: public(+, ),
private (-, ), protected (#, ),
internal o protected internal.

Programación I/2019. Ing. Asencio


RELACIONES ENTRE CLASES
• Las clases no actúan aisladas entre sí, al
contrario, están relacionadas unas con otras.
• Las relaciones permiten que una clase conozca
sobre los atributos, operaciones y relaciones de
otras clases.
• Las relaciones entre clases se corresponden con
las relaciones entre objetos físicos del mundo
real u objetos imaginarios de un mundo virtual.

Programación I/2019. Ing. Asencio


MULTIPLICIDAD EN LAS RELACIONES
• Representa la cantidad de objetos de una
clase que se relacionan con un objeto de la
clase asociada. Puede ser:
 uno a muchos: 1..* (1..n)
 0 a muchos: 0..* (0..n)
 x a y (enteros) (x .. y)
 m (entero) (m denota el entero).
 m , n (enteros) (m ó n)
Programación I/2019. Ing. Asencio
RELACIONES ENTRE CLASES
En el modelo de clases, existen los siguientes
tipos de relaciones:
1. Dependencia
2. Asociación
3. Agregación
4. composición
5. Generalización

Programación I/2019. Ing. Asencio


DEPENDENCIA
• Esta relación indica la necesidad de una clase
hacia otra, es decir que la implantación de una
clase depende de otra.

• Significa que una clase utiliza o necesita a otra


para poder funcionar.

Programación I/2019. Ing. Asencio


DEPENDENCIA
• Un cambio en la especificación de la clase de
la que se depende, puede afectar a la clase
que la utiliza.

• Se representa por una flecha punteada que va


dirigida al elemento del cual se depende.

• Es la relación más débil entre dos clases.

Programación I/2019. Ing. Asencio


Ventana CerrarVentana

• Ventana depende de la clase CerrarVentana


porque necesita leer el contenido de esta clase
para poder cerrar la ventana.

Programación I/2019. Ing. Asencio


ASOCIACION
• Es la relación más importante y común entre
clases.

• Refleja una relación entre dos clases


independientes que se mantiene durante la
vida de los objetos de dichas clases o al menos
durante un tiempo prolongado

Programación I/2019. Ing. Asencio


ASOCIACION
Esta relación se establece cuando dos clases
tienen una dependencia de utilización.
Ambas clases tienen la misma jerarquía.
Significa que una clase contiene una referencia a
un objeto u objetos de la otra clase en forma de
atributo.
Esta relación permite asociar objetos que
colaboran entre sí.

Programación I/2019. Ing. Asencio


• Se representa por una línea continua que
conecta las clases, acompañada del nombre
de la asociación.

Jugador Juega en Equipo

Programación I/2019. Ing. Asencio


• Se puede representar los roles que juegan las
clases dentro de la asociación.

Jugador Juega en Equipo

Empleado Empresa

Programación I/2019. Ing. Asencio


MULTIPLICIDAD EN LAS RELACIONES
• Representa la cantidad de objetos de una
clase que se relacionan con un objeto de la
clase asociada. Puede ser:
 uno a muchos: 1..* (1..n)
 0 a muchos: 0..* (0..n)
 x a y (enteros) (x .. y)
 m (entero) (m denota el entero).
 m , n (enteros) (m ó n)
Programación I/2019. Ing. Asencio
EJEMPLO

Un cliente puede tener asociadas muchas


Ordenes de Compra, en cambio una Orden
de Compra sólo puede tener asociado a un
cliente.
Programación I/2019. Ing. Asencio
Estudiante 0 .. * Asignatura
0 .. *

• Un estudiante puede tener asociada muchas


asignaturas; de igual forma, una asignatura
puede tener asociados muchos estudiantes.

Programación I/2019. Ing. Asencio


• Las dos clases están unidas por una línea y no
por una flecha.
• Cuando las flechas van de izquierda a derecha
y de arriba hacia abajo, se puede omitir la
punta de la flecha.

Programación I/2019. Ing. Asencio


Motorista 1 Taxi
1

• Un motorista puede tener asociada un taxis;


de igual forma, un taxi puede tener asociados
un motoristas.

Programación I/2019. Ing. Asencio


CLASE ASOCIACION
• Cuando una clase se conecta a una asociación
se denomina clase asociación.
• La clase asociación no se conecta a ninguno de
los extremos de la asociación, sino que se
conecta a la asociación real, a través de una
línea punteada.
• Se utiliza para añadir información extra en un
enlace.

Programación I/2019. Ing. Asencio


• Clase asociación Empleado:

Persona Puesto

Empleado
-Salario:float
Programación I/2019. Ing. Asencio
AGREGACION
• La agregación es un tipo de asociación que
indica que una clase es parte de otra clase.
• Una de las clases juega un papel importante
dentro de la relación con las otras clases.
• Permite la representación de relaciones como
«maestro y esclavo», «todo y parte de» o
«compuesto y componentes»

Programación I/2019. Ing. Asencio


AGREGACION
Esta relación también es conocida como “forma
parte de …”

por ejemplo si se tiene la clase: computadora,


esta tiene un monitor, que es otra clase; el
monitor forma parte de la computadora; por lo
tanto tienen una relación de agregación.

Programación I/2019. Ing. Asencio


• Se representa con un rombo a continuación de
la clase que representa el todo «propietaria» y
una línea recta que apunta a la clase que
representa la parte «poseída».
• Esta relación se conoce como «tiene un» ya
que el todo tiene sus partes; una clase es
parte de otra clase.

Programación I/2019. Ing. Asencio


Todo

La destrucción del todo


no conlleva la
destrucción de las partes
Parte

Programación I/2019. Ing. Asencio


Programación I/2019. Ing. Asencio
EJEMPLO
Computadora

CPU Periféricos Memoria

Programación I/2019. Ing. Asencio


Automóvil

1
1 4
Motor Caja de cambios Llantas

Programación I/2019. Ing. Asencio


COMPOSICION
• Es un tipo especial de agregación que impone
algunas restricciones: si el objeto completo se
copia o se borra (elimina), sus partes se copian
o se suprimen con el.
• Una composición es un tipo de relación entre
clases que indica que una clase contiene (o
está compuesta por) objetos de otras clases.

Programación I/2019. Ing. Asencio


• Representa una relación fuerte entre clases.
• A diferencia de la agregación, la composición
indica que la relación entre los objetos es de tipo
“parte/todo”.
• Se representa por un rombo, igual que la
agregación, excepto que el rombo está relleno.

Programación I/2019. Ing. Asencio


Todo La supresión
del todo
conlleva la
supresión de
la parte.
Parte

Programación I/2019. Ing. Asencio


Programación I/2019. Ing. Asencio
EJEMPLO
MesaComedor

1
1 4
Tablero Patas

Programación I/2019. Ing. Asencio


Programación I/2019. Ing. Asencio
• Aquí las flechas tienen punta ya que están
inclinadas.
• El rombo vacío indica una relación de agregación
(siendo la clase Almacén “el todo” y la clase
cliente representa “la parte”).
• El rombo relleno indica una relación de
composición (Si desaparece el almacén,
desaparecen las cuentas).
Programación I/2019. Ing. Asencio
• Un Almacén posee Clientes y Cuentas. Los
rombos van en la clase que está formada por
las otras: el todo y las partes.
• Cuando se destruye la clase Almacén también
es destruida la clase Cuenta asociada, en
cambio no es afectada la clase Cliente
asociada.

Programación I/2019. Ing. Asencio


Programación I/2019. Ing. Asencio
GENERALIZACION
• Es una relación entre un elemento general
llamado superclase o «padre» y un caso mas
concreto de ese elemento denominado subclase
o «hijo».
• Se conoce como relación es – un y en la POO se
le llama herencia.
• Normalmente se lee como «es un» comenzando
con la subclase y derivándose a la superclase. Ej:
un Gato es un tipo de Animal.
Programación I/2019. Ing. Asencio
• La generalización se representa por una línea
continua que comienza en la subclase y
termina en una flecha cerrada en la superclase.
• La generalización no tiene nombre ni ningún
tipo de multiplicidad.
• Una superclase representa una generalización
de las subclases.

Programación I/2019. Ing. Asencio


Animal

es - un

Gato

Programación I/2019. Ing. Asencio


Persona

Empleado Cliente

Programación I/2019. Ing. Asencio


Persona

Empleado Cliente

Empresa

Programación I/2019. Ing. Asencio


Programación I/2019. Ing. Asencio
• La herencia es la propiedad por la cual
instancias de una clase hija puede acceder
tanto a datos como a comportamientos
asociados con una clase padre.
• La herencia siempre es transitiva, de modo que
una clase puede heredar características de
superclases de nivel superior y a la vez servir
de clase padre para otras clases derivadas
(jerarquía de clases).
Programación I/2019. Ing. Asencio
Persona

Empleado Estudiante

Ingeniero Abogado

Programación I/2019. Ing. Asencio


Programación I/2019. Ing. Asencio
ESPECIALIZACION
• Una superclase representa una generalización
de las subclases.
• Una subclase de una clase dada representa
una especialización de la clase superior.
• En el modelado orientado a objetos es útil
introducir clases en un cierto nivel que
pueden no existir en la realidad, pero que son
construcciones conceptuales útiles.

Programación I/2019. Ing. Asencio


• Estas clases se conocen como clases
abstractas y su propiedad fundamental es que
no se pueden crear instancias de ellas.
• Por otra parte, de las subclases de estas clases
abstractas, que corresponden a los objetos del
mundo real, se pueden crear instancias
directamente por si mismas.

Programación I/2019. Ing. Asencio


• La especialización permite la captura de las
características específicas de un conjunto de
objetos que no han sido distinguidos por las
clases ya identificadas.
• Las nuevas características se representan por
una nueva clase, que es una subclase de una de
las clases existentes.
• Es una técnica muy eficiente para extender un
conjunto de clases coherentemente.
Programación I/2019. Ing. Asencio
• Empleado:Persona

Programación I/2019. Ing. Asencio

También podría gustarte