PDF de programación - Herencia - Java y Servicios Web I - Master en Ingeniería Matemática

Imágen de pdf Herencia - Java y Servicios Web I - Master en Ingeniería Matemática

Herencia - Java y Servicios Web I - Master en Ingeniería Matemáticagráfica de visualizaciones

Publicado el 14 de Enero del 2017
791 visualizaciones desde el 14 de Enero del 2017
632,6 KB
32 paginas
Creado hace 8a (13/05/2012)
Herencia

Java y Servicios Web I

Master en Ingeniería Matemática

Manuel Montenegro

Dpto. Sistemas Informáticos y Computación

Desp. 467 (Mat)

montenegro@fdi.ucm.es

Contenidos

● Extensión mediante herencia.
● Reescritura de métodos.
● Modificador de acceso protected.
● Jerarquía de clases.
● La clase Object.

14/Mayo/2012

4. Herencia

2

Herencia

● Mecanismo de la programación orientada a

objetos diseñado para la reutilización y la
extensibilidad.

● Permite añadir funcionalidad a una clase ya

existente.

Superclase

Subclase

14/Mayo/2012

4. Herencia

3

Persona

String nombre;

Fecha fechaNacimiento;

int dni;

<<constructor>>

String getNombre()

Fecha getFechaNacimiento()

int getDni()

void imprimirDatos()

Ejemplo: Persona

public class Persona {
private String nombre;
private Fecha fechaNacimiento;
private int dni;

public Persona(String nombre,
Fecha fechaNacimiento, int dni) {
this.nombre = nombre;
this.fechaNacimiento = fechaNacimiento;
this.dni = dni;
}

public void imprimirDatos() {
System.out.print("DNI: ");
System.out.println(dni);
System.out.println("NOMBRE: " + nombre);
System.out.print("FECHA DE NACIMIENTO: ");
fechaNacimiento.imprimir();
System.out.println();
}
}

14/Mayo/2012

4. Herencia

4

Ejemplo: Persona

Persona

String nombre;

Fecha fechaNacimiento;

int dni;

<<constructor>>

String getNombre()

Fecha getFechaNacimiento()

int getDni()

void imprimirDatos()

Empleado
int sueldoBase;
int getSueldo()

14/Mayo/2012

4. Herencia

5

Ejemplo: Persona

public class Empleado extends Persona {
private int sueldoBase;

public int getSueldo() {
return sueldoBase;
}
}

Persona

String nombre;

Fecha fechaNacimiento;

int dni;

<<constructor>>

String getNombre()

Fecha getFechaNacimiento()

int getDni()

void imprimirDatos()

Empleado
int sueldoBase;
int getSueldo()

14/Mayo/2012

4. Herencia

6

Contenidos

● Extensión mediante herencia.
● Reescritura de métodos.
● Modificador de acceso protected.
● Jerarquía de clases.
● La clase Object.

14/Mayo/2012

4. Herencia

7

Reescritura de métodos

Persona

String nombre;

Fecha fechaNacimiento;

int dni;

<<constructor>>

String getNombre()

Fecha getFechaNacimiento()

int getDni()

void imprimirDatos()

public class Empleado extends Persona {

public void imprimirDatos() {
System.out.print("DNI: ");
System.out.println(dni);
System.out.println("NOMBRE: " + nombre);
System.out.print("FECHA DE NACIMIENTO: ");
fechaNacimiento.imprimir();
System.out.println();
System.out.print(“SUELDO: “);
System.out.println(sueldoBase);
}
}

Empleado
int sueldoBase;
int getSueldo()

void imprimirDatos()

14/Mayo/2012

4. Herencia

8

Reescritura de métodos

Persona

String nombre;

Fecha fechaNacimiento;

int dni;

<<constructor>>

String getNombre()

Fecha getFechaNacimiento()

int getDni()

void imprimirDatos()

public class Empleado extends Persona {

public void imprimirDatos() {
super.imprimirDatos();
System.out.print(“SUELDO: “);
System.out.println(sueldoBase);
}
}

Empleado
int sueldoBase;
int getSueldo()

void imprimirDatos()

14/Mayo/2012

4. Herencia

9

Reescritura de métodos

Persona

String nombre;

Fecha fechaNacimiento;

int dni;

<<constructor>>

String getNombre()

Fecha getFechaNacimiento()

int getDni()

void imprimirDatos()

public class Empleado extends Persona {

public Empleado(String nombre, Fecha fechaNacimiento,
int dni, int sueldoBase) {
this.nombre = nombre;
this.fechaNacimiento = fechaNacimiento;
this.dni = dni;
this.sueldoBase = sueldoBase;
}

}

Empleado
int sueldoBase;
<<constructor>>
int getSueldo()

void imprimirDatos()

14/Mayo/2012

4. Herencia

10

Reescritura de métodos

Persona

String nombre;

Fecha fechaNacimiento;

int dni;

<<constructor>>

String getNombre()

Fecha getFechaNacimiento()

int getDni()

void imprimirDatos()

Empleado
int sueldoBase;
<<constructor>>
int getSueldo()

void imprimirDatos()

public class Empleado extends Persona {

public Empleado(String nombre, Fecha fechaNacimiento,
int dni, int sueldoBase) {
super(nombre, fechaNacimiento, dni);
this.sueldoBase = sueldoBase;
}


}

● La primera línea del constructor de la

subclase ha de llamar al constructor
de la superclase.

● Si no lo hace, se intentará llamar

automáticamente al constructor por
defecto.

14/Mayo/2012

4. Herencia

11

Contenidos

● Extensión mediante herencia.
● Reescritura de métodos.
● Modificador de acceso protected.
● Jerarquía de clases.
● La clase Object.

14/Mayo/2012

4. Herencia

12

Modificadores de acceso

● ¿Qué elementos de la superclase son accesibles

desde la subclase?
● Los métodos y atributos public son accesibles.
● Los métodos y atributos private no son accesibles,

aunque sí se heredan.

● Si queremos que un atributo o método privado

sea accesible desde las subclases, tendremos
que definirlo en la superclase con el
modificador protected.

public class Empleado extends Persona {
protected int sueldoBase;
}

14/Mayo/2012

4. Herencia

13

Modificadores de acceso

public

protected private

Dentro de la

clase

Subclases

Otro sitio

14/Mayo/2012

4. Herencia

14

Ejemplo: Estudiante

public class Estudiante extends Persona {
private int puntuacionTotal;
private int numeroCalificaciones;

public Empleado(String nombre, Fecha fechaNacimiento,
int dni) {
super(nombre, fechaNacimiento, dni);
this.sueldoBase = sueldoBase;
this.puntos = 0;
this.numeroCalificaciones = 0;
}
public void nuevaCalificacion(int puntos) {
puntuacionTotal += puntos;
numeroCalificaciones++;
}
public double getNotaMedia() {
return ((double) puntos)/numeroCalificaciones;
}

public void imprimirDatos() {
super.imprimirDatos();
System.out.println(“NOTA MEDIA: “);
System.out.println(getNotaMedia());
}
}

Persona

String nombre;

Fecha fechaNacimiento;

int dni;

<<constructor>>

String getNombre()

Fecha getFechaNacimiento()

int getDni()

void imprimirDatos()

Estudiante

int puntuacionTotal;

int numeroCalificaciones

<<constructor>>

void nuevaCalificacion(int)

double getNotaMedia()

void imprimirDatos()

14/Mayo/2012

4. Herencia

15

Contenidos

● Extensión mediante herencia.
● Reescritura de métodos.
● Modificador de acceso protected.
● Jerarquía de clases.
● La clase Object.

14/Mayo/2012

4. Herencia

16

Jerarquía de clases

Persona

Estudiante

Empleado

● Conceptualmente, la relación entre las

superclases y las subclases es de tipo es-un.

● Representan concreciones sobre el concepto

de Persona.

14/Mayo/2012

4. Herencia

17

Jerarquía de clases

Persona

Estudiante

Empleado

EmpleadoComision

● La jerarquía puede extenderse a varios niveles.
● No se permite herencia múltiple: una clase

sólo tiene una superclase.

14/Mayo/2012

4. Herencia

18

Ejemplo: EmpleadoComision

public class EmpleadoComision extends Empleado
{
private double porcentajeComision;
private int dineroVentas;

public EmpleadoComision(String nombre, Fecha fechaNacimiento, int dni,
int sueldoBase, double porcentajeComision) {
super(nombre, fechaNacimiento, dni, sueldoBase);
this.porcentajeComision = porcentajeComision;
this.dineroVentas = 0;
}

public void vender(int dineroVenta) { this.dineroVentas += dineroVenta; }

public int getSueldo() {
return sueldoBase + (int) (dineroVentas * porcentajeComision / 100.0);
}
}

Acceso a atributo protected

14/Mayo/2012

4. Herencia

19

Ejemplo: EmpleadoComision

public class TestEmpleadoComision {
public static void main(String[] args) {
EmpleadoComision ec = new EmpleadoComision(“Fuckencio Martinez”,
new Fecha(15, 3, 1979),
123456, 1000, 20);
ec.vender(200);
System.out.print(“Sueldo: %d\n“, ec.getSueldo());

ec.imprimirDatos();
}
}

1040

● Discusión: ¿qué sueldo muestra el método

imprimirDatos?

14/Mayo/2012

4. Herencia

20

Figuras geométricas

public class Cuadrado {
public Cuadrado(Punto posicion, int ancho) {
super(posicion, ancho, ancho);
}
}

Rectangulo
Punto origen;

int ancho;
int alto;

<<constructor>>
Punto getOrigen()

int getAncho()
int getAlto()
double area()

double perimetro()

void dibujar(Ventana v)

Cuadrado
<<constructor>>

14/Mayo/2012

4. Herencia

21

Figuras geométricas

Rectangulo
Punto origen;

int ancho;
int alto;

<<constructor>>
Punto getOrigen()

int getAncho()
int getAlto()
double area()

double perimetro()

void dibujar(Ventana v)

Cuadrado
<<constructor>>

RectanguloColor

Color colorBorde;
<<constructor>>

Color getColorBorde()
void dibujar(Ventana v)

14/Mayo/2012

4. Herencia

22

Figuras geométricas

RectanguloColor

Color colorBorde;
<<constructor>>

Color getColorBorde()
void dibujar(Ventana v)

RectanguloRelleno

Color colorRelleno;

<<constructor>>

Color getColorRelleno()
void dibujar(Ventana v)

14/Mayo/2012

4. Herencia

23

Contenidos

● Extensión mediante herencia.
● Reescritura de métodos.
● Modificador de acceso protected.
● Jerarquía de clases.
● La clase Object.

14/Mayo/2012

4. Herencia

24

La clase Object

● Definida en el paquete java.lang

● Siempre se importa por defecto.

● Es la raíz de toda jerarquía de clases.
● Si una clase no hereda de ninguna otra

mediante extends, automáticamente hereda
de Object.

● Consecuencia: toda clase hereda, directa o

indirectamente, de Object.

14/Mayo/2012

4. Herencia

25

La clase Object

● No tiene ningún atributo público ni protegido.
● Define 11 métodos, que pueden ser

sobreescritos en las subclases.

http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html

● Nosotros veremos:

● toStr
  • Links de descarga
http://lwp-l.com/pdf814

Comentarios de: Herencia - Java y Servicios Web I - Master en Ingeniería Matemática (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad