Unidad 4HERENCIA, CLASES ABSTRACTAS, INTERFACES Y
POLIMORFISMO
UML
• UML (UnifiedModeling Language) esun lenguaje quepermite modelar,construir ydocumentar loselementos que formanun sistema softwareorientado a objetos.
UML
CONSTRUIR
VISUALIZAR
DOCUMENTAR
ESPECIFICAR
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
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á.
Representación de clases
• En UML, una clase es representada por un rectángulo que posee tres divisiones
Ejemplo
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)
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.
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
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.
Interacciones entre clases (relaciones)• Herencia (Especialización/Generalización):
• Composición:
• Agregación:
• Dependencia o Instanciación (uso):
• Asociación:
• Involutiva
Relaciones Involutivas
• Cuando la misma clase aparece en los dos extremos de la asociación.
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
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.
Composición
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.
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
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.
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.
Herencia
• La relación entre super clases y subclases
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:
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
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
¿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.
¿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
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
Ejemplo
• Por ejemplo en un proyecto que utilice objetos Taxi y objetos Autobus podríamos encontrarnos algo así:
Un ejemplo
¿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
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
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
Ejemplo
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
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
Solución
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.