Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porVicenta Romero Botella Modificado hace 8 años
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.
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.