Herencia Java y Servicios Web I Master en Ingeniería Matemática

Documentos relacionados
Encapsulación: clases y objetos

Java para programadores

16. Herencia Definición de herencia. 168 A. García-Beltrán y J.M. Arranz

Curso Fundamentos de Informática Lección 7. Programación Orientada a Objetos

Herencia. Hay clases que comparten gran parte de sus características.

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Java Avanzado Facultad de Ingeniería. Escuela de computación.

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

Tema 3. Programación orientada a objetos en Java (Parte 1)

Tema 7.- Fundamentos de la Programación Orientada a Objetos

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

La Herencia: Teoría (1)

POO en Java. Relaciones de composición y Herencia. Composición: clase Círculo. Composición. Herencia: La palabra reservada extends

class Nombre_Clase extends Nombre_SuperClase { cuerpo de la clase extendida }

Prácticas de Programación

Test : Conteste exclusivamente en una HOJA DE LECTURA ÓPTICA, no olvidando marcar que su tipo de examen es A.

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005

Ejercicios del tema 7: Clases y objetos

PROYECTO FIGURAS DIAGRAMA DE FLUJO

Introducción a la Programación en Java

Pruebas de unidad con JUnit

Excepciones y E/S Java y Servicios Web I Master en Ingeniería Matemática

Clases Abstractas e Interfaces

Programación Orientada a Objetos. Java: Excepciones

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

POO en Java IV: Herencia (Parte 1)

FUNDAMENTOS DE PROGRAMACIÓN Curso: 2013/14 EXAMEN PARA ALUMNOS PRESENTADOS AL PRIMER PARCIAL PRIMERA PARTE. EJERCICIO 1 Cuestiones (1 punto)

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Para leer la entrada de consola, lo primero que se hace es construir un Scanner que este asociado al flujo de entrada estándar System.

Programación Orientada a Objetos. Java: Excepciones

b c b c b b a a c a a c b c c b b c b c d c c c b

Introducción a Java LSUB. 30 de enero de 2013 GSYC

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

Java en 2 horas. Rodrigo Santamaría

Clases y Objetos en Java. ELO329: Diseño y Programación Orientados a Objetos

El lenguaje de programación Java

Soluciones Ejercicios Tema 3

Tema 2. El lenguaje de programación Java (Parte 1)

Programación orientada a objetos

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

Programación Orientada a Objetos con Java. Elementos Básicos del Lenguaje Java. Creación de un objeto. Creación de un objeto. Creación de un objeto

Universidad Autónoma de Tlaxcala. M.C. José Juan Hernández Mora. Primera Sesión

Introducción a Java (II) Dr. (c) Noé Alejandro Castro Sánchez

Clases. Java: Clases y Objetos. Clases. Clases. Modificadores de clase. Definición de una clase. Cada objeto es un ejemplar de una clase

Multitarea en Java. Rafa Caballero - UCM

StringBuffer, Math y Wrapper

Universidad de Cantabria

Curso Informática Lección 2. Introducción a la programación en Java

2. Estructura de un programa en Java

RESPUESTA Sí, una clase puede manejar objetos. Aunque esta frase es bastante ambigua, apréndetela de memoria para el examen y no le des más vueltas.

Conceptos más avanzados de Programación Orientada a Objetos

Forma Básica Clase Java

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

Programación orientada a objetos. Capítulo 8 Mejora de las estructuras mediante herencia

UML a Java. Paquetes Ejemplo - Paquetes. Clases - Forma Básica. Clases Forma Avanzada- Curso de Arquitecturas de Software

Java en 3 horas. Ampliación de Sistemas Operativos. Rodrigo Santamaría

Ejercicios de evaluación de fundamentos de programación en Java

PROGRAMACION ORIENTADA A OBJETOS EN C++

Lo que necesitaremos para programar en Java, será un editor de texto o IDE y la JDK.

ÍNDICE DEL LIBRO Y DEL EBOOK APRENDER A PROGRAMAR EN JAVA DESDE CERO. CURSO PASO A PASO.

Clases en Java. Declaración de clases en Java 02/09/16. Ing. Roberto Martínez Román - public class Alumno { private int matricula;

CAPÍTULO 5 H E R E N C I A (Clases abstractas e interfaces)

Iniciación a Java. 1.Introducción a Java 2.Programación Orientada a Objetos 3.Fundamentos del lenguaje Java

FACULTAD DE INGENIERÍA

Repaso de las características más importantes de la programación Java y su adaptación a Android

Curso de Java POO: Programación orientada a objetos

TECNICAS DE PROGRAMACION Universidad Católica Los Angeles de Chimbote METODOS CONSTRUCTORES Y LA REFERENCIA THIS

En este capitulo se estudiarán los conceptos relacionados a métodos, como lo son sobrecarga, métodos estáticos.

CLASES QUE UTILIZAN OBJETOS. RELACIÓN DE USO ENTRE CLASES JAVA. CONCEPTO DE DIAGRAMA DE CLASES. (CU00641B)

Metodología y Tecnología de la Programación

- Compilar y ejecutar programas en Java - Estructura básica de una clase - El comando javac - El comando java - Introducción al IDE de desarrollo

Arquitectura y Lenguaje Java

5. Sentencias selectivas o condicionales

ESCUELA SUPERIOR POLITECNICA DE CHIMBORAZO ESCUELA DE INGENIERIA EN SISTEMAS

Caso práctico Alquiler de películas en un vídeo-club

El lenguaje de Programación C. Fernando J. Pereda

Programación Orientada a Objetos en Java

INICIACIÓN A LA PROGRAMACIÓN LENGUAJE JAVA

Java: un rápido repaso

PRÁCTICA No 4 POO Encapsulación. El alumno conocerá los principios de la encapsulación, y el uso de constructores para la inicialización de datos

2) Cual modificador limita el acceso a un método de una clase pública a los miembros de la misma clase?

Práctica 3 mtp. metodoloxía e tecnoloxía da programación. Presentar detalles básicos sobre la sintaxis del lenguaje de programación Java.

Práctica 4: Herencia. Objetivos:

Programación Orientada a Objetos en C#.NET CAPÍTULO 5 H E R E N C I A. Ing. Bruno López Takeyas, M.C.

Introducción a la Programación Orientada a Objetos

Elementos del lenguaje Java

Objeto Clase Atributo / Método Encapsulamiento Mensaje Herencia Polimorfismo Encadenamiento Dinámico

Experto Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles. Sesión 1: Introducción al Lenguaje Java

Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

Java Básico. Métodos estáticos

Estructura de las Aplicaciones Orientadas a Objetos Herencia y Polimorfismo

Herencia. Amparo López Gaona. Septiembre de Amparo López Gaona () Herencia Septiembre de / 58

Bloque práctico 2: Java

Programación n Orientada a Objetos Sentencias Java Parte I. Ing. Julio Ernesto Carreño o Vargas MsC.

Ejercicios de Programación Tema 7. Programación Orientada a Objetos

Guía - Taller # 2 (JAVA)

Agenda..NET C# Laboratorio #1

Aquí se declaran los. Aquí se declaran los métodos de la clase. *Atributos de la clase

Programación Orientada a Objetos en Java

Transcripción:

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. 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 3

Ejemplo: Persona Persona String nombre; Fecha fechanacimiento; int dni; String getnombre() Fecha getfechanacimiento() int getdni() void imprimirdatos() 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(); 4

Ejemplo: Persona Persona String nombre; Fecha fechanacimiento; int dni; String getnombre() Fecha getfechanacimiento() int getdni() void imprimirdatos() Empleado int sueldobase; int getsueldo() 5

Ejemplo: Persona Persona String nombre; Fecha fechanacimiento; int dni; String getnombre() Fecha getfechanacimiento() int getdni() void imprimirdatos() public class Empleado extends Persona { private int sueldobase; public int getsueldo() { return sueldobase; Empleado int sueldobase; int getsueldo() 6

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

Reescritura de métodos Persona String nombre; Fecha fechanacimiento; int dni; 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() 8

Reescritura de métodos Persona String nombre; Fecha fechanacimiento; int dni; 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() 9

Reescritura de métodos Persona String nombre; Fecha fechanacimiento; int dni; 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; int getsueldo() void imprimirdatos() 10

Reescritura de métodos Persona String nombre; Fecha fechanacimiento; int dni; String getnombre() Fecha getfechanacimiento() int getdni() void imprimirdatos() Empleado int sueldobase; 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. 11

Contenidos Extensión mediante herencia. Reescritura de métodos. Modificador de acceso protected. Jerarquía de clases. La clase Object. 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; 13

Modificadores de acceso Dentro de la clase public protected private Subclases Otro sitio 14

Ejemplo: Estudiante Persona String nombre; Fecha fechanacimiento; int dni; String getnombre() Fecha getfechanacimiento() int getdni() void imprimirdatos() Estudiante int puntuaciontotal; int numerocalificaciones void nuevacalificacion(int) double getnotamedia() void imprimirdatos() 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()); 15

Contenidos Extensión mediante herencia. Reescritura de métodos. Modificador de acceso protected. Jerarquía de clases. La clase Object. 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. 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. 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 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? 20

Figuras geométricas Rectangulo Punto origen; int ancho; int alto; Punto getorigen() int getancho() int getalto() double area() double perimetro() void dibujar(ventana v) public class Cuadrado { public Cuadrado(Punto posicion, int ancho) { super(posicion, ancho, ancho); Cuadrado 21

Figuras geométricas Rectangulo Punto origen; int ancho; int alto; Punto getorigen() int getancho() int getalto() double area() double perimetro() void dibujar(ventana v) Cuadrado RectanguloColor Color colorborde; Color getcolorborde() void dibujar(ventana v) 22

Figuras geométricas RectanguloColor Color colorborde; Color getcolorborde() void dibujar(ventana v) RectanguloRelleno Color colorrelleno; Color getcolorrelleno() void dibujar(ventana v) 23

Contenidos Extensión mediante herencia. Reescritura de métodos. Modificador de acceso protected. Jerarquía de clases. La clase Object. 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. 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: tostring() finalize() equals() 26

Método tostring Obtiene una representación del objeto en forma de cadena de caracteres (String) public String tostring() Los métodos print/println/printf llaman a este método cuando reciben un objeto como parámetro. Fecha f = new Fecha(14, 5, 2012); System.out.println(f) 27

Método tostring // Fecha.java public String tostring() { String cadenames; switch(mes) { case 1: cadenames = "Enero"; break; case 2: cadenames = "Febrero"; break; case 3: cadenames = "Marzo"; break; case 4: cadenames = "Abril"; break; case 5: cadenames = "Mayo"; break; case 6: cadenames = "Junio"; break; case 7: cadenames = "Julio"; break; case 8: cadenames = "Agosto"; break; case 9: cadenames = "Septiembre"; break; case 10: cadenames = "Octubre"; break; case 11: cadenames = "Noviembre"; break; case 12: cadenames = "Diciembre"; break; default: cadenames = "<<mes desconocido>>"; break; return String.valueOf(dia) + " de " + cadenames + " de " + String.valueOf(año); 28

Método finalize Se ejecuta cuando el objeto va a ser eliminado de la memoria. Un objeto es eliminado automáticamente por el recolector de basura de la máquina virtual de Java cuando no hay ninguna referencia que apunte hacia él. No se especifica el momento exacto en el que esto sucede. finalize se utiliza para liberar los recursos asociados al objeto. 29

Método equals Se utiliza para comprobar si dos objetos son iguales. public boolean equals(object o) Por defecto sólo devuelve true si los dos objetos apuntan a la misma referencia. Si se quiere implementar otra noción de igualdad entre objetos, se deberá reescribir el método. 30

Método equals // Fecha.java public boolean equals(object o) { if (o instanceof Fecha) { Fecha f = (Fecha) o; return (this.dia == f.dia) && (this.mes == f.mes) && (this.año == f.año); else { return false; Conversión 31

Referencias P. Deitel, H. Deitel Java. How to Program (9th Edition) Cap. 9. B. Eckel Thinking in Java (3rd Edition) Caps. 6. 32