La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

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

Presentaciones similares


Presentación del tema: "Tipos genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 3."— Transcripción de la presentación:

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

2 Tipos genéricos, identidad e igualdad, estructuras selectivas Definición de tipo genérico  Hablamos de un tipo genérico cuando el tipo en cuestión depende de un parámetro formal.  Este parámetro formal es proporcionado cuando se crea un objeto de dicho tipo (instanciación del tipo).  El caso más sencillo de tipo genérico es un tipo contenedor. Ejemplo: el tipo Par.

3 Tipos genéricos, identidad e igualdad, estructuras selectivas Interfaz genérica public interface ParejaDeElementos { T getPrimerElemento(); T getSegundoElemento(); }  Cualquier tipo genérico se caracteriza por los operadores que acompañan al nombre del tipo.  La letra entre los operadores representa el tipo formal que se usará cuando el tipo genérico sea instanciado.

4 Tipos genéricos, identidad e igualdad, estructuras selectivas Clase genérica public class ParejaDeElementosImpl implements ParejaDeElementos { private T primerElemento; private T segundoElemento; public ParejaDeElementosImpl(T p, T s) { primerElemento = p; segundoElemento = s; } public T getPrimerElemento() { return primerElemento; } public T getSegundoElemento() { return segundoElemento; } public String toString() { return "[" + getPrimerElemento() + "," + getSegundoElemento() + "]"; }}

5 Tipos genéricos, identidad e igualdad, estructuras selectivas Instanciando y usando un tipo genérico public class Principal extends Test { public static void main(String[] args) { ParejaDeElementos p1 = new ParejaDeElementos Impl (3, 4); mostrar(p1); ParejaDeElementos p2 = new ParejaDeElementos Impl (2.0, 4.5); mostrar(p2); } OUTPUT: [3,4] [2.0,4.5]

6 Concepto de identidad e igualdad Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

7 Tipos genéricos, identidad e igualdad, estructuras selectivas Concepto de igualdad e identidad  En general diremos que:  dos elementos son iguales cuando:  los valores de sus propiedades observables son iguales.  dos elementos son idénticos cuando:  al modificar una propiedad observable en uno de ellos, se produce una modificación en la del otro y viceversa.  de lo anterior, se deduce que:  identidad implica igualdad, pero igualdad no implica identidad.  En Java, la identidad es un concepto propio de los tipos objeto. No existe la identidad de tipos primitivos.

8 Tipos genéricos, identidad e igualdad, estructuras selectivas Tipos inmutables I  Un objeto inmutable es aquél al que no se le pueden variar sus propiedades una vez que se ha creado.  La inmutabilidad implica que:  Las propiedades son fijadas por el constructor cuando el objeto se crea.  Los métodos set no existen o son innecesarios.  Si existen métodos que modifican las propiedades del objeto, el resultado es otra instancia del tipo que contiene los datos modificados.

9 Tipos genéricos, identidad e igualdad, estructuras selectivas Tipos inmutables II  Hasta ahora los tipos inmutables que conocemos son los tipos envoltura: Integer, Double, Boolean…  Existen otros tipos inmutables como String.  Cuando se modifica un tipo inmutable, se crea un nuevo objeto de manera que el nuevo objeto resultante no es idéntico al original.  Ejemplo: ¿cuántos objetos se crean en este código? ¿cuánto valen a y b?  Double a = 5235.43;  Double b = a;  a = a - 7;

10 Tipos genéricos, identidad e igualdad, estructuras selectivas Operador de identidad  El operador de identidad es == y devuelve un valor true si el objeto a la izquierda del operador es idéntico al de la derecha.  No existe el operador identidad para los tipos primitivos.  Si se usa el operador == sobre tipos primitivos, éste devuelve true si ambos valores son iguales y false en caso contrario.  No confundir el operador == con el operador asignación =.  Para el tipo objeto, la igualdad se consulta mediante el método equals.

11 Tipos genéricos, identidad e igualdad, estructuras selectivas El método equals... boolean equals(Object o);...  Es un método que tienen todos los tipos objeto en Java.  Devuelve true si el objeto que lo invoca es igual al que se le pasa como parámetro. En otro caso, devuelve false.  Cumple:  Simetría: si un objeto es igual a otro, el segundo también es igual al primero.  Transitividad: si un objeto es igual a otro, y éste segundo es igual a un tercero, el primero también será igual al tercero.

12 Tipos genéricos, identidad e igualdad, estructuras selectivas Ejemplos de uso de = y == (I)  Sobre tipos básicos:  int i = 7;  int j = 4;  int k = 4;  Boolean a = (i == j) ; // a es false  Boolean b = (k == j) ; // b es true

13 Tipos genéricos, identidad e igualdad, estructuras selectivas Ejemplos de uso de = y == (II)  Sobre tipos objeto:  Punto p1 = new PuntoImpl(1.0,1.0);  Punto p2 = new PuntoImpl(1.0,1.0);  Boolean c = (p1 == p2) ; // c es false  Boolean d = p1.equals(p2); // d es true

14 Tipos genéricos, identidad e igualdad, estructuras selectivas Ejemplos de uso de = y == (III)  Aplicación sobre objetos:  Punto p1 = new PuntoImpl(1.0,1.0);  Punto p2 = new PuntoImpl(3.0,1.0);  Punto p3 = p1;  p1.setX(3.0);  Boolean a = (p3 == p1); // a es true  Boolean b = (p3 == p2); // b es false  Boolean c = p3.equals(p2); // c es true

15 Tipos genéricos, identidad e igualdad, estructuras selectivas Ejemplos de uso de = y == (IV)  ¿Cuál será el valor de e? ¿Y de f?  Integer a = 3235;  Integer b = a;  a++;  Boolean e = (a==b);  Boolean f = a.equals(b);

16 Tipos genéricos, identidad e igualdad, estructuras selectivas Ejercicios  Crea una clase de nombre Operaciones cuyo objetivo será contener métodos de utilidad sobre distintos tipos.  Cree un método estático en la clase Operaciones que devuelva un valor de tipo lógico para saber si dos puntos son iguales.  Cree un método estático en la clase Operaciones que devuelva true si dos puntos son idénticos y false en caso contrario.  Cree una clase de test que contenga un método main para comprobar que los puntos (3.0, 2.4) y (3.0, 2.2) no son iguales usando la clase Operaciones.  Cree una clase de test que defina dos variables de tipo Punto. Cree un punto en la posición (3.1, 2.2) y asígnelo a la primera variable. Asigne su valor a la segunda variable y demuestre que los objetos contenidos en ambas variables son idénticos usando la clase Operaciones.

17 Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

18 Tipos genéricos, identidad e igualdad, estructuras selectivas Concepto de sentencia y estructura de control  El cuerpo de los métodos de una clase está formado por una serie de unidades elementales: sentencias.  La sentencia más sencilla es una expresión.  Existen sentencias más complejas: las estructuras de control.  Sirven para romper el orden lineal de ejecución de las expresiones.

19 Tipos genéricos, identidad e igualdad, estructuras selectivas Conceptos auxiliares  Un bloque está formado por un conjunto de sentencias entre llaves (caracteres { }).  Dentro de un bloque puede haber declaraciones cuyo ámbito se extiende hasta el final del bloque.  Se entiende por ámbito de una variable la parte del código donde existe y puede ser usada.  Un bloque también es una sentencia.

20 Tipos genéricos, identidad e igualdad, estructuras selectivas Sentencia de control if-else (I)  Evalúa una condición y según sea cierta o falsa ejecuta un bloque de sentencias determinado. if (condición) { sentencia-1;... sentencia-n; } else { sentencia-n+1;... sentencia-m; } if (condición) { sentencia-1;... sentencia-n; } else { sentencia-n+1;... sentencia-m; }

21 Tipos genéricos, identidad e igualdad, estructuras selectivas Sentencia de control if-else (II) sentencia-1 sentencia-2... sentencia-n sentencia-1 sentencia-2... sentencia-n sentencia-n+1 sentencia-n+2... sentencia-m sentencia-n+1 sentencia-n+2... sentencia-m Falso Cierto condición

22 Tipos genéricos, identidad e igualdad, estructuras selectivas Ejemplo de uso /* Método que calcula el mínimo de dos enteros. */ public static Integer minimo(Integer a, Integer b){ Integer r; if(a<=b){ r = a; }else{ r = b; } return r; } /* Método que calcula el mínimo de dos enteros. */ public static Integer minimo(Integer a, Integer b){ Integer r; if(a<=b){ r = a; }else{ r = b; } return r; }

23 Tipos genéricos, identidad e igualdad, estructuras selectivas Sentencia de control switch (I)  Se utiliza para comparar una variable discreta con una serie de valores diferentes.  Se indican los posibles valores que puede tomar la variable y las sentencias que se tienen que ejecutar si la variable coincide con alguno de dichos valores.  Es una sentencia muy indicada para comparar una variable de un tipo enumerado con cada uno de sus posibles valores.

24 Tipos genéricos, identidad e igualdad, estructuras selectivas Sentencia de control switch (II)  Se ejecutan las sentencias del case cuyo valor es igual al de la variable.  Si el valor de la variable no coincide con ningún valor, entonces se ejecutan las sentencias definidas en default.  Muy importante el uso de break si se quiere seleccionar sólo una opción. switch ( variable ){ case valor1: sentencias; break; case valor2: sentencias; break;... case valorN: sentencias; break; default: sentencias; } switch ( variable ){ case valor1: sentencias; break; case valor2: sentencias; break;... case valorN: sentencias; break; default: sentencias; }

25 Tipos genéricos, identidad e igualdad, estructuras selectivas Otras consideraciones  Cualquier estructura selectiva (estructura switch) se puede simular con múltiples if-else anidados.  Seleccionar switch si la legibilidad de los anidamientos if-else es reducida.  En una estructura if-else, la cláusula else es opcional:  En ese caso, si la condición es true, se ejecuta la siguiente línea de código del bloque if.  Cuando termina el bloque if o si la condición evaluó false, se ejecuta la siguiente línea de código del bloque principal.

26 Tipos genéricos, identidad e igualdad, estructuras selectivas Ejercicios  En este ejercicio vamos a desarrollar métodos estáticos dentro de una clase de nombre Enteros. La clase Enteros no contará ni con atributos, ni con métodos constructores debido a que es una clase de utilidades.  Añada a la clase Enteros los métodos estáticos:  public static Boolean estaEnIntervaloCerrado(Integer a, Integer b, Integer x)  devuelve true si x está en el intervalo cerrado [a,b]  public static Boolean estaEnIntervaloAbierto(Integer a, Integer b, Integer x)  devuelve true si x está en el intervalo abierto (a, b)  Añada al método main de TestEnteros el código necesario para probar los métodos, mostrando el resultado por pantalla.


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

Presentaciones similares


Anuncios Google