J2SE 5. 2007, Grupo Salenda, S.L.



Documentos relacionados
FACULTAD DE INGENIERÍA

Objetivo de aprendizaje del tema

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

INDICE DEL CURSO APRENDER PROGRAMACIÓN JAVA DESDE CERO. PROGRAMACIÓN ORIENTADA A OBJETOS (CU00601B)

Repaso desarrollo de software Parte #1. Jorge Iván Meza Martínez

Computación III. Objetivo de aprendizaje del tema

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

Fundamentos del Lenguaje de Programación Java

CONCEPTOS BASICOS DEL LENGUAJE JAVA

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java

Ubicación e historia

Introducción al lenguaje Java

GESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C)

Elementos léxicos del lenguaje de programación Java

El lenguaje de Programación C. Fernando J. Pereda

Colecciones. Nadjet Bouayad-Agha Programación 2007

Etapa 3.1. Implementación de la clase Operacion

1 ELEMENTOS BASICOS DEL LENGUAJE

Tema 6. Reutilización de código. Programación Programación - Tema 6: Reutilización de código

Para leer la entrada de consola, lo primero que se hace es construir un Scanner que este asociado al flujo de entrada estándar System.

Clases. Java: Clases y Objetos. Clases. Clases. Modificadores de clase. Definición de una clase. Cada objeto es un ejemplar de una clase

Programa Java. El lenguaje de programación Java. Comentarios. Programa Java. Palabras reservadas. Identificadores

ISTP CIDET COMPUTACION E INFORMATICA ARREGLOS EN JAVA

AGRUPA P R OBJET E OS 1

Estructuras básicas de la programación en Java

Introducción al lenguaje de programación java

Curso Informática Lección 2. Introducción a la programación en Java

Curso Introducción JAVA Pág.: 1

Un breve resumen del lenguaje Java

Java en 2 horas. Rodrigo Santamaría

Introducción a la Programación en Java. Page 1

Práctica III: Streams, Readers y Writers

11. Algunas clases estándar de Java (II)

Se guardan en archivos con extencion c y los cabezales con extension h

Tema 3 Elementos básicos de programación

Aprendiendo a programar Microcontroladores PIC en Lenguaje C con CCS

Programación Orientada a Objetos. Java: Excepciones

Primer Parcial Septiembre 5 de 2009

Manual del Protocolo XML-RPC de Mensajería Negocios

2. Estructura de un programa en Java

Partes de un programa en Java. A. Ejemplo de un Programa en Java /* Programa Ejemplo de Java: Muestra una Ventana Archivo: Ejemplo1.

James Gosling, creador de Java

Sintaxis y Convenciones de Java. M. en C. Erika Vilches

Modulo 1 El lenguaje Java

Programación Orientada a Objetos: Arreglos en Java

Programación orientada a objetos

Características Java SE 5.0. Integración de Sistemas Facultade de Informática Universidade da Coruña

Universidad de Cantabria

class Nombre_Clase extends Nombre_SuperClase { cuerpo de la clase extendida }

Introduciendo datos desde el

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

Programación Avanzada para Sistemas de Telecomunicación. Objetos y clases. J.C. Cruellas. Objetos y clases

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

Universidad Central de Bayamón COLEGIO DE DESARROLLO EMPRESARIAL Y TECNOLOGIA. Número Estudiante:

1.00 Clase 8. Datos y métodos estáticos. Datos y métodos estáticos de las clases. Campos de datos estáticos:

TEMA 2. Agenda. Fundamentos de JAVA

INTELIGENCIA ARTIFICIAL 2015 TALLER RÁPIDO DE PROGRAMACIÓN EN JAVA

Tema 3: Genericidad en Java. Tema 3: Genericidad en Java. Objetivos y Bibliografía. Modelos de Datos Genéricos

public static void main(string[ ] args) { Numero f1 = new Numero(3); Numero f2 = new Numero(4); Numero f3 = f1; f1.value = f2.value; Numero f4 = null;

Tema 1. Introducción a JAVA

INSTITUTO GEOFISICO DEL PERÚ CENTRO NACIONAL DE DATOS GEOFISICOS - CDNG

1. Manejo de memoria estática 2. Manejo de memoria dinámica

Preliminares. Tipos de variables y Expresiones

8. Sentencia return y métodos

Primer Parcial Febrero 24 de 2007

Pruebas de unidad con JUnit

Tema 2: Clase y objetos en Java. Programación Orientada a Objetos Curso 2009/2010 Begoña Moros Valle

Tema 2. Técnicas básicas de POO. Técnicas de Programación - Curso 2007/08

GUÍA DE LABORATORIO 5 ARREGLOS DE UNA DIMENSIÓN

El lenguaje de programación Java

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

Java Inicial (20 horas)

Clase adicional 3. Métodos. Temas

Repaso de las características más importantes de la programación Java y su adaptación a Android

FACULTAD DE INGENIERÍA

EXAMEN PARCIAL 23 de Octubre de 2015 Programación I. Grado en Matemáticas e Informática ETSIINF UPM

Técnicas Avanzadas de Testing Automatizado

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

Estructura de datos tipo vector.

15. Parámetros o argumentos

Tema 2. El lenguaje de programación Java. Arrays y cadenas

Práctica 3 mtp. metodoloxía e tecnoloxía da programación. Presentar detalles básicos sobre la sintaxis del lenguaje de programación Java.

Tutorial básico del entorno de desarrollo Eclipse.

! Una variable declarada con final no puede volver a ser reinicializada. numero = 2;! ! Para definir constantes

Introducción a Java III. Prof. MSc. Pedro Shiguihara

Tema: Sobrecarga de Operadores.

El Concepto De Objeto y Clase

FACULTAD DE INGENIERÍA

INICIACIÓN A LA PROGRAMACIÓN LENGUAJE JAVA

Introducción a Java LSUB. 15 de enero de 2015 GSYC

Concurrencia. Primitivas IPC con bloqueo

Clases y Objetos. Informática II Ingeniería Electrónica

Tema 5 Sentencias de control de flujo. Fundamentos de Informática

FAMILIARIZANDONOS CON JAVA

Primera Escuela de la Red Temática SVO. Madrid, Noviembre, 2006 JAVA BÁSICO. Raúl Gutiérrez Sánchez LAEFF - INTA raul@laeff.inta.

Curso de Java POO: Programación orientada a objetos

ESCUELA SUPERIOR POLITECNICA DE CHIMBORAZO ESCUELA DE INGENIERIA EN SISTEMAS

POLIMORFISMO "una interfaz, múltiples métodos".

Benemérita Universidad Autónoma del Estado de Puebla

Taller de Programación Estructurada en Java Tema 2. Fundamentos de la programación orientada a objetos

Transcripción:

J2SE 5 Novedades 2007, Grupo Salenda, S.L.

Introducción Publicada en agosto de 2004. Lo más destacado: Nuevas funcionalidades del lenguaje. Compatible con versiones anteriores. 2

Métodos con lista variable de argumentos Variación ió de la sobrecarga: métodos que aceptan cualquier número de argumentos del mismo tipo: public class Statistics { public float average(int x1, int x2){ public float average(int x1, int x2, int x3){ public float average(int x1, int x2, int x3, int x4){ Invocación: float res1 = stats.average(4, 3, 4); float res2 = stats.average(24, 32, 27, 18); 3

Varargs: argumentos variables Estos métodos se pueden agrupar: public class Statistics { public float average(int... nums){ int sum = 0; //nums es un int[] for (int x : nums) { sum += x; return ((float) sum) / nums.length; 4

Tipos enumerados Son conjuntos finitos de símbolos que representan los valores posibles de un atributo. Ej: palos={ OROS, COPAS, ESPADAS, BASTOS. Nota: no confundir con la clase java.util.enumeration. 5

Tipos enumerados Antes de Java 5: package cards.domain; public class PlayingCard { //pseudo enumerado public static ti final int SUIT_SPADES SPADES = 0; public static final int SUIT_HEARTS = 1; public static final int SUIT_CLUBS = 2; public static final int SUIT_DIAMONDS = 3; private int suit; private int rank; public PlayingCard(int suit, int rank) { this.suit = suit; this.rank = rank; 6

Tipos enumerados public String getsuitname() { String name = ; switch(suit) { case SUIT_SPADES: name = Spades ; break; case SUIT_HEARTS: name = Hearts ; break; case SUIT_CLUBS: name = Clubs ; break; case SUIT_DIAMONDS: name = Diamonds ; break; default: System.err.println( Invalid suit ); return name; 7

Tipos enumerados Problemas: No es type-safe. Como suit es entero, se puede pasar cualquier otro valor sin significado. Alguien podría hacer operaciones aritméticas con suit, lo cual no tiene sentido. No hay espacio de nombres. Las constantes se deben prefijar con SUIT_ para evitar colisiones con otras constantes. Comportamiento frágil. Si se añaden constantes o se modifica el orden, hay que recompilar los clientes para que se actualicen con los nuevos valores. 8

Tipos enumerados Problemas: Valores no informativos. Son enteros. Si se imprimen, aparece un número. Es necesario escribir un método que ofrezca una representación textual legible. 9

Tipos enumerados A partir de Java 5: package cards.domain; public class Suit{ public enum SuitValue {SPADES,HEARTS,CLUBS,DIAMONDS 10

Tipos enumerados package cards.domain; public class PlayingCard { private Suit.SuitValue suit; private int rank; public PlayingCard(Suit.SuitValue suit, int rank) { this.suit = suit; this.rank = rank; 11

Tipos enumerados public String getsuitname() { String name = ; switch(suit) { case SPADES: name = Spades ; break; case HEARTS: name = Hearts ; break; case CLUBS: name = Clubs ; break; case DIAMONDS: name = Diamonds ; break; // No hace falta comprobar tipos // erróneos: Suit es un conjunto // finito return name; 12

Tipos enumerados avanzados package cards.domain; public class PlayingCards{ public enum Suit { SPADES ( Spades ), HEARTS ( Hearts ), CLUBS ( Clubs ), DIAMONDS ( Diamonds ); private final String name; private Suit(String name) { this.name = name; public String getname() { return name; 13

Autoboxing de tipos primitivos En J2SE 5, el lboxing y el unboxing se hacen automáticamente (autoboxing). int pint = 500; Integer wint = pint; //boxing int p2 = wint; //unboxing No se debe abusar de esta funcionalidad para evitar problemas de rendimiento. 14

Autoboxing de tipos primitivos Cuidado! d Integer iobjeto1 = 1000; Integer iobjeto2 = 1000; int i1= 1000; int i2= 1000; Integer i= null; int i2= i; Qué ocurre aquí? (i2 == i1) // resultado =? (i2 == iobjeto1) // resultado =? (iobjeto2 == iobjeto1) // resultado =? 15

Static import Para acceder a los miembros estáticos de una clase, hay yque: O bien proporcionar su nombre plenamente cualificado. O bien importar la clase. En Java 5 existe la posibilidad d de importar todos los miembros estáticos de una clase o incluso los valores de un enumerado. 16

Static import Antes: public class Maths { Ahora: public static void main(string[] args) { double r = java.lang.math.cos(2*java.lang.math.pi); System.out.println(r); import static java.lang.math.*; public class Maths { public static void main(string[] args) { double r = cos(2*pi); System.out.println(r); 17

Genéricos En el API Collections tradicional, las colecciones eran colecciones de Object. Esto obligaba al programador a hacer un casting, lo cual no es type-safe : ArrayList list = new ArrayList(); list.add(0, new Integer(42)); int total = ((Integer)list.get(0)).intValue(); //Lo siguiente compila, pero falla al ejecutar String total = (String)list.get(0); 18

Genéricos En Java 5, las colecciones pueden ser definidas de un tipo concreto, lo cual aporta dos ventajas: Evita la necesidad de hacer casting. Permite la comprobación de errores en tiempo de compilación. ArrayList<Integer> list = new ArrayList<Integer>(); g list.add(0, new Integer(42)); //Genéricos & autoboxing int total = list.get(0); 19

Warnings del compilador El compilador de Java 5 lanza warnings sobre el código 1.4 sin uso de genéricos public class GenericsWarning { public static void main(string[] args) { List list = new ArrayList(); list.add(0, new Integer(42)); int total =((Integer)list.get(0)).intValue(); javac GenericWarnings.java Note: GenericWarnings.java uses unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details. 20

Warnings del compilador javac -Xlint:unchecked GenericWarnings.java GenericWarnings.java:5: warning: [unchecked] unchecked call to add(int,e) as a member of the raw type java.util.list list.add(0, new Integer(42)); ^ 21

Nuevo bucle for Con iteradores (Java 1.4): public void printall(collection c) { Iterator it = c.iterator(); while (it.hasnext()) { String element =(String)it.next(); (); System.out.println(element); Con iteradores y genéricos: public void printall(collection<string> c) { for (Iterator<String> i=c.iterator(); i.hasnext(); ){ String element = i.next(); System.out.println(element); t 22

Nuevo bucle for Con el nuevo bucle for: public void printall(collection<string> c) { for (String s : c) { System.out.println(s); Debe ser leído como: Para cada elemento 's' de la colección 'c', hacer... 23

Salida formateada Java 5 introduce en System.out un método printf() que funciona como en C/C++. Esta funcionalidadtambiénestáenelmétodo format() de la clase String. System.out.printf( name count\n ); String s = String.format( %s %d%n, user, total); Código Descripción %s Formatea el argumento como una cadena, usualmente llamando al tostring() de dicho objeto. %d %o %x Formatea un entero como decimal, octal o hexadecimal. %f %g Formatea un número en coma flotante. El formato %g usa notación científica. %n Inserta un salto de línea %% Inserta el carácter % 24

Entrada formateada La clase java.util.scanner proporciona entrada del usuario formateada. Obtiene datos en un tipo adecuado y se bloquea esperando la entrada del usuario. public class ScannerTest { public static void main(string[] args) { Scanner s = new Scanner(System.in); String param1 = s.next(); System.out.println( Param 1: + param1); int param2 = s.nextint(); System.out.println( Param 2: + param2); s.close(); 25