Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% encontró este documento útil (0 votos)
14 vistas31 páginas

Sesion 1

Descargar como pdf o txt
Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1/ 31

Pregrado

SESIÓN 04:
Relación de Herencia
Figura

Figura Bidimensional FiguraTridimensional

Empleado

Círculo Cuadrado Triangulo Esfera Cubo Tetraedro +nombre : String = “ “


+salario : double
+fechaCump : Date

+obtenerDetalles() :
String

Administrador
Ingeniero
Secretaria
+departamento : String

Director

+adjudicarVehiculo : double

+incrementarConcesion()
Herencia
• Es una propiedad que permite que los objetos sean
creados a partir de otros ya existentes, obteniendo
características (métodos y atributos) similares a los ya
existentes. Es la relación entre una clase general y otra
clase mas especifica.
• Es un mecanismo que nos permite crear clases
derivadas a partir de una clase base.
• Permite compartir automáticamente métodos y datos
entre clases subclases y objetos.
• Ejemplo: Si declaramos una clase párrafo derivada de
una clase texto, todos los métodos y variables
asociadas con la clase texto, son automáticamente
heredados por la subclase párrafo.
Herencia
• Se trata de crear una clase hija - subclase - que
hereda de la clase padre - superclase - todos sus
atributos, constructores, getters, setters y
métodos que pueden ser modificados.
• La subclase puede tener sus propios atributos y
métodos.
• Permite la reusabilidad del código.
• En Java se implementa mediante: extends
Herencia - Tipos
▫ Simple
▫ Múltiple, java no las soporta.
Herencia

A
A es un ascendiente o superclase de B. Si la herencia
entre A y B es directa decimos que A es la clase padre de B

B es un descendiente o subclase de A. Si la herencia


entre A y B es directa decimos que B es una clase hija de A
B

• La clase derivada puede añadir nuevas variables y métodos y/o


redefinir las variables y métodos heredados.

• La herencia permite que se puedan definir nuevas clases basadas


en clases existentes.
Herencia en Java
● Java permite definir una clase como subclase de
una clase padre. Clase Padre
class clase_hija extends clase_padre
{
..........
}
La clase Object
En Java existe una clase base que es la
raíz de la jerarquía y de la cual heredan Clase Hija
todas aunque no se diga explícitamente
mediante la clausula extends.

Por ejemplo, podemos definir CuentaAhorros y


CuentaCorriente como subclases que extienden de
CuentaBancaria, ya que esta última agrupa las
características comunes de ambos tipos de cuenta 6
Ejemplo de Herencia

Polygon
#width
#height
+set_values()

Rectangle Triangle

+area() +area()

7
Constructores y Herencia

• Cuando se declara un objeto de una clase derivada, se ejecutan los


constructores siguiendo el orden de derivación, es decir, primero el de la
clase base, y después los constructores de las clases derivadas de arriba a
abajo.
• Para pasar parámetros al constructor de la clase padre: se usa super

super (para1, para2 , ..., paraN)

8
Ejemplo de super

Redefinir método de
La clase padre
Redefinir funciones miembros de la clase padre

class Persona {
private String nombre;
private int edad;
...................
public String Datos( ) { return nombre + edad; }
public void setEdad(int e) { edad = e; }
}
class Alumno extends Persona {
private int curso;
private String nivelAcademico;
...................
public String Datos( ) {
return super.Datos() + curso + nivelAcademico;
}
public void setCurso(int c) { curso = c; }
}
Ejemplo: Construya la subclase Profesor heredada
de la clase Persona
Herencia- Ejemplo
Herencia- Ejemplo

● Debido a que CuentaCorriente extiende de CuentaBancaria,


todos los métodos de esta última son heredados por
CuentaCorriente. Así que las siguientes líneas serían válidas:
CuentaCorriente ctaCte = new CuentaCorriente();
double saldo = ctaCte.getSaldo();
13
Herencia - Ejemplo

➢ Como puede verse, la clase CuentaAhorros está redefiniendo el


método getSaldo, que ya estaba definido en CuentaBancaria.

➢ A esto es lo que se le llama sobrecarga de métodos


14
Ventajas

● Modelado de la realidad: las relaciones de


especialización/generalización entre las
entidades del mundo real.
● Evita redundancias
● Facilita reutilizar código previamente desarrollado.
● Si una clase deriva de otra (extends) hereda todas sus
variables y métodos
● Sirve de soporte para el polimorfismo
Situaciones en la que se aplica herencia

● Especialización
● Extensión
● Especificación
● Construcción
Situaciones en la que se aplica
herencia
Especialización: Dado un concepto B(vehiculo) y otro concepto A (coche)
que representa una especialización de B, entonces puede establecerse una
relación de herencia entre las clases de objetos que representan a A y B.
● Extensión: una clase puede servir para extender
la funcionalidad de una superclase sin que represente
necesariamente un concepto más específico.
● Especificación: Una superclase puede servir para
especificar la funcionalidad mínima común de un
conjunto de descendientes.
Situaciones en las que se aplica la Herencia
Tipos de Herencia

Principalmente existen dos tipos de herencia.

➢ Herencia simple: una clase solo puede tener un padre, por


lo tanto la estructura de clases será en forma de arbol.

➢ Herencia múltiple: Una clase puede tener uno o varios


padres. La estructura de clases es un grafo
Tipos de Herencia

Herencia simple:
➢ Muy fácil de entender y manejar tanto por el
lenguaje como por el programador.
➢ Limitada puesto que en el mundo real un objeto puede
pertenecer a varias clases y sin embargo aquí esta
situación no se puede modelar.
➢ Estructura jerárquica en árbol en donde en la raíz podemos encontrar la
clase Object, de las que heredan todas las clases.
✓ Todas las clases tienen un padre
✓ Todos los objetos son “Object”
Tipos de Herencia

• Herencia múltiple:
➢ Es más realista y da al programador más libertad y mas
posibilidades de reutilización de código.

➢ Es mucho más difícil de utilizar por la posibilidad de


ciclos y para los lenguajes de programación es muy
costoso el permitirlo.
Ejemplo de Herencia Múltiple
Ejemplo de Herencia Simple
Ejercicio - Diseñar la siguiente jerarquía de clases
Persona
Nombre
Edad
Visualizar().

Estudiante
Profesor Nombre...............Heredado
Nombre.................. Heredado Edad.....................Heredado
Edad.........................Heredado Id..........................Definido
Salario......................Definido Visualizar().........Redefinido
Visualizar()..............Heredado

Escribir un programa que manipule la jerarquía de clases, lea un objeto de


cada clase y lo visualice.
Ejercicio - Solución
HERENCIA
Ejemplo

Desarrollar una clase llamada CuentaCorriente que:


• Tenga tres atributos private de tipo Titular (Nombre – String, Apellidos –String y Edad – int), de tipo String (el
número de cuenta) y de tipo double(el saldo).
• Tenga un constructor con parámetros de tipo Titular, String y double.
• Tenga un constructor con parámetros de tipo Titular y String. El saldo se inicializará a 15,3.
• Tenga un getter para cada uno de los atributos.
• Tenga un setter solo para el saldo.
• Tenga un método ingresar que incremente el saldo en una cantidad.
• Tenga un método reintegro que decremente el saldo en una cantidad.
•Tenga un método para que al imprimir la cuenta salga por pantalla el número de cuenta y su saldo.
• Tenga un método para comparar cuentas, sabiendo que dos cuentas serán iguales si sus números de cuenta son
iguales.
Nota 1: Al imprimir por pantalla un Titular saldrá su nombre, apellidos y edad.
Nota 2: Para comparar dos String utilizar su método compareTo(String) que devuelve 0 si son iguales.
HERENCIA
Ejercicios

Desarrollar una clase llamada CuentaAhorro que:


• Es una especialización de CuentaCorriente.
• Tiene un atributo mas de tipo double (el interés).
• Tiene un constructor con parámetros de tipo Titular, String, double y double.
• Tiene un constructor con parámetros de tipo Titular, String y double. El saldo se
inicializará a 15,3.
• Tiene un constructor con parámetros de tipo Titular y String. El saldo se inicializará a
15,3 y el interés a 2,5.
• Tiene un getter para cada uno de los atributos.
• Tiene un método calcularInteres que incremente el saldo según el interés.
Desarrollar la clase Practica6 que en su método main cree varias cuentas de distinto tipo y
trabaje con ellas.
Diagrama de Clases (UML):

También podría gustarte