Unidad 4
HERENCIA, CLASES ABSTRACTAS, INTERFACES Y
POLIMORFISMO
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
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 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á.
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 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)
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.
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 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.
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 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
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 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.
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 ya
sea instanciandola directamente, o
bien, recibiéndola como parámetro de entrada en uno de
sus métodos.
Herencia
• La relación entre super clases y subclases
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:
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
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 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.
¿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
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 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
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 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
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ó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.

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

  • 1.
    Unidad 4 HERENCIA, CLASESABSTRACTAS, INTERFACES Y POLIMORFISMO
  • 2.
    UML • UML (Unified ModelingLanguage) 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 deestructura 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á.
  • 5.
    Representación de clases •En UML, una clase es representada por un rectángulo que posee tres divisiones
  • 6.
  • 7.
    Representación de Atributosy 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)
  • 9.
    Ejercicio • Crear unproyecto 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 deseadiseñ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 medianteun 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.
  • 14.
    Interacciones entre clases (relaciones) •Herencia (Especialización/Generalización): • Composición: • Agregación: • Dependencia o Instanciación (uso): • Asociación: • Involutiva
  • 15.
    Relaciones Involutivas • Cuandola misma clase aparece en los dos extremos de la asociación.
  • 16.
    Agregación • La agregaciónes 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 deasociació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.
  • 18.
  • 19.
    Composición • Tenemos unaclase 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óny 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 unarelació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 ClaseAusa 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.
  • 23.
    Herencia • La relaciónentre super clases y subclases
  • 25.
    Adicionales • Los elementosadicionales 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óntiene 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
  • 29.
    Herencia • Tipo especialde 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 deherencia 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
  • 34.
    Ejemplo • Por ejemploen un proyecto que utilice objetos Taxi y objetos Autobus podríamos encontrarnos algo así:
  • 35.
  • 37.
    ¿Para qué seusa? • 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 introduceuna 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
  • 40.
  • 41.
    Diseño de jerarquíasde 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
  • 43.
  • 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.