Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML

44
Unidad 4 HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO

Transcript of Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML

Page 1: Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML

Unidad 4HERENCIA, CLASES ABSTRACTAS, INTERFACES Y

POLIMORFISMO

Page 2: Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML

UML

• UML (UnifiedModeling Language) esun lenguaje quepermite modelar,construir ydocumentar loselementos que formanun sistema softwareorientado a objetos.

UML

CONSTRUIR

VISUALIZAR

DOCUMENTAR

ESPECIFICAR

Page 3: Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML

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

Page 4: Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML

Diagrama de clases

• Diagrama estático que describe la estructura de unsistema mostrando sus clases, atributos y lasrelaciones entre ellos.

• Son utilizados durante el proceso de análisis ydiseño de los sistemas para crear el diseñoconceptual de la información que se manejará.

Page 5: Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML

Representación de clases

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

Page 6: Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML

Ejemplo

Page 7: Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML

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 yvisibilidad con el entorno, estos son:

• Public (+): el atributo será visible tanto dentro comofuera de la clase.

• Private (-): el atributo sólo será accesible desde dentrode la clase (sólo sus métodos pueden manipular losatributos).

• Protected (#): el atributo no será accesible desde fuerade la clase, pero si podrá ser manipulado por métodosde la clase y de sus subclases.

• Static (underlined)

Page 8: Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML
Page 9: Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML

Ejercicio

• Crear un proyecto UML llamado Asociacion en elque se diseñe un diagrama de clases que modele elproceso de dar de alta a cada una de las personasque 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 asignaun código de asociado alfanumérico y se anota lafecha de alta.

• La clase Fecha se modela con tres campos (día, mesy año) de tipo entero.

Page 10: Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML

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

Page 11: Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML

Ejercicio

• Representa mediante un diagrama de clases la siguienteespecificación sobre las personas que participan en una película:

• De cada película se almacena el título, la sinopsis, el año, elgé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 necesarioconocer el nombre, los apellidos, la fecha de nacimiento y lanacionalidad.

• 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 unapelícula.

• Una película puede tener asociados varios trailers que soneditados por una o más personas. No puede existir el trailer deuna película hasta que existe la película.

Page 12: Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML
Page 13: Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML
Page 14: Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML

Interacciones entre clases (relaciones)• Herencia (Especialización/Generalización):

• Composición:

• Agregación:

• Dependencia o Instanciación (uso):

• Asociación:

• Involutiva

Page 15: Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML

Relaciones Involutivas

• Cuando la misma clase aparece en los dos extremos de la asociación.

Page 16: Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML

Agregación

• La agregación es un tipo de asociación que indicaque una clase es parte de otra clase.

• Los componentes pueden ser compartidos porvarios compuestos.

• La destrucción del compuesto no conlleva ladestrucción de los componentes.

Una empresa agrupa a varios clientes

Page 17: Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML

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.

Page 18: Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML

Composición

Page 19: Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML

Composición

• Tenemos una clase Empresa.• Un objeto Empresa está a su vezcompuesto por uno o varios objetos deltipo empleado.• El tiempo de vida de los objetosEmpleado depende del tiempo de vidade Empresa, ya que si no existe unaEmpresa no pueden existir susempleados.

Page 20: Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML

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

Page 21: Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML

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.

Page 22: Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML

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 yasea instanciandola directamente, obien, recibiéndola como parámetro de entrada en uno desus métodos.

Page 23: Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML

Herencia

• La relación entre super clases y subclases

Page 24: Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML
Page 25: Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML

Adicionales

• Los elementos adicionales que pueden aparecer enuna relación de este tipo son los siguientes:

• Rol: Identifica con nombres a los elementos queaparecen en los extremos de la línea que denota larelación, dicho nombre describe la semántica quetiene la relación en el sentido indicado.

• Multiplicidad: La multiplicidad de una relacióndetermina cuantos objetos de cada tipo intervienenen la relación. Presenta las siguientescaracterísticas:

Page 26: Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML

Multiplicidad

• Cada asociación tiene dos multiplicidades (una para cadaextremo de la relación)

• Para especificar hay que indicar que la multiplicidad mínimay máxima (mínima...máxima)

• Una multiplicidad mínima mayor igual que 1 establece unarelación obligatoria

Page 27: Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML
Page 28: Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML
Page 29: Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML

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

Page 30: Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML

¿En qué consiste?

• En un principio, existen dos clases, a las quellamaremos padre (superclase o clase base) e hija(subclase o clase derivada).

• Al igual que las herencias en la vida real, la clasehija pasa a tener lo que tiene la clase padre:• Atributos• Métodos

• Un objeto de la clase hija es también un objeto dela clase padre.

• En la clase hija se definen las diferencias respectode la clase padre.

Page 31: Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML

¿En qué consiste?

• Si una clase B hereda de otra clase Aentonces:• 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

Page 32: Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML

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

Page 33: Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML
Page 34: Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML

Ejemplo

• Por ejemplo en un proyecto que utilice objetos Taxi y objetos Autobus podríamos encontrarnos algo así:

Page 35: Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML

Un ejemplo

Page 36: Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML
Page 37: Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML

¿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

Page 38: Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML

Desventajas

• Se introduce una fuerte dependencia en la clase hijarespecto a la clase padre

• Un cambio en la clase padre puede tener efectosimprevistos en las clases hijas

• Un objeto de una clase hija puede tener uncomportamiento inconsistente con lo esperado de unobjeto de la clase padre

• Se establece una jerarquía o clasificación.

• Si cambia el criterio de clasificación puede acarrearmuchas modificaciones

Page 39: Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML

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

Page 40: Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML

Ejemplo

Page 41: Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML

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

Page 42: Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML

Caso de estudio

• Representa mediante un diagrama de clases lasiguiente especificación sobre una empresa:

• Una aplicación necesita almacenar informaciónsobre empresas, sus empleados y sus clientes.

• Ambos se caracterizan por su nombre y edad.

• Los empleados tienen un sueldo bruto, losempleados que son directivos tienen una categoría,así como un conjunto de empleados subordinados.

• De los clientes además se necesita conocer suteléfono de contacto.

• La aplicación necesita mostrar los datos deempleados y clientes

Page 43: Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML

Solución

Page 44: Unidad 4 a HERENCIA, CLASES ABSTRACTAS, INTERFACES Y POLIMORFISMO . UML

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óndebe guardar la información de los pedidos que realizan sus clientes y lafecha en que se formalizan.

• Los pedidos constan habitualmente de varios productos. El coste totaldel pedido se calcula a partir de los precios individuales de cadaproducto, así como de la cantidad e impuestos asociados a cada uno. Esimportante mantener información sobre las existencias de cadaproducto con el fin de poder informar al cliente si habrá retrasos en laentrega 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.