2. UML
• UML (Unified
Modeling Language) es
un lenguaje que
permite modelar,
construir y
documentar los
elementos que forman
un sistema software
orientado a objetos.
UML
CONSTRUIR
VISUALIZAR
DOCUMENTAR
ESPECIFICAR
3. UML
• Diagramas de estructura enfatizan en los elementos
que deben existir en el sistema modelado:
• Diagrama de clases
• Diagrama de componentes
• Diagrama de objetos
• Diagrama de estructura compuesta (UML 2.0)
• Diagrama de despliegue
• Diagrama de paquetes
4. Diagrama de clases
• Diagrama estático que describe la estructura de un
sistema mostrando sus clases, atributos y las
relaciones entre ellos.
• Son utilizados durante el proceso de análisis y
diseño de los sistemas para crear el diseño
conceptual de la información que se manejará.
7. Representación de Atributos y
Métodos
• Los atributos y los métodos de una clase pueden ser de
tres tipos, que definen su grado de comunicación y
visibilidad con el entorno, estos son:
• Public (+): el atributo será visible tanto dentro como
fuera de la clase.
• Private (-): el atributo sólo será accesible desde dentro
de la clase (sólo sus métodos pueden manipular los
atributos).
• Protected (#): el atributo no será accesible desde fuera
de la clase, pero si podrá ser manipulado por métodos
de la clase y de sus subclases.
• Static (underlined)
8.
9. Ejercicio
• Crear un proyecto UML llamado Asociacion en el
que se diseñe un diagrama de clases que modele el
proceso de dar de alta a cada una de las personas
que se apuntan a una asociación.
• De cada persona interesa saber sus datos básicos:
DNI, nombre completo y fecha de nacimiento.
Cuando cada nuevo socio se da de alta, se le asigna
un código de asociado alfanumérico y se anota la
fecha de alta.
• La clase Fecha se modela con tres campos (día, mes
y año) de tipo entero.
10. Ejercicio
• Se desea diseñar un diagrama de clases sobre la
información de las reservas de una empresa
dedicada al alquiler de automóviles, teniendo en
cuenta que:
• Es importante registrar la fecha de inicio y la fecha
final de la reserva, el precio de alquiler de cada
auto, litros de gasolina al momento de la reserva.
• Todo auto siempre tiene asignado un garaje que no
puede cambiar. De cada auto se requiere la
matrícula, modelo, color y marca.
• Cada reserva se realiza en una determinada agencia
11. Ejercicio
• Representa mediante un diagrama de clases la siguiente
especificación sobre las personas que participan en una película:
• De cada película se almacena el título, la sinopsis, el año, el
género al que pertenece (drama, comedia, acción, terror,
romance, aventura, scifi) y el país.
• Sobre las personas que participan en la película es necesario
conocer el nombre, los apellidos, la fecha de nacimiento y la
nacionalidad.
• Una persona puede participar en una película como actor,
director, productor o guionista.
• Una persona se considera actor si ha actuado al menos en una
película.
• Una película puede tener asociados varios trailers que son
editados por una o más personas. No puede existir el trailer de
una película hasta que existe la película.
16. Agregación
• La agregación es un tipo de asociación que indica
que una clase es parte de otra clase.
• Los componentes pueden ser compartidos por
varios compuestos.
• La destrucción del compuesto no conlleva la
destrucción de los componentes.
Una empresa agrupa a
varios clientes
17. Composición
• Tipo de asociación fuerte donde la vida de la clase
contenida debe coincidir con la vida de la clase
contenedor.
• Los componentes constituyen una parte del objeto
compuesto.
• Los componentes no pueden ser compartidos por
varios objetos compuestos.
• Si se elimina los objetos compuestos, se eliminan
también sus componentes.
19. Composición
• Tenemos una clase Empresa.
• Un objeto Empresa está a su vez
compuesto por uno o varios objetos del
tipo empleado.
• El tiempo de vida de los objetos
Empleado depende del tiempo de vida
de Empresa, ya que si no existe una
Empresa no pueden existir sus
empleados.
20. Diferencias entre Composición y
Agregación
Agregación Composición
Varias asociaciones
comparten los
componentes
Sí No
Destrucción de los
componentes al destruir
el compuesto
No Sí
Cardinalidad a nivel
compuesto
Cualquiera 0..1 ó 1
Representación Rombo transparente Rombo negro
21. Dependencia
• Es una relación de uso entre dos clases (una usa a
la otra). Esta relación es la más básica entre clases y
comparada con los demás tipos de relación, la mas
débil.
• Tenemos una clase Impresora..
• Tenemos una clase Documento con un atributo texto.
• La clase Impresora se encarga de imprimir los Documentos.
22. Dependencia
• La ClaseA usa a la ClaseB.
• La ClaseA depende de la ClaseB.
• Dada la dependencia, todo cambio en la ClaseB podrá
afectar a la ClaseA.
• se interpreta como que la ClaseA hace uso de la ClaseB ya
sea instanciandola directamente, o
bien, recibiéndola como parámetro de entrada en uno de
sus métodos.
25. Adicionales
• Los elementos adicionales que pueden aparecer en
una relación de este tipo son los siguientes:
• Rol: Identifica con nombres a los elementos que
aparecen en los extremos de la línea que denota la
relación, dicho nombre describe la semántica que
tiene la relación en el sentido indicado.
• Multiplicidad: La multiplicidad de una relación
determina cuantos objetos de cada tipo intervienen
en la relación. Presenta las siguientes
características:
26. Multiplicidad
• Cada asociación tiene dos multiplicidades (una para cada
extremo de la relación)
• Para especificar hay que indicar que la multiplicidad mínima
y máxima (mínima...máxima)
• Una multiplicidad mínima mayor igual que 1 establece una
relación obligatoria
27.
28.
29. Herencia
• Tipo especial de relación entre clases
• Es uno de los aspectos que distinguen el Paradigma
de Orientación a Objetos frente a otros paradigmas
• Mecanismo que, bien utilizado, facilita la
modificabilidad y reutilización de los diseños y el
código.
• La Herencia es uno de los 4 pilares de la
programación orientada a objetos (POO) junto con
la Abstracción, Encapsulación y Polimorfismo
30. ¿En qué consiste?
• En un principio, existen dos clases, a las que
llamaremos padre (superclase o clase base) e hija
(subclase o clase derivada).
• Al igual que las herencias en la vida real, la clase
hija pasa a tener lo que tiene la clase padre:
• Atributos
• Métodos
• Un objeto de la clase hija es también un objeto de
la clase padre.
• En la clase hija se definen las diferencias respecto
de la clase padre.
31. ¿En qué consiste?
• Si una clase B hereda de otra clase A
entonces:
• B incorpora la estructura (atributos) y
comportamiento (métodos) de la clase A.
• B puede incluir adaptaciones:
• B puede añadir nuevos atributos
• B puede añadir nuevos métodos
• B puede redefinir métodos
32. El proceso de herencia es
transitivo
• B puede redefinir métodos
• B hereda de A
• A es la superclase y B la subclase
• C hereda de B y A
• B y C son subclases de A
• B es un descendiente directo de A
• C es un descendiente indirecto de A
33.
34. Ejemplo
• Por ejemplo en un proyecto que utilice objetos Taxi
y objetos Autobus podríamos encontrarnos algo
así:
37. ¿Para qué se usa?
• Para extender la funcionalidad de la clase padre.
• Para especializar el comportamiento de la clase
padre.
• Ventajas
• Se ahorra código Permite reutilizar código extendiendo
su funcionalidad
38. Desventajas
• Se introduce una fuerte dependencia en la clase hija
respecto a la clase padre
• Un cambio en la clase padre puede tener efectos
imprevistos en las clases hijas
• Un objeto de una clase hija puede tener un
comportamiento inconsistente con lo esperado de un
objeto de la clase padre
• Se establece una jerarquía o clasificación.
• Si cambia el criterio de clasificación puede acarrear
muchas modificaciones
39. Tipos de herencia
• Herencia simple
• Una clase puede heredar de una única
clase
• Herencia múltiple
• Una clase puede heredar de varias
clases. Cabe decir también que en java
no se permite la herencia múltiple
41. Diseño de jerarquías de herencia
• Generalización (Factorización )
• Se detectan clases con un comportamiento común
• Ejemplo: Libro y Revista son Publicaciones
• Especialización (Abstracción )
• Se detecta que una clase es un caso especial de
otra
• Ejemplo: Rectángulo es un tipo de Polígono
42. Caso de estudio
• Representa mediante un diagrama de clases la
siguiente especificación sobre una empresa:
• Una aplicación necesita almacenar información
sobre empresas, sus empleados y sus clientes.
• Ambos se caracterizan por su nombre y edad.
• Los empleados tienen un sueldo bruto, los
empleados que son directivos tienen una categoría,
así como un conjunto de empleados subordinados.
• De los clientes además se necesita conocer su
teléfono de contacto.
• La aplicación necesita mostrar los datos de
empleados y clientes
44. Caso de estudio
• Representa mediante un diagrama de clases la siguiente especificación
relacionada con una aplicación de gestión de pedidos. Dicha aplicación
debe guardar la información de los pedidos que realizan sus clientes y la
fecha en que se formalizan.
• Los pedidos constan habitualmente de varios productos. El coste total
del pedido se calcula a partir de los precios individuales de cada
producto, así como de la cantidad e impuestos asociados a cada uno. Es
importante mantener información sobre las existencias de cada
producto con el fin de poder informar al cliente si habrá retrasos en la
entrega del pedido.
• El pedido podrá pagarse de una vez o en varios pagos.
• Las formas de pago posible son:
• Tarjeta de crédito (fecha de caducidad, número, VISA o MASTERCARD)
• Efectivo (moneda)
• Cheque (nombre, entidad bancaria)
• El pedido podrá estar en uno de los siguientes estados:
• pendiente, pagado, procesando, enviado y entregado.