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

Slides:



Advertisements
Presentaciones similares
Condicional if y switch
Advertisements

Estructuras de control
Curso de java básico (scjp)
Curso de java básico (scjp)
Estructuras de decisión en C
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.
El proceso de desarrollo de software
Curso de Java Estructura del Lenguaje
Genéricos en Java Jaime Ramírez, Ángel Lucas González
1.2 Sintaxis del lenguaje Java.
Encapsulamiento y Abstracció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.
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.
Modificadores.
POO Java Módulo 3 Elementos de programas Identificadores
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.
Tema 6: Clases Antonio J. Sierra.
SCJP Sun Certified Programmer for Java 6
Clase Teórica No. 4 Programación IV
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SEMANA TRES ASIGNACION.
El lenguaje de programación Java
JAVA J.A.C..
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
Java. Java nació el año 1991, por un par de ingenieros de la Sun Microsystems.
Capítulo 1 “Elementos de Programación”
SENTENCIAS DE CONTROL Ing. José Antonio Poma G..
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
Lenguaje de programación Java UNIVERSIDAD REGIONAL DEL SURESTE.
Informática Ingeniería en Electrónica y Automática Industrial
EXPRESIONES Y SENTENCIAS
Unidad II: Fundamentos de Programación
Estructuras de Control.
Detalles Generales sobre Java
Capítulo 2 “Subprogramas/Funciones - Arreglos”
Estructuras de Decisión
1 Desarrollo Web en Entorno Servidor Tema 4: Estructuras de control. Estructuras Selectivas. Operadores de comparación. Operadores Lógicos. Operadores.
Ing. Esp. Ricardo Cujar. Permite la ejecución de una sentencia, dada una determinada condición. If(condición){ sentencia(s) a ejecutar en caso de que.
CONSTANTES DENTRO DE UN CÁLCULO O EN LOS PASOS PARA SOLUCIONAR UN PROBLEMA, EXISTIRÁN VALORES QUE NUNCA VAN A CAMBIAR Y SE LOS CONOCE COMO CONSTANTES.
LENGUAJE DE PROGRAMACIÓN
Prof. Manuel B. Sánchez. La parte ingenieril de un proceso de desarrollo de software, comprende realizar un diseño del sistema antes de empezar a escribir.
Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos.
Factorías e Iterables Introducción del concepto de patrón de diseño Construcción de tipos para recorridos con for extendido Fundamentos de Programación.
Unidad 6 Polimorfismo.
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
1 Métodos. 2 Un método es un conjunto de instrucciones definidas dentro de una clase, que realizan una determinada tarea y a las que podemos invocar mediante.
Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Práctica 4 Versión Diseño de tipos Igualdad, representación, código,
Tema – 5 Construcciones condicionales Introducción En un programa es usual ejecutar unas instrucciones u otras en función de unas condiciones especificadas.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones Fundamentos de Programación Departamento.
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
1 Clase 4: primeros programas (2ª parte) iic1102 – introducción a la programación.
Implementación de Iterables Construcción de Iterables virtuales o basados en otros iterables Fundamentos de Programación Departamento de Lenguajes y Sistemas.
Las interfaces Predicate y Function Versión Unidad Didáctica 17 Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos.
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
Diseño de tipos Igualdad, representación, código, copia y relación de orden Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos.
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.
Introducción al Lenguaje C (I) Tipos básicos, arrays y punteros Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión
Tratamientos secuenciales I Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 8 Versión
Entrada y Salida en C++, Estructuras de Control Prof. Manuel B. Sánchez.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
Concepto de Tipo y Subtipo Diseño e Implementación Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 10 Versión.
Criterios de ordenación y Guava Comparator, Comparable y Ordering Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión.
Arrays, Cadenas y Vectores Tipos Genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 5 Versión
Introducción a la Programación Orientada a Objetos (POO) Conceptos de clase, objeto e interfaz. Atributos y métodos Fundamentos de Programación Departamento.
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.
Funciones y paso de parámetros Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Unidad Didáctica 24.
Paso de parámetros Diseño de programas iterativos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 7 Versión.
1 Clase 5: primeros programas (3ª parte) iic1102 – introducción a la programación.
Transcripción de la presentación:

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

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.

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.

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() + "]"; }}

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]

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

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.

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.

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 = ;  Double b = a;  a = a - 7;

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.

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.

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

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

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

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);

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.

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

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.

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.

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; }

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

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; }

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.

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; }

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.

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.