Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.

Slides:



Advertisements
Presentaciones similares
Curso de java básico (scjp)
Advertisements

Métodos y parámetros.
Curso de java básico (scjp)
Definición de Clases y Variables de referencia.
Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas.
22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA.1 Clases y Objetos Silvia Larrayoz Leire Urriza.
PROGRAMACIÓN ORIENTADA A OBJETOS EN JAVA
Lenguaje de programación Java
Clases Extendidas La clase extendida hereda los campos y métodos de la clase de la cual extiende. La clase original se conoce como superclase y la clase.
Orientación a Objetos con Java SE
El proceso de desarrollo de software
Lección 1 Introducción a la POO
Informática II Prof. Dr. Gustavo Patiño MJ
Genéricos en Java Jaime Ramírez, Ángel Lucas González
Herencia y Polimorfismo
Tema 1. Introducción a la programación (Lenguaje java).
Tratamiento de listas en Java
UNIVERSIDAD LATINA (UNILA)
Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
Rosalía Laza Fidalgo Reyes Pavón Rial Curso
Encapsulamiento y Abstracción
Programación Orientada a Objetos en Java
Material Elaborado por: Lic. Saily González. CONTENIDO 2.1- Estructura de una Aplicación JAVA 2.2- Elementos básicos de la Programación JAVA Comentarios.
HERENCIA.
Método en Java.
Herencia e Interfaces.
Métodos Algoritmos y Desarrollo de Programas I. Cuando utilizar métodos  Los métodos se utilizan para romper un problema en pedazos de forma que este.
Estructuración y modularidad de los programas Fundamentos de Programación/ Programación I
Material de apoyo Unidad 2 Estructura de datos
Modificadores.
POO Java Módulo 3 Elementos de programas Identificadores
Herencia y Polimorfismo en JAVA
Polimorfismo Lenguajes de Programación II Corporación Universitaria del Caribe CECAR.
Lic. Rosemary Torrico Bascopé
Java Orientado a Objetos CLASES,OBJETOS Y MÉTODOS
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Creación de Aplicaciones
Tema 6: Clases Antonio J. Sierra.
6. Herencia. Clases abstractas. Genericidad
Unidad I Java y C++ : Similitudes y diferencias
Public class MiClase { public static int tmp = 123; // miembro variable public static final double PI = ;// miembro constante public float.
SCJP Sun Certified Programmer for Java 6
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
Clase Teórica No. 4 Programación IV
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SEMANA TRES ASIGNACION.
El lenguaje de programación Java
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6
Java. Java nació el año 1991, por un par de ingenieros de la Sun Microsystems.
ESTRUCTURA DE DATOS EN JAVA
Tema 11: Excepciones Antonio J. Sierra.
Patrones Creacionales
Clases y objetos. La unidad fundamental del lenguaje Java es la clase, que proporciona la estructura de los objetos y mecanismos para fabricarlos, a partir.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
Programación Orientada a Objetos usando CONSTRUCTORES DESTRUCTORES.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
1 Objetos y Clases en Java ELO-329: Diseño y Programación Orientados a Objetos.
Herramientas de polimorfismo y herencia en C++
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6
Programación orientada a objetos. El método main es el comportamiento por el cual comienzan todos los programas en Java, de la misma forma en la que C,
Informatica II1 Clases Extendidas La clase extendida hereda los campos y métodos de la clase que ha sido extendida. La clase original se conoce como superclase.
1 Definición y Conversión de datos Agustín J. González ELO-329.
Clases y Objetos en Java ELO329: Diseño y Programación Orientados a Objetos.
Ing. Esp. Ricardo Cujar.  Lenguaje de programación orientado a objetos.  Desarrollado por Sun MicroSystems.  Independiente del Sistema Operativo gracias.
INSTITUTO TECNOLOGICO DE TEHUACAN Ingeniería en sistemas computacionales Curso de apoyo a la titulación CLASES DE JAVA Diciembre de 2008.
Clases “ Es una Abstracción de un elemento del mundo real ”
Prof. Manuel B. Sánchez. Declaración de Objetos Una vez que la clase ha sido implementada se pueden declarar objetos como variables locales de métodos.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Transcripción de la presentación:

Tema 7: Polimorfismo Antonio J. Sierra

Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos. Recursividad. Control de acceso. Static. Final. Argumento en la línea de órdenes

Introducción (I) Capacidad que tienen los objetos de una clase de responder al mismo mensaje o evento en función de los parámetros utilizados durante su invocación. Un objeto polimórfico es una entidad que puede contener valores de diferentes tipos durante la ejecución del programa. Se puede definir dos o más métodos dentro de la misma clase que tengan el mismo nombre, pero con sus listas de parámetros distintas. (métodos están sobrecargados). La sobrecarga de método la utiliza Java para implementar el Polimorfismo.

Introducción (I) El concepto de polimorfismo se puede aplicar tanto a funciones (métodos) como a tipos de datos. Así nacen los conceptos de funciones polimórficas y tipos polimórficos. –Las primeras son aquellas funciones que pueden evaluarse o ser aplicadas a diferentes tipos de datos de forma indistinta; –los tipos polimórficos, por su parte, son aquellos tipos de datos que contienen al menos un elemento cuyo tipo no está especificado.

Sobrecarga Es la posibilidad de tener dos o más funciones con el mismo nombre pero funcionalidad diferente. Es decir, dos o más funciones con el mismo nombre realizan acciones diferentes. –El compilador usará una u otra dependiendo de los parámetros usados. A esto se llama también sobrecarga de funciones. –Se generara un error si los métodos solo varían en el tipo de retorno. La sobrecarga de operadores da más de una implementación a un operador.

Ejemplo de sobrecarga de método public class Articulo { private float precio; public void setPrecio(){ precio = 3.50f; } public void setPrecio( float nuevoPrecio){ precio = nuevoPrecio; } float getPrecio(){ return precio; } class Principal{ public static void main( String args[]){ Articulo obj = new Articulo (); obj.setPrecio(); obj.setPrecio(4.f); System.out.println( "precio = " + obj.getPrecio()); }

Sobrecarga de constructores public class Caja { private double altura; private double anchura; private double profundidad; public Caja(double h, double a, double p) { //constructor this.altura = h; this.anchura = a; this.profundidad = p; } public Caja() { //constructor this.altura = this.anchura = this.profundidad = -1; } public Caja(double dimension) { //constructor this.altura = this.anchura = this.profundidad = dimension; } public double volumen () { return this.altura * this.anchura * this.profundidad; }

Promoción de tipos con métodos sobrecargados Se aplican las reglas de promoción de tipos: –byte y short a int –Si algún parámetro es long -> long –Si algún parámetro es float -> float –Si algún parámetro es double -> double –El tipo boolean es incompatible con el resto y no promociona

Objeto como parámetro Por valor –Copia el contenido de la variable que queremos pasar en otra dentro del ámbito local de la subrutina. –La modificación de uno no afecta al otro. Por referencia –proporcionar a la subrutina a la que se le quiere pasar el argumento la dirección de memoria del dato. –En este caso se tiene un único valor referenciado (o apuntado) desde dos puntos diferentes, el programa principal y la subrutina a la que se le pasa el argumento, por lo que cualquier acción sobre el parámetro se realiza sobre el mismo dato en la memoria.

Por valor class Clase { void Metodo (int i, int j){ i *= 2; j /= 2; } class LlamadaPorValor { public static void main( String args[]) { Clase ob = new Clase (); int a = 15, b = 20; System.out.println("a y b antes " +a+ " " +b); ob.Metodo (a, b); System.out.println("a y b despues " +a+ " " +b); }

Por referencia public class ClaseReferencia { private int a, b; public ClaseReferencia (int i, int j){ this.a = i ; this.b = j ; } public void metodo(ClaseReferencia obj){ obj.a *= 2; obj.b /= 2; } public int getA(){ return this.a; } public int getB() { return this.b; } } class LlamadaPorReferencia { public static void main( String args[]) { ClaseReferencia ob = new ClaseReferencia (15, 20); System.out.println("a y b antes " + ob.getA() + " " + ob.getB()); ob.metodo (ob); System.out.println("a y b antes “ + ob.getA() + " " + ob.getB()); }

Devolución de objetos public class Prueba { private int a; public Prueba (int a){ this.a = a; } public Prueba metodo(){ Prueba local = new Prueba (this.a + 10); return local; } public int getA(){ return this.a; } class Ejemplo { public static void main( String args[]) { Prueba ob1 = new Prueba(20); Prueba ob2 = null; System.out.println("a antes “ + ob1.getA()); ob2 = ob1.metodo (); System.out.println("a antes “ + ob2.getA()); }

Recursividad Recursión es la forma en la cual se especifica un proceso basado en su propia definición. –Las instancias complejas de un proceso se definen en términos de instancias más simples, estando las finales más simples definidas de forma explícita. Aquellas funciones cuyo dominio puede ser recursivamente definido pueden ser definidas de forma recurrente. – 3! = 3 · (3-1)! = 3 · 2! = 3 · 2 · (2-1)! = 3 · 2 · 1! = 3 · 2 · 1 · (1-1)! = 3 · 2 · 1 · 0! = 3 · 2 · 1 · 1 = 6

Ejemplo de Recursividad public class Factorial { public int fact (int n){ int result = 1; if (n !=1) result = fact(n-1)*n; return result; } class Recursividad { public static void main( String args[]) { Factorial f = new Factorial (); System.out.println("El factorial de 3 es " + f.fact (3)); System.out.println("El factorial de 4 es " + f.fact (4)); }

static Definición de un miembro de una clase que será utilizado independientemente de cualquier objeto de esa clase. main () es static. Las variables de instancia declaradas como static son, básicamente, variables globales. Restricciones: Los métodos static, sólo pueden llamar a otros métodos y datos static. –No se pueden referir a this o super de ninguna manera.

final Su contenido no pueda ser modificado. Debe inicializarse cuando se declara. final static int NUEVO_ARCHIVO = 1; final static int ABRIR_ARCHIVO = 1; Elegir identificadores en mayúsculas para las variables final. final se puede aplicar a métodos y clases.

Argumentos en la línea de comandos Los argumentos de la línea de órdenes es la información que sigue al nombre del programa en la línea de órdenes al ejecuta el programa. El acceso a los argumentos de la línea de órdenes se realiza mediante cadenas almacenadas en la matriz de String que se pasa a main().

Ejemplo public class LineaComandos { public static void main(String args[ ] ) { for (int i = 0; i<args.length; i++) System.out.println("args [ "+i +"] : " + args [ i] ); }