Clases Abstractas e Interfaces



Documentos relacionados
PROGRAMACIÓN EN JAVA. { una línea para definir, crear o ejecutar ; }

Programación orientada a objetos

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

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

Tema 1. Herencia y Polimorfismo

HERENCIA (2ª parte) En Java todas las clases derivan de otra, aunque no se diga explícitamente.

Interfaces. Amparo López Gaona. Septiembre de Amparo López Gaona () Interfaces Septiembre de / 1

INDICE Prologo 1 Recorrido rápido de java 2 Clases y objetos 3 Extensión de clases

Tema 4 Genericidad en Java. Programación Orientada a Objetos Curso 2013/2014

Clases abstractas e interfaces en Java

Práctica 2. Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones

Clase adicional 2. Estructuras básicas de control. Temas

18. Interfaces Declaración de una interfaz

Tema 6 Patrones de Diseño. Programación Orientada a Objetos Curso 2010/2011

Tema 3 Herencia en Java Parte 2. Programación Orientada a Objetos Curso 2015/2016

Construcciones del Lenguaje Java

PROGRAMACIÓN ORIENTADA A OBJETOS 1/7/2009. Examen de Java. Nombre: DNI: Titulación:

PROGRAMACIÓN ORIENTADA A OBJETOS 10/02/2009. Examen de Java. Nombre: DNI: Titulación:

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

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

Tema 3 Herencia en Java Parte 2. Programación Orientada a Objetos Curso 2015/2016

Introducción a Java. Fernando Cerezal López. 24 Noviembre 2005

La Herencia: Teoría (1)

Estructuras de control selectivas

Qué es Java? Un lenguaje de programación Un entorno de desarrollo Un entorno de aplicación Un entorno de despliegue Es similar en sintaxis de C + +.

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

Estructura de Datos Unidad 1: Repaso del Lenguaje Java

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

6. Herencia. Clases abstractas. Genericidad. Clase Object Polimorfismo y ligadura dinámica super Herencia y creación Clases abstractas Genericidad

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

Tema 7: Polimorfismo. Índice

Docente: Juan Carlos Pérez P. Alumno : Fecha : Nota:

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

PARTE TEÓRICA - TEST [2,5 PUNTOS]:

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

Estructura de datos y Programación

Tema 2. El lenguaje JAVA

Programación orientada a objetos. Resumen de Temas Unidad 5: Herencia

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

1.2. Es Java un lenguaje ideal para aprender a programar? 1.4. Cuáles son las versiones y distribuciones Java y cuál usar?

Modulo 11. Clases y Objetos en Java

POO: Clases y objetos

JAVA 1. Introducción

Introducción a la Programación en Java

TEMA 5. Agenda. Herencia

Interface nominterface{

Derechos de Acceso: COMPOSICION

A3F. Polimorfismo. Carlos Fontela

Examen Teórico. Convocatoria de Febrero de 2015

Forma Básica Clase Java

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

Java. Introducción a la Programación Orientada a Objetos

Herencia y Polimorfismo

Soluciones Ejercicios Tema 3

Introducción a Java 10/02/2011. Tokens. Juan Manuel Fernández Peña Curso Rev Tokens. Tokens

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

Soluciones Ejercicios Tema 1

Examen Teórico Convocatoria de Junio de 2012

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

3.3 Conceptos Básicos del Lenguaje Java

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

Fundamentos de Programación

Unidad V. Ya veremos qué poner en "algunas_palabras" y "algo_más", por ahora sigamos un poco más.

TECNICAS DE PROGRAMACION Universidad Católica Los Angeles de Chimbote MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE

VARIABLES, CONSTANTES Y EXPRESIONES ASIGNACIÓN. TIPOS ELEMENTALES. PRECEDENCIA DE LOS ESTRUCTURAS DE CONTROL. CONDICIONAL E

abril de 2017 Desarrollo de aplicaciones en Java Tipos de datos primitivos Tipos de datos Elementos de aplicaciones simples

El nuevo C# Alejandro Gassmann Equipo Danysoft

PROGRAMACIÓN GENÉRICA

Curso de Java POO: Programación orientada a objetos

Tema 3: Programación orientada a objetos (I)

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

PRIMER EXAMEN PARCIAL. 5 de febrero de SOLUCIONES

Concurso: Cuánto sabes de JAVA?

3.7 Caracteres, String y Otros Tipos de Datos Arreglos Arreglos en Java Ejemplo de un Arreglo public class public static v o i d a r g s int

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

Introducción a Java. Introducción a Java. Programación I

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

METODOS, SOBRECARGA Y CONSTRUCTORES

Transcripción:

Clases Abstractas e Interfaces Presentación basada en: 1. Java 2., Curso de programación. Fco. Javier Ceballos. Ed. Alfoomega&RA-MA, 2003. 2. Apuntes del Curso Programación Orientado a Objetos. Pablo Castells. Escuela Politécnica Superior, Universidad Autonoma de Madrid. 3. Apuntes del Curso de java. Luis Hernández y Carlos Cervigón. Facultad de Informática. Universidad Católica de Madrid. Clases Abstractas Definición: Clases definidas en la jerarquía que simplemente recogen las características comunes de otra serie de clases ( sus descendientes), pero que no se van a (o no se deben) utilizar para crear ejemplares. Características de una Clase abstracta: Modela el comportamiento común de sus clases derivadas. Establece métodos que necesariamente han de ser implementados por sus subclases (las clases derivadas) METODOS ABSTRACTOS. Métodos sin código, se declaran pero no se definen Deben definirse en alguna subclase Si una subclase no implementa un método abstracto heredado debe ser abstracta también Un método abstracto debe pertenecer a una clase abstracta Implementa métodos que son comunes a todas sus subclases (No abstractos). La clase abstracta puede definir atributos comunes a sus subclases. En el sistema no se crean ejemplares de la clase abstracta porque no serían objetos con existencia propia en el mundo real. new A () ERROR si A abstracta Los objetos que se crearán serán ejemplares de las subclases (aquellas que no sean también abstractas). 1

Clases Abstractas:Ejemplo Clases Abstractas: ObjetoGrafico y Paralelogramo En el programa de dibujo sólo se van a crear objetos gráficos concretos de : puntos, elipses, círculos, cuadrados, rectángulos, rombos o romboides. Métodos Abstractos Clases Abstractas:Ejemplo(2) Para definir una clase como abstracta se coloca la palabra reservada abstract antes de class: public abstract class ObjetoGrafico {... Si en la clase abstracta se quiere obligar a que las subclases implementen un determinado método, basta declararlo como método abstracto. No tendrá cuerpo y terminará en punto y coma: public abstract class ObjetoGrafico { // Abstracta public abstract String tostring(); public abstract void desplaza(); public abstract boolean escerrada(); public abstract double area(); Para definir un método como abstracto se coloca la palabra reservada abstract antes de este Las subclases (no abstractas) no podrán compilarse si no implementan métodos con esos prototipos. 2

Clases Abstractas:Ejemplo(3) // Clase Punto: no abstracta public class Punto extends ObjetoGrafico { private double x; private double y; public Punto() { x = 0; y = 0; public Punto(double cx, double cy) { x = cx; y = cy; public double damex() { return x; public double damey() { return y; public void ponx(double d) { x = d; public void pony(double d) { y = d;.. Clases Abstractas:Ejemplo(4) // Implementa todos los métodos abstractos: public void desplaza(double deltax, double deltay) { x += deltax; y += deltay; public String tostring(){ return "(" + x + "," + y + ")"; public boolean escerrada() { return false; public double area(){return 0; 3

Clases Abstractas:Ejemplo(5) // Paralelogramo: otra clase abstracta public abstract class Paralelogramo extends ObjetoGrafico { protected Punto esquina; public Paralelogramo() { esquina = new Punto(0, 0); public Punto dameesquina() { return esquina; public void ponesquina(punto p) { esquina = p; // Implementa uno de los métodos abstractos public boolean escerrada() { return true; // Todos los paralelogramos son cerrados. Nota: Los métodos abstractos tostring(), desplaza() y area() no presentan problemas por que Paralelogramo es una clase abstracta. Clases Abstractas:Ejemplo(6) // Cuadrado: clase no abstracta public class Cuadrado extends Paralelogramo { protected double lado; public Cuadrado() { super(); lado = 0; public double damelado() { return lado; public void ponlado(double d) { lado = d; // Implementa los otros dos métodos abstractos public String tostring() { return "[" + esquina.tostring() + ", " + lado + "]"; public void desplaza(double deltax, double deltay) { esquina.desplaza(deltax, deltay); public double area(){return lado*lado; 4

Utilidad de los métodos abstractos class ObjetoCompuesto { private Vector objetosgraficos = new Vector (); void agregarobjetos (ObjetoGrafico obj) { objetosgraficos.addelement (obj); Clase Abstracta double area () { double a = 0; Enumeration enum = objetosgraficos.elements (); while (enum.hasmoreelements ()) a += ((ObjetoGrafico) enum.nextelement ()).area (); return a; La clase java.lang.number Es una clase abstracta métodos shortvalue() no abstractos bytevalue() abstract Number longvalue() intvalue() floatvalue() doublevalue() métodos abstractos Byte Double Short Float Integer Long 5

La clase java.lang.object Clase padre por defecto si no se especifica otra class A {... es equivalente a class A extends Object {... Tratamiento genérico de objetos: vectores, etc. Proporciona definición por defecto para métodos como: tostring, finalize, getclass Los arrays son también subclases de Object Meta-información de clases(1) Se puede obtener Meta-información sobre las clases en tiempo de ejecución El operador instanceof Cuadrado c = new Cuadrado(); ObjetoGrafico obj1 = c; c instanceof Cuadrado true c instanceof Paralelogramo true c instanceof ObjetoGrafico true c instanceof Circulo false obj1 instanceof Cuadrado true 6

Meta-información de clases(2) ObjetoGrafico.java C:\ObjetoGrafico.java:82: inconvertible types found : Cuadrado required: Punto if (c instanceof Punto) System.out.println ("c instancia de Punto"); ^ 1 error Meta-información de clases(2) Ejemplo class A { void f (Persona p) { if (p instanceof Empleado) System.out.println ("Clase Empleado"); else if (p instanceof Persona) System.out.println ("Clase Persona"); // Bloque main A a = new A (); Directivo dir = new Directivo (...); Persona p = dir; a.f (dir); a.f (p); Animal x = p; a.f (x); // ERROR 7