Sei sulla pagina 1di 67

CURSO DE PROGRAMACION JAVA EE5

Programacin JAVA EE5

NDICE GENERAL
UNIDAD DIDCTICA 1: PROGRAMACIN ORIENTADA A OBJETOS CON JAVA
INTRODUCCIN. 1. OBJETOS Y CLASES. 2. ATRIBUTOS, FUNCIONES Y MENSAJES. 3. HERENCIA. 4. OCULTACIN Y ENCAPSULACIN. 5. ANULACIN Y SOBRECARGA. 6. POLIMORFISMO. 7. INTERFACES. EJERCICIOS DE REPASO DE LA UNIDAD DIDCTICA 1 ENUNCIADOS SOLUCIONES

1
1 1 2 3 5 6 7 9 11 11 12

UNIDAD DIDCTICA 2: INTRODUCCIN AL LENGUAJE DE PROGRAMACIN JAVA


1. ORIGEN DEL LENGUAJE JAVA. 2. INSTALACIN JAVA SE 6. 3. HERRAMIENTAS DE LINEA DE COMANDOS. 4. LA VARIABLE CLASSPATH. 5. COMPILAR Y EJECUTAR. EJERCICIOS DE REPASO DE LA UNIDAD DIDCTICA 2 ENUNCIADOS SOLUCIONES

13
13 13 21 24 25 28 28 29

UNIDAD DIDCTICA 3: ELEMENTOS DEL LENGUAJE.


1. TIPOS DE DATOS. Tipos de datos primitivos: 2. OPERADORES. Operadores Aritmticos: Operadores de Asignacin: Operadores Relacionales: Operadores lgicos:

30
30 30 30 30 30 31 31

Programacin JAVA EE5 Operadores a Nivel de Bit: 3. CARACTERES. CADENAS DE CARACTERES 4. ESTRUCTURAS DE DATOS. VARIABLES CONSTANTES ARRAYS 5. ESTRUCTURAS DE CONTROL. ESTRUCTURAS CONDICIONALES 6. ESTRUCTURAS DE CONTROL ITERATIVAS. Bucle For: Bucle While: Bucle do While: 7. COLECCIONES. Interfaz Collection: Interfaz List: Interfaz Set: Interfaz Map: EJERCICIOS DE REPASO DE LA UNIDAD DIDCTICA 3 ENUNCIADOS SOLUCIONES 31 31 32 32 32 34 34 36 36 38 39 39 40 40 40 41 41 41 43 43 44

UNIDAD DIDCTICA 4: STREAMS JAVA (FLUJOS)


1. TIPOS DE STREAMS. 2. ACCESO A DISPOSITIVOS. Lectura desde la Consola 3. ACCESO A FICHEROS. 4. CLASES ESPECIALIZADAS. EJERCICIOS DE REPASO DE LA UNIDAD DIDCTICA 4 ENUNCIADOS SOLUCIONES

45
45 45 45 46 47 49 49 50

UNIDAD DIDCTICA 5: NOVEDADES DEL LENGUAJE EN JAVA 5


1. GENRICOS. 2. BUCLE FOR MEJORADO (FOR-EACH). 3. AUTOBOXING Y UNBOXING.

51
51 51 52

Programacin JAVA EE5 4. TIPOS ENUMERADOS 5. NMERO VARIABLE DE ARGUMENTOS. 6. IMPORTACIN DE MIEMBROS ESTTICOS. EJERCICIOS DE REPASO DE LA UNIDAD DIDCTICA 5 ENUNCIADOS SOLUCIONES PRCTICAS ENUNCIADOS SOLUCIONES GLOSARIO 52 53 53 55 55 56 57 57 59 60

Programacin JAVA EE5

TEMA 1: PROGRAMACIN ORIENTADA A OBJETOS CON JAVA INTRODUCCIN La programacin orientada a objetos supone un nuevo paradigma (patrn o modelo) de programacin que se populariz a principios de la dcada de los noventa. Involucra varios conceptos de programacin que describen las relaciones, el estado y la identidad de los objetos que interaccionan en una aplicacin informtica. La programacin orientada a objetos no es un lenguaje de programacin, es una forma de programar, independiente del lenguaje con que se implemente, que intenta representar el Mundo Real a travs de objetos. Existen varios lenguajes de programacin orientados a objetos adems de Java, como: SmallTalk, Eiffel, Ruby, C++, Visual Basic .NET y otros. Segn este paradigma de programacin las aplicaciones informticas se disean como un conjunto de objetos que desempean distintas tareas y colaboran entre s para obtener los resultados para los que fueron diseados. 1. OBJETOS Y CLASES Antes de entrar en la definicin de clase deberamos pensar en el concepto de abstraccin, por supuesto en lo referido al mundo de la programacin. Un ejemplo de abstraccin lo introdujo la programacin estructurada con la denominada abstraccin funcional, que consiste en abstraerse de una determinada tarea, como por ejemplo calcular el IVA, podemos pensar por tanto en esa tarea de forma abstracta ya que no es necesario que conozcamos lo detalles del clculo a priori para poder relacionarla con otra tarea. Gracias a la abstraccin funcional podemos por tanto pensar en un conjunto de pequeos procesos que representan una funcionalidad mayor, sin embargo la abstraccin funcional no puede representar abstracciones de datos que tambin son necesarias si queremos tener una visin de alto nivel sobre nuestras aplicaciones. La Programacin Orientada a Objetos introdujo una innovacin en cuanto a la abstraccin de datos: las clases.

Programacin JAVA EE5 Una clase representa una abstraccin de un tipo de datos definido por el usuario, por tanto una clase deber representar las estructuras de datos y las operaciones asociadas con ese tipo. Utilizamos la definicin de una clase para construir o crear un objeto en particular y podemos utilizar los trminos objeto e instancia de clase de forma indistinta para referirnos a ello. 2. ATRIBUTOS, FUNCIONES Y MENSAJES Cuando nos referimos a las estructuras de datos y operaciones asociadas con un tipo de datos definido por el usuario nos estamos refiriendo justamente a los atributos y funciones miembro. Se definen atributos miembro como caractersticas propias de un objeto

representadas por un contenedor de datos. El conjunto de los atributos determinan el estado de un objeto. La identidad de un objeto puede estar representada por uno o varios de los atributos del mismo que contendr un valor nico a modo de identificador. En cuanto a las funciones miembro, estas representan un algoritmo asociado al objeto o a la clase que ser ejecutado tras la recepcin de un mensaje. Los mensajes entre objetos representan la comunicacin entre los mismos, cuando un objeto recibe un determinado mensaje debe interpretarlo para ejecutar la operacin, funcin miembro o algoritmo asociado (todos los trminos estn referidos al mismo concepto) hacindole llegar, si se diera el caso, los parmetros contenidos en el mensaje. Por Ejemplo: Si quisiramos que una instancia de la clase Coche ejecutara el algoritmo asociado a la operacin avanzar, tendramos que enviar el siguiente mensaje:
micoche.avanzar ()

Como se puede observar la sintaxis generalizada para representar el envo de un mensaje consiste en utilizar un identificador de una determinada instancia de un clase, como micoche, seguida de un . y a continuacin el nombre de la funcin miembro que se pretende ejecutar.

Programacin JAVA EE5 Si quisiramos adems especificar la distancia que queremos que avance el coche tendramos que aadir el valor de un supuesto parmetro distancia de la siguiente manera:
micoche.avanzar (10)

3. HERENCIA Dentro de la programacin Orientada a Objetos la herencia es una caracterstica fundamental que permite definir nuevas clases tomando como punto de partida una clase padre o tambin denominada clase base. El proceso de definicin de una nueva clase a partir de una clase base se conoce como derivacin por lo que a la clase resultante de este proceso tambin se la conoce como clase hija o clase derivada. La herencia es una caracterstica inherente de la Programacin Orientada a Objetos que permite utilizar la reutilizacin de cdigo. La reutilizacin de cdigo permite utilizar varias veces una definicin de clase ya testada y verificada a travs de la derivacin sin necesidad de reescribir el cdigo original, para especificar o modificar parcialmente el comportamiento de una clase base. Existen dos tcnicas de implementacin de la herencia: Herencia por especializacin: Podemos a partir de una clase base como Vehculo especificar en una nueva clase como Coche caractersticas especficas del coche que adems compartira las caractersticas propias del vehculo. Este proceso se podra reproducir para la clase Moto o la clase Camin. Por tanto podremos crear nuevas clases como Coche, Moto y Camin que son especializaciones de Vehculo. Herencia por generalizacin: Si tomsemos como punto de partida las clases Coche, Moto y Camin podramos pensar en un conjunto de propiedades y operaciones comunes a todas ellas y resumirlas en una nueva clase como Vehculo para posteriormente indicar la herencia con la clase resultante. De esta forma podramos generalizar y unificar en una nueva clase Vehculo las caractersticas comunes de las clases Coche, Moto y Camin.

Programacin JAVA EE5 Ejemplo: Un vehculo, puede tener matrcula, un color determinado, ser de un fabricante concreto y muchas ms caractersticas que son comunes a todos los vehculos, sin embargo nos vamos a centrar en las anteriormente mencionadas. Adems podramos pensar en avanzar y parar como dos posibles tareas que puede realizar un vehculo. Para modelar la informacin que tenemos tendramos que crear una clase de nombre Vehculo con las estructuras de datos apropiadas para mantener la informacin de sus caractersticas (matrcula, color, marca) y las operaciones asociadas a las tareas de avanzar y parar, por lo que el resultado final sera: Vehculos cadena: matrcula cadena: color cadena: marca avanzar(entero:metros) parar() Si nuestro sistema tuviera que diferenciar entre coches y motos, podramos pensar en caractersticas significativas de ambos que no quedan reflejadas en la clase que acabamos de crear, como si tiene maletero y cul es su capacidad, en el caso del coche el tipo de manillar en el caso de la moto. Esto a priori nos hara pensar en dos clases nuevas que recogieran toda la informacin sobre los coches y las motos, pero estaramos duplicando algunas de las caractersticas y funcionalidades que son comunes. La alternativa consiste en utilizar la clase Vehculo ya diseada para extender su funcionalidad a las clases Coche y Moto reutilizando de esta manera el cdigo ya implementado.

Programacin JAVA EE5

El resultado final sera, por tanto:

Vehculo cadena: matrcula cadena: color cadena: marca avanzar(entero:metros) parar()

COCHE Entero:cap_maletero

MOTO Cadena: tipo_manillar

4. OCULTACIN Y ENCAPSULACIN La ocultacin es un mecanismo mediante el cual se protege el cdigo o los datos para impedir accesos arbitrarios al mismo desde otras partes del cdigo. El estado de un objeto se mantiene gracias a sus atributos y la clase a la que pertenecen es la nica responsable de mantener su integridad, por ello, se debe exponer una interfaz compuesta por operaciones capaces de modificar el estado del objeto de una forma controlada. De forma predeterminada, los atributos de una clase deben estar declarados con el modificador private, de manera que estamos indicando que el acceso a estas estructuras de datos slo estar permitido a los miembros de la propia clase. La encapsulacin suele confundirse con la ocultacin ya que suelen usarse Coche entero: cap_maletero conjuntamente aunque el propsito de ambas sea distinto. encapsulacin La no Moto cadena: tipo_manillar

pretende mantener la integridad del estado de un objeto, pretende mantener la uniformidad sobre las relaciones entre los objetos.

Programacin JAVA EE5 5. ANULACIN Y SOBRECARGA Para entender en qu consiste la sobrecarga vamos a volver sobre el ejemplo de la clase Vehculo, Coche y Moto. La clase Vehculo declaraba la operacin avanzar y como consecuencia de la herencia este comportamiento era heredado por las clases Coche y Moto. Pero vamos a suponer que un coche al no utilizar el mismo sistema motriz que una moto para avanzar, de forma que los algoritmos necesarios para que se desplacen los coches y las motos son diferentes. En esta situacin encontramos una contradiccin al pensar en que era una operacin comn para todos los vehculos y deba declararse en la clase padre para posteriormente ser heredada por las clases derivadas. Sin embargo no es as debido a que la operacin avanzar si es comn a todos los vehculos, lo que no es comn a todos los vehculos es el algoritmo que hace que avancen. Ante esta situacin los mecanismos de sobrecarga o anulacin pueden extender o reescribir respectivamente los algoritmos sobrecargados o anulados. La anulacin se implementa de forma sencilla, lo nico que debemos hacer es reescribir la operacin que va a ser anulada en la clase derivada haciendo coincidir exactamente la firma de la operacin pero diferente implementacin. Ejemplo:
public class Vehiculo{ ... public void avanzar(){ //algoritmo de la clase base } ... } public class Coche extends Vehiculo{ public void avanzar(){ //algoritmo de la clase derivada } ... }

Si ejecutamos la operacin avanzar sobre una instancia de la clase Coche estaremos ejecutando el algoritmo de la clase derivada que habr sustituido al algoritmo heredado de la operacin avanzar de la clase padre. La sobrecarga se puede implementar de la misma forma que la anulacin simplemente incluyendo como primera lnea de cdigo una referencia a la operacin de la clase base. 6

Programacin JAVA EE5 Ejemplo:


public class Coche extends Vehiculo{ public void avanzar(){ super.avanzar(); //algoritmo de la clase derivada } ... }

Otra forma de implementar la sobrecarga consiste en declarar varias operaciones dentro de una misma clase con el mismo nombre pero diferencindose en el nmero o el tipo de sus parmetros. Ejemplo:
public class Coche extends Vehiculo{ public void avanzar(){ //algoritmo para avanzar una distancia fija } public void avanzar(int distancia){ //algoritmo para avanzar una distancia basada en el parmetro distancia } ... }

6. POLIMORFISMO El polimorfismo es al igual que la herencia una de las caractersticas ms importantes de la Programacin Orientada a Objetos. La palabra polimorfismo significa mltiples formas, que aplicado al mbito de la Programacin Orientada a Objetos supone que un objeto puede comportarse de diferentes maneras. El polimorfismo por tanto representar una cualidad de los objetos mediante la cual, estos podrn presentar distintos comportamientos en funcin de determinados parmetros. Si nos fijamos en una cualquiera de las funciones de impresin de cadenas por pantalla, presentes en la mayora de los lenguajes, podemos observar como estas funciones nos permiten imprimir tanto caracteres como nmeros. Esto sera un claro ejemplo de polimorfismo ya que no se tratan igual las cadenas de texto que los nmeros y sin embargo estas funciones pueden discriminar entre los distintos tipos de datos y aplicar el tratamiento oportuno para cada uno de ellos.

Programacin JAVA EE5 El polimorfismo se puede implementar utilizando diferentes mecanismos soportados por los lenguajes Orientados a Objetos. El polimorfismo por sobrecarga de funciones consiste en representar varias funciones con el mismo nombre pero distinto nmero o tipo de parmetros, tambin es conocido como polimorfismo paramtrico y consiste en determinar cul de las funciones sobrecargadas se debe ejecutar en base a los parmetros del mensaje recibido. Ejemplo:
Public class Consola{ ... public void imprimir(int numero){ //Algoritmo de impresin de nmeros } public void imprimir(String texto){ //Algoritmo de impresin de cadenas } ... }

Tomando el cdigo de ejemplo anterior, podramos ejecutar:


Consola consola = new Consola(); consola.imprimir(10); consola.imprimir(ejemplo);

Como se puede observar la operacin imprimir es ejecutada dos veces invocando distintos algoritmos. Otro mecanismo de implementacin del polimorfismo consiste en utilizar la herencia junto con la sobrecarga o anulacin. Este mecanismo es conocido como polimorfismo de subtipado y consiste en sobrecargar o anular una operacin de la clase base para implementar distintos comportamientos. Ejemplo: Si consideramos que la operacin avanzar debe realizar tareas diferentes para las clases Coche y Moto, deberamos reescribir esta funcin en cada una de las clases, de forma que al invocar la operacin avanzar sobre una instancia de la clase Coche obtendramos una ejecucin diferente que si esa misma operacin fuera invocada sobre una instancia de la clase Moto.
public class Vehiculo{ public abstract void avanzar(int distancia); } public class Coche extends Vehiculo{ public void avanzar(int distancia){ //Algoritmo para avanzar un coche } }

Programacin JAVA EE5


public class Moto extends Vehiculo{ public void avanzar(int distancia){ //Algoritmo para avanzar una moto } }

En la siguiente ejecucin se puede comprobar cmo estaramos invocando distintos algoritmos:


... Vehiculo vh1 = new Coche(); Vehiculo vh2 = new Moto(); vh1.avanzar(10); vh2.avanzar(10);

Y por ltimo el Polimorfismo de Inclusin, que consiste en una variacin del polimorfismo de sobrecarga permitiendo que las distintas funciones sobrecargadas reciban como parmetro distintos tipos de objetos donde cada uno de los mismos ejecutan los diferentes algoritmos. Ejemplo:
public class Taller{ public void reparar (Chapista chapista, Vehiculo coche){ chapista.arreglar (coche); } public void reparar (Electricista electricista, Vehiculo coche){ electricista.arreglar (coche); }

7. INTERFACES La interfaces proporcionan a nuestras aplicaciones un mecanismo de extensibilidad esencial. Las interfaces exponen un conjunto de operaciones a modo de protocolo de comunicacin entre objetos. Tambin se puede pensar en una interfaz como en un contrato que establecemos desde el momento en el que indicamos que nuestra clase implementa una determinada interfaz. Eso supone que la clase debe dar una implementacin mediante los algoritmos correspondientes a las operaciones declaradas dentro de la interfaz. Vamos a suponer, siguiendo con el ejemplo del taller de reparaciones, que para que un vehculo pueda repararse debe implementar ciertos algoritmos imprescindibles para que el mecnico pueda reparar el vehculo. De tal manera que creamos una

Programacin JAVA EE5 interfaz de nombre Reparable que declarar las operaciones cpu_test y check_all. Ejemplo:
public interface Reparable{ public Resultados cpu_test (); public Resultados check_all (); } public class Coche extends Vehiculo implements Reparable{ public Resultados cpu_test (){ //algoritmo de implementacin de la operacin declarada en la interfaz Reparable } public Resultados check_all (){ //algoritmo de implementacin de la operacin declarada en la interfaz Reparable } ... }

Por el mero hecho de indicar implements Reparable estamos obligados a implementar las operaciones declaradas en dicha interfaz, por eso se puede entender una interfaz como un contrato mediante el cual garantizamos que un objeto de tipo Reparable va a contar con un conjunto de operaciones imprescindibles para que el mecnico pueda realizar la reparacin.

10

Programacin JAVA EE5 EJERCICIOS DE REPASO DE LA UNIDAD DIDCTICA 1: PROGRAMACIN ORIENTADA A OBJETOS ENUNCIADOS. 1. La comunicacin entre objetos se representa mediante:

2. Las caractersticas propias de un objeto se representan mediante:

3. El polimorfismo por sobrecarga es tambin conocido como:

4. Completa los huecos con las Palabras : La ____ permite utilizar varias veces una definicin de clase ya testada y verificada a travs de la ____ sin necesidad de reescribir el cdigo original, para especificar o modificar parcialmente el comportamiento de una ____. clase base derivacin reutilizacin de cdigo

5. Completa los huecos con las Palabras : El estado de un objeto se mantiene gracias a sus _____ y la clase a la que pertenecen es la nica responsable de mantener su _____, por ello, se debe exponer una _____ compuesta por _____ capaces de modificar el estado del objeto de una forma controlada. atributos interfaz integridad operaciones

11

Programacin JAVA EE5 SOLUCIONES A LOS EJERCICIOS DE REPASO. UNIDAD DIDCTICA 1 1. La Respuesta Correcta es: La c), Mensajes. 2. La Respuesta Correcta es: La c), Atributos. 3. La Respuesta Correcta es: La b), Polimorfismo paramtrico. 4. La Respuesta Correcta es: La reutilizacin de cdigo permite utilizar varias veces una definicin de clase ya testada y verificada a travs de la derivacin sin necesidad de reescribir el cdigo original, para especificar o modificar parcialmente el comportamiento de una clase base. 5. La Respuesta Correcta es: El estado de un objeto se mantiene gracias a sus atributos y la clase a la que pertenecen es la nica responsable de mantener su integridad, por ello, se debe exponer una interfaz compuesta por operaciones capaces de modificar el estado del objeto de una forma controlada.

12

Programacin JAVA EE5

UNIDAD

DIDCTICA

2:

INTRODUCCIN

AL

LENGUAJE

DE

PROGRAMACIN JAVA 1. ORIGEN DEL LENGUAJE JAVA Java fue desarrollado por Sun Microsystems, empresa lder en desarrollo de servidores, en la dcada de los noventa. Se atribuye el nacimiento del lenguaje Java al proyecto Green. La idea original del proyecto Green se basaba en el desarrollo de una plataforma de creacin de aplicaciones para distintos electrodomsticos que permitiera dar soporte a las aplicaciones de forma independiente al sistema operativo subyacente, con el objetivo de abaratar costes. La televisin interactiva, uno de los primeros objetivos del lenguaje, no tuvo el xito esperado. En consecuencia Oak (nombre original del lenguaje) pas a un segundo plano hasta que Internet lo rescat del cajn desastre. Finalmente Java encontr su lugar en Internet y en 1996 se public la versin del JDK 1.0 (Java Development Kit). JDK es el paquete distribuible de herramientas para la compilacin, depuracin y ejecucin de aplicaciones Java. En los aos posteriores se fueron publicando distintas versiones de la plataforma siguiendo la siguiente cronologa: JDK 1.0: 23 de Enero de 1996. JDK 1.1: 19 de Febrero 1997. J2SE 1.2: 8 de Diciembre de 1998. Java 2, Standard Edition. J2SE 1.3: 8 de Mayo de 2000. J2SE 1.4: 6 de Febrero de 2002. J2SE 5.0: 30 de Septiembre de 2004. Java SE 6: 11 de diciembre de 2006.

2. INSTALACIN JAVA SE 6. Este punto lo dedicaremos a la instalacin y puesta en marcha de la plataforma Java. Vamos a dividir la instalacin de la plataforma Java en 2 fases: - Descarga de Java SE 6. - Instalacin de Java SE 6.

13

Programacin JAVA EE5 El primer paso consiste en descargar el software de JAVA SE 6, para ello ser necesario navegar a la siguiente direccin web: http://java.sun.com/javase/downloads/index.jsp Una vez entremos en la pgina debemos seleccionar el link de la siguiente imagen:

Figura 2.1

14

Programacin JAVA EE5 Una vez seleccionado el paquete de instalacin hay que indicar el sistema operativo donde deseemos instalar Java, tal y como se muestra en la siguiente imagen:

Figura 2.2

15

Programacin JAVA EE5

Por ltimo seleccionaremos Java SE Development Kit 6u16 de la siguiente pantalla y descargaremos el fichero 1255379921371-integrated.jnlp. Debemos descargar el fichero en una ubicacin que posteriormente podamos localizar con facilidad para poder ejecutar el fichero descargado.

Figura 2.3

Los ficheros con extensin JNLP son un

tipo especial de fichero que permite

realizar la descarga e instalacin de un mismo proceso. JNLP es el acrnimo de Java Networking Launching Protocol. Al hacer doble click sobre este fichero se pondr en marcha el proceso de descarga e instalacin.

16

Programacin JAVA EE5 La primera pantalla de este proceso ser la siguiente:

Figura 2.4

17

Programacin JAVA EE5 Pulsaremos ejecutar y se nos mostrar el gestor de descargas de Sun.

Figura 2.5

18

Programacin JAVA EE5

En este paso debemos seleccionar el fichero y pulsar el botn start y una vez realizada la descarga del fichero jdk-6u16-windows-i586.exe pulsaremos doble-click de nuevo para iniciar la instalacin siguiendo los siguientes pasos: 1. Aceptacin de la licencia.

Figura 2.6

19

Programacin JAVA EE5 2. Seleccin de componentes y ruta de instalacin.

Figura 2.7

20

Programacin JAVA EE5

3. HERRAMIENTAS DE LINEA DE COMANDOS. Una vez instalado el ambiente java apropiado, nos encontramos normalmente con una estructura de carpetas como la siguiente, dentro de la ubicacin C: Archivos_de_ programaJavajdk1.6.0_16.

Figura 3.1 En esta ubicacin podemos encontrar la carpeta bin, esta carpeta contiene las herramientas de lnea de comandos de la distribucin java que hemos instalado en nuestro equipo. Dentro de la carpeta cabe destacar las siguientes herramientas: Java.exe: esta herramienta permite la ejecucin de aplicaciones Java. Javac.exe: La herramienta de compilacin de Java. Jar.exe: Es una herramienta de empaquetado para distribucin de libreras java. La carpeta bin contiene adems de las herramientas anteriormente relacionadas un conjunto de ejecutables que dan soporte de construccin y ejecucin de cualquier tipo de aplicaciones java. Las herramientas de lnea de comandos java, en el caso del sistema operativo

Windows requieren de una serie de requisitos necesarios para su ejecucin.

21

Programacin JAVA EE5 En equipos Windows NT, 2000, XP o Vista tendremos que abrir el men de contexto del icono MiPc y pulsar en propiedades, veremos entonces la ventana que aparece a la izquierda.

Figura 3.2

22

Programacin JAVA EE5 Dentro de la ventana de propiedades tenemos que ir a la pestaa de opciones avanzadas y seleccionar variables de entorno, como se muestra en la siguiente imagen:

Figura 3.3

23

Programacin JAVA EE5

Ahora debemos modificar el valor de la variable de sistema PATH para incluir la ruta de la carpeta donde se encuentran las herramientas de lnea de comandos, la ruta de la carpeta bin antes mencionada. La ltima operacin que deberemos realizar ser la de repetir los mismos pasos para la variable CLASSPATH de la que hablaremos ms adelante.

Figura 3.4

4. LA VARIABLE CLASSPATH. La variable CLASSPATH determina donde se deben buscar tanto las libreras propias de Java (Api de Java) como la ubicacin de las libreras de usuario. La variable CLASSPATH puede incluir varias rutas a ficheros *.class o rutas a los ficheros *.zip y *.jar que contienen las clases necesarias. Para comprobar el valor de la variable de entorno CLASSPATH en sistemas operativos Windows debemos iniciar una ventana de consola y ejecutar la instruccin SET CLASSPATH. Tal y como se muestra en la siguiente ilustracin:

24

Programacin JAVA EE5

Figura 4.1 Para establecer el valor de la variable CLASSPATH podemos seguir los pasos de configuracin de la variable PATH descritos en la seccin HERRAMIENTAS DE LINEA DE COMANDOS o podemos establecerla desde la ventana de comandos con la siguiente instruccin:
SET CLASSPATH=%CLASSPATH%;C:RUTA LIBRERAlibreria.jar;

En este ltimo caso la validez de la modificacin de la variable CLASSPATH se limitar a la sesin abierta con la ventana de comando, cuando se cierre la ventana se perdern los cambios. Y la ltima alternativa para establecer un valor para la variable es utilizar el parmetro -classpath o -cp de las herramientas java.exe y javac.exe segn la siguiente sintaxis:
Javac classpath %CLASSPATH%;C:RUTA LIBRERAlibreria.jar;

Si establecemos el valor de la variable CLASSPATH utilizando el parmetro classpath o su equivalente -cp el periodo de validez de las modificaciones se limitara a la ejecucin del comando java o javac correspondiente. 5. COMPILAR Y EJECUTAR. Para que un programa Java se pueda ejecutar es necesario tener instalada la Mquina Virtual Java (JVM). Cuando un programa java es compilado, no se genera ningn fichero dependiente del Sistema Operativo, como podran ser los ficheros con extensin exe o com en el caso de los sistemas Windows.

25

Programacin JAVA EE5 El compilador de java (javac.exe) genera un cdigo intermedio a partir de los ficheros fuente de java (ficheros con extensin .java). Este cdigo intermedio se conoce como bytecodes y sera el equivalente al cdigo mquina de la JVM. La Mquina Virtual Java, se instala en el Sistema Operativo y permite interpretar los bytecodes. La JVM s es dependiente del sistema operativo, pero los programas java no. Esto hace que Java se convierta en un lenguaje multiplataforma. Los bytescodes son compilados finalmente por el compilador JIT (Just In Time) a cdigo mquina del sistema operativo donde se inicia la ejecucin. De esta forma podemos ejecutar las aplicaciones Java sobre distintos sistemas operativos como Unix o Windows. Editor de texto Fichero fuente de java. (fuente.java)

javac

Ejecutable de java. (ejecutable.class)

java ejecutable.class

SALIDA

Ejemplo: Utilizando un editor de texto cualquiera, guarde el siguiente cdigo en el archivo Ppal.java.
public class Ppal{ public static void main (String[]args){ System.out.println (Hola mundo); } }

26

Programacin JAVA EE5

Una vez guardado el fichero fuente: Abrir una ventana de comando (cmd.exe). Situarnos en la carpeta donde hayamos guardado el fichero fuente. Compilamos con la instruccin javac Ppal.java. Ejecutamos con el comando java Ppal.

27

Programacin JAVA EE5 EJERCICIOS DE REPASO DE LA UNIDAD DIDCTICA 2: INTRODUCCIN AL LENGUAJE DE PROGRAMACIN JAVA ENUNCIADOS. 1. La primera versin del Java Development Kit fue la 1.0 y se public en el ao:

2. Para que un programa Java se pueda ejecutar es necesario tener instalado:

3. La variable CLASSPATH determina donde se deben de buscar:

4. La variable CLASSPATH puede contener rutas a ficheros de tipo:

5. Un programa ejecutable de java tiene la extensin de fichero:

28

Programacin JAVA EE5 SOLUCIONES A LOS EJERCICIOS DE REPASO. UNIDAD DIDCTICA 2 1. La Respuesta Correcta es: La a), 1996. 2. La Respuesta Correcta es: La b), Java Virtual Machine (JVM). 3. La Respuesta Correcta es: La c), Las libreras propias de java y las libreras de usuario. 4. La Respuesta Correcta es: La a), *.jar, *.zip, *.class. 5. La Respuesta Correcta es: La c), *.class.

29

Programacin JAVA EE5

UNIDAD DIDCTICA 3: ELEMENTOS DEL LENGUAJE. 1. TIPOS DE DATOS Dato: Representacin simblica (numrica, alfabtica, algortmica etc.), un atributo o una caracterstica de una entidad. Tipo de dato: Especificacin de un conjunto vlido de datos y operaciones. Los tipos de datos se pueden clasificar de la siguiente forma: Tipos de datos primitivos: NOMBRE Tipos de datos numricos enteros: Tipos de datos numricos en coma flotante: Tipo de datos carcter: Tipo de datos lgicos: TIPO DE DATO byte, short, int y long. float, double. char. boolean.

Tipos de datos definidos por el usuario. En Java este tipo de datos est representado por las clases. 2. OPERADORES Operadores aritmticos: OPERADOR + * / % OPERACIN Suma Resta Multiplicacin Divisin Mdulo (resto)

El orden de precedencia de los operadores aritmticos es al igual que en otros lenguajes, el habitual, multiplicacin y divisin preceden sobre restas y sumas. Se pueden utilizar parntesis para impedir interpretaciones incorrectas de las frmulas. Operadores de asignacin: OPERADOR
<oper1>=<valor> <oper1>+=<valor> <oper1>-=<valor> <oper1>*=<valor> <oper1>/=<valor> <oper1>%=<valor>

OPERACIN
Operador de asignacin principal. Asigna <valor> a <oper1> Ej. a=7; Incrementa en <valor> a <oper1> Ej. a+=5 -> a=a+5; Decrementa en <valor> a <oper1> Ej. a-=5 -> a=a-5; Multiplica <oper1> por <valor> Ej. a*=5 -> a=a*5; Divide <oper1> por <valor> Ej. a/=5 -> a=a/5; Calcula el resto de <oper1> dividido por <valor> Ej. a%=5 -> a=a%5;

30

Programacin JAVA EE5

Operadores Relacionales: OPERADOR


> < >= <= != == Mayor Menor Mayor o igual Menor o igual Distinto Igual

DESCRIPCIN

Los operadores relaciones se pueden aplicar tanto a nmeros como a caracteres. El resultado de las operaciones relacionales es un valor booleano. Operadores lgicos: OPERADOR
&& || ! ^ AND (y lgico) OR (o inclusivo) NOT (Negacin) XOR (o exclusivo)

DESCRIPCIN

Operadores a nivel de bit: OPERADOR


>> << & |

DESCRIPCIN
Desplazamiento a la derecha de los bits del operando Desplazamiento a la izquierda de los bits del operando AND a nivel de bit OR a nivel de bit

3. CARACTERES Para trabajar con caracteres se pueden emplear dos tipos de datos: char y la clase Character. El tipo char es un tipo primitivo y no permite realizar operaciones con caracteres de manera implcita como la clase Character. Los literales de tipo carcter deben ir entrecomillados entre comillas simples de la forma: a. Existen caracteres especiales que deben ser introducidos mediante secuencias de escape como las de la tabla siguiente: SECUENCIA DE ESC.
\t \n \r \b Tabulador Nueva lnea Retorno de carro Retroceso

VALOR

31

Programacin JAVA EE5


\ \ \\ Comillas simples Comillas dobles Barra invertida

Mtodos de la clase Character:


IsDigit () IsLetter () IsLowerCase () IsUpperCase () ToLowerCase () ToUpperCase ()

devuelve true cuando el argumento es un nmero. devuelve true cuando el argumento es un carcter alfabtico. devuelve true cuando el argumento es un carcter en minsculas. devuelve true cuando el argumento es un carcter en maysculas. convierte un carcter en maysculas. convierte un carcter en minsculas.

CADENAS DE CARACTERES Para representar una cadena de caracteres se emplea el tipo String. En Java no est permitido modificar individualmente los caracteres de una cadena de caracteres. El operador de concatenacin de caracteres es el +. Ejemplo:
"la" + "casa" + "de" + "Pedro" = "la casa de Pedro"

Mtodos de la clase String:


char charAt (int index)

devuelve el carcter que se encuentra en la posicin index.

4. ESTRUCTURAS DE DATOS. VARIABLES Las variables sirven para identificar una posicin de la memoria donde se encuentra un determinado dato. Las variables se identifican mediante nombres que, preferiblemente, deben representar los datos a los que se hace referencia. Para poder utilizar una variable es necesario declararla, de esta forma se puede reservar en memoria es espacio necesario para almacenar el dato en funcin de su tipo. Una vez declarada una variable y asignado su identificador (su nombre) se podr acceder al dato para leerlo o modificarlo.

32

Programacin JAVA EE5 En Java las variables se declaran de la siguiente manera: <tipo> identificador; <tipo> lista de identificadores;

Figura 4.1 Ejemplos: Declaracin de una variable entera: Declaracin de dos variables booleanas (lgicas):
int x; boolean sw1, sw2;

Los nombres que utilizamos como identificadores deben respetar una serie de normas: Deben empezar por un carcter alfabtico. Despus del primer carcter alfabtico se puede utilizar cualquier carcter No se pueden utilizar espacios. Java es sensible a maysculas y minsculas, por lo tanto considera diferentes

alfanumrico incluyendo el smbolo de subrayado.

las minsculas de las maysculas. Ejemplos de nombres correctos: dni, pos_x, a544, etc... Ejemplos de nombres incorrectos: 1nombre, la marca, tel.fijo. Convenciones: - Los nombres de las variables se suelen poner en minsculas.
int nota;

- Los nombres de las variables deben identificar el dato que contienen. int edad; - Cuando el nombre de la variable contiene 2 palabras estas se separan poniendo el primer carcter de la segunda palabra en maysculas. 33
int edadLimite;

Programacin JAVA EE5 Las variables se pueden inicializar en la declaracin: CONSTANTES Las constantes son un tipo especial de variable que mantienen sus valores fijos a lo largo del ciclo de vida del programa. Hacen referencia por tanto a valores que no pueden modificarse. Su declaracin e inicializacin es igual al de las variables, teniendo en cuenta que se declaran precediendo el tipo de la palabra reservada final. Ejemplo:
final float GRAVEDAD = 9.8;

int mayor = -1;

Convenciones: Los identificadores de las constantes van en maysculas.


final float PI=3.1415;

Si el identificador de una constante se compone de varias palabras, estas se


final float VELOCIDAD_INICIAL = 4.9;

separan mediante el carcter de subrayado. ARRAYS

Las estructuras de datos permiten almacenar en memoria colecciones de datos. Existen distintos tipos de estructuras entre las que destacan los arrays. Los arrays son estructuras de datos que almacenan colecciones de datos del mismo tipo. Se pueden almacenar datos como las notas de un alumno o las temperaturas medias de una estacin alpina. Los arrays se utilizan como contenedor de datos que estn relacionados, evitando tener que declarar varias variables. Los arrays no pueden contener valores de distintos tipos, es decir, no se pueden mantener en el mismo array datos de entero y datos de tipo real, por ejemplo. La dimensin del array se establece en el momento de su declaracin, mediante el operador new. Los arrays de una dimensin o unidimensionales tambin se pueden llamar vectores y los de dos dimensiones o bidimensionales se conocen tambin como matrices.

34

Programacin JAVA EE5

Declaracin de vectores:
tipo [] identificador; tipo identificador [];

Declaracin de matrices:
Tipo [][] identificador; tipo identificador [][];

Creacin de arrays:
identificador = new tipo [tamao]; identificador = new tipo [filas][columnas]

Inicializacin:
float notas[] = {4,6,7,5.7,7.8};

Acceso:

Para acceder a un dato de un array es necesario indicar la posicin. La

primera posicin de un array es la posicin 0. Ejemplos de declaracin:


float notas[]; int[] temperaturas;

Ejemplos de creacin:

notas = new int[10]; //declara un array de 10 elementos (desde la posicin 0 a la 9) temperaturas = new int[50]; //declara un array de 50 elementos (posicin desde 0 hasta 49) int alumnosAula[][] = new int[10][2];

Ejemplos de acceso:
notas[0] = 8.7; alumnosAula[1][1] = 20;

35

Programacin JAVA EE5

5. ESTRUCTURAS DE CONTROL. ESTRUCTURAS CONDICIONALES Las estructuras condicionales permiten establecer caminos alternativos en la ejecucin del cdigo.

Condicin

cierta

Bloque de sentencias

falsa

Normalmente los programas se ejecutan de forma secuencial, instruccin tras instruccin. Pero se pueden establecer bifurcaciones de cdigo utilizando las estructuras condicionales.

36

Programacin JAVA EE5 Estructura If:


If (condicin){ //bloque de sentencias }

En este caso si la condicin es cierta se ejecutar el bloque de sentencias, en caso contrario, la ejecucin del programa saltar hasta justo despus del bloque de sentencias para continuar con la ejecucin. Estructura If-Else:
If (condicin){ //bloque de sentencias 1 }else{ //bloque de sentencias 2 }

Si se cumple la condicin se ejecutar el primer bloque de sentencias, pero en el caso de que la condicin no sea cierta, se ejecutar el bloque de sentencias 2. Las estructuras condicionales if-else se pueden anidar y encadenar. Ejemplo de estructuras anidadas:
If (condicin){ if (condicin){ //bloque de sentencias 1 }else{ //bloque de sentencias 2 } }else{ //bloque de sentencias 3 }

Ejemplo de estructuras encadenadas:


If (condicin){ //bloque de sentencias }else if (condicin){ //bloque de sentencias }else if(condicin){ //bloque de sentencias }else{ //bloque de sentencias }

1 2 3 4

Otra forma de representar una estructura de tipo if, es con el operador ?, que tiene la siguiente sintaxis:
variable = condicin? expresin1: expresin2;

37

Programacin JAVA EE5 Que equivale a:


if (condicin){ variable = expresin1; }else{ variable = expresin2; }

Estructura switch: Esta estructura es equivalente a la estructura if-elseif-else cuando comparamos la misma expresin con distintos valores.

Sintaxis:
switch (expresin) { case <valor1>: sentencia(s); case <valor2>: sentencia(s); case <valor3>: sentencia(s); case <valor4>: sentencia(s); case <valor5>: sentencia(s); default: sentencia(s); break; }

break; break; break; break; break;

Ejemplo:
switch (opcionMenu) { case 1: //consultar productos; break; case 2: //aadir producto; break; case 3: //eliminar producto; break; default: //opcin incorrecta; break; }

Despus de evaluar la expresin se ejecutarn las sentencias asociadas a la seccin case que cumpla la expresin. Si no se utiliza la sentencia break una vez se termina de ejecutar el case correspondiente, se ejecutarn secuencial mente sus sucesores. La seccin default se ejecuta si no hay ningn case que cumpla la expresin evaluada. 6. ESTRUCTURAS DE CONTROL ITERATIVAS Cuando se quiere repetir la ejecucin de una sentencia o sentencias de forma repetitiva se utilizan las estructuras de control iterativas que son las encargadas de realizar este tipo de acciones. 38

Programacin JAVA EE5 A este tipo de estructuras se las conoce como bucles y pueden ser de diferentes tipos: Bucle for Bucle while Bucle do while

Bucle for: El bucle for tiene la siguiente sintaxis.


for (inicializacion; expresinBooleana; incremento) { sentencia(s); }

Ejemplo:
for (i=0;i<10;i++){ System.out.println (se imprime la lnea: + i); }

En el ejemplo anterior la sentencia System.out.println ejecutar 10 veces.

(se imprime la lnea: + i);

se

Desde que la variable i se inicializa a 0 y va tomando incrementos de uno en uno hasta que alcanza el valor 10. i=0 -> se imprime la lnea: 0 i=1 -> se imprime la lnea: 1 i=2 -> se imprime la lnea: 2 i=3 -> se imprime la lnea: 3 i=4 -> se imprime la lnea: 4 i=5 -> se imprime la lnea: 5 i=6 -> se imprime la lnea: 6 i=7 -> se imprime la lnea: 7 i=8 -> se imprime la lnea: 8 i=9 -> se imprime la lnea: 9 Bucle while: La sintaxis del bloque while es la siguiente:
while (expresinBooleana) { sentencia(s); }

Ejemplo: Para reproducir el ejemplo del bucle for utilizando la estructura while tendramos que escribir lo siguiente: 39

Programacin JAVA EE5


Int i =0; While (i<10){ System.out.println (se imprime la lnea: + i); i=i+1; }

Bucle do while: Este bucle tiene el mismo funcionamiento que el bucle while con la diferencia que la comprobacin de la condicin se realiza al final de cada iteracin, asegurando que al menos se ejecutar la primera de ellas. Sintaxis:
do{ sentencia(s); }

Ejemplo:
int i =0; do{ System.out.println(se imprime la lnea: + i); i=i+1; }while (i<10);

7. COLECCIONES Java dispone de un juego de interfaces para mantener colecciones de objetos. Las colecciones permiten realizar determinadas acciones sobre los objetos contenidos, estas acciones primitivas estn definidas en las interfaces en funcin del tipo de coleccin. Las colecciones permiten realizar iteraciones (recorrer) los objetos que contienen. Interfaz Collection La interfaz ms importante es Collection de la que extienden otras interfaces ms especializadas. Para manejar los objetos contenidos en la coleccin, la interfaz Collection declara los siguientes mtodos: add (elemento): aade el elemento a la coleccin. iterator (): devuelve un iterador para recorrer la coleccin. size (): devuelve el tamao de la coleccin. contains (elemento): devuelve un booleano que indica si la coleccin

contiene el elemento.

40

Programacin JAVA EE5 Ejemplo. Recorrer una coleccin:


Iterator<Integer> it = notas.iterator (); while (it.hasNext ()){ int nota = it.next (); if (nota<5){ System.out.println (Suspenso); } }

El cdigo de ejemplo mostrar un mensaje suspenso cada vez que encuentre una nota en la coleccin menor que 5.

Interfaz List La interfaz List define una lista de elementos, es decir, una coleccin en la que se mantiene la posicin de cada uno de los elementos. Por lo que podemos acceder a un elemento simplemente indicando su posicin. Adems de las operaciones definidas en la interfaz Collection se aaden las operaciones: get (int index): devuelve el elemento que se encuentra en la posicin set (int index, Tipo elemento): aade elemento en la posicin index. index.

La interfaz List cuenta con dos implementaciones representadas por las clases: ArrayList: muy parecido a un array. LinkedList: que implementa la coleccin utilizando una lista doblemente enlazada, donde cada elemento est vinculado a su antecesor y a su sucesor. Interfaz Set Representa una coleccin de elementos al igual que Collection con la diferencia que Set no permite introducir elementos duplicados. HashSet representa una implementacin de la interfaz Set. Interfaz Map Un objeto de tipo Map equivale a un diccionario donde podemos almacenar elementos asociados a un objeto key o clave. De forma que tendremos una coleccin donde estarn asociados pares de objetos, un objeto representa el elemento almacenada y el otro la clave. CLAVE 4558874L 568871H OBJETO Cliente1 Cliente2

41

Programacin JAVA EE5 677753B ... 3145433G Cliente3 ... Cliente_n

Los mtodos ms significativos son los siguientes: get (Object clave): Devuelve el valor asociado a una clave. Devuelve null si no existe esa clave en el map. put (K clave, V valor): Aade un par clave-valor al map. Si ya haba un valor para esa clave se lo reemplaza. keySet (): Devuelve todas las claves en un Set. values (): Devuelve todos los valores en un Collection.

42

Programacin JAVA EE5 EJERCICIOS DE REPASO DE LA UNIDAD DIDCTICA 3: ELEMENTOS DEL LENGUAJE ENUNCIADOS. 1. Los tipos de datos primitivos de java que representan nmeros enteros son:

2. Los operadores relacionales son:

3. Completa los huecos con las Palabras : El tipo ____ es un tipo primitivo y no permite realizar operaciones con ____ de manera implcita como la clase _____. caracteres char Character

4. Completa los huecos con las Palabras : Para poder utilizar una ____ es necesario _____, de esta forma se puede reservar en memoria el ____ necesario para almacenar el dato en funcin de su ____. espacio variable tipo declararla

5. Completa los huecos con las Palabras : Los ____ de una dimensin o unidimensionales tambin se pueden llamar ____ y los de dos dimensiones o _____ se conocen tambin como ____. matrices arrays vectores bidimensionales

43

Programacin JAVA EE5 SOLUCIONES A LOS EJERCICIOS DE REPASO. UNIDAD DIDCTICA 3 1. La Respuesta Correcta es: La a), byte, short, int y long. 2. La Respuesta Correcta es: La b), >, <, >=, <=, !=, ==. 3. La Respuesta Correcta es: El tipo char es un tipo primitivo y no permite realizar operaciones con caracteres de manera implcita como la clase Character. 4. La Respuesta Correcta es: Para poder utilizar una variable es necesario declararla, de esta forma se puede reservar en memoria el espacio necesario para almacenar el dato en funcin de su tipo. 5. La Respuesta Correcta es: Los arrays de una dimensin o unidimensionales tambin se pueden llamar vectores y los de dos dimensiones o bidimensionales se conocen tambin como matrices.

44

Programacin JAVA EE5

UNIDAD DIDCTICA 4: STREAMS JAVA (FLUJOS) 1. TIPOS DE STREAMS Para realizar cualquier operacin de entrada y salida de datos desde un programa Java es necesario utilizar los Streams. Los Streams representan flujos de caracteres o flujos bytes. Los Streams representan la forma ms bsica de leer o escribir datos desde distintos orgenes como teclado, memoria o ficheros. Grficamente un Stream o flujo se representara de la siguiente manera:

ORIGEN

Stream de lectura

APP

APP

Stream de escritura

DESTINO

Java utiliza dos tipos bsicos de streams, los streams de tipo byte y los streams de tipo cadena: Byte Streams: Este tipo de flujos estn orientados al tratamiento binario de datos. Existen dos clases abstractas en la base de la jerarqua de este tipo de flujos, InputStream y OutputStream, especializadas en lectura y escritura respectivamente. De ellas derivan otras clases especializadas en el tratamiento de los distintos orgenes o destinos de los streams. Character Streams: En este caso tenemos una jerarqua de clases destinadas a la implementacin de streams especializados en la lectura y escritura de caracteres Unicode. Tambin existen dos clases abstractas, Reader y Writer, especializadas en lectura y escritura de caracteres respectivamente, de las que derivan a su vez otras ms especializadas. 2. ACCESO A DISPOSITIVOS. Lectura desde la Consola Para leer datos introducidos por consola, tenemos que tener en cuenta que esta, representa la entrada estndar del sistema para lo cual dispone de un mecanismo ya implementado a travs de System.in. El atributo esttico in se corresponde con una instancia de la clase InputStream. 45

Programacin JAVA EE5 Si queremos leer un flujo de caracteres desde el teclado necesitaremos clases especializadas para realizar la operacin. Dado que InputStream es un tipo especializado en lectura de flujos de tipo byte y pretendemos leer caracteres, lo primero que nos hace falta es una clase que transforme el flujo de bytes en un flujo de caracteres. Esta clase es InputStreamReader. Si adems pretendemos leer lnea a lnea, necesitaremos a su vez una clase que nos permita leer desde un buffer hasta que se pulse el retorno de carro, necesitamos por tanto, BufferedReader. El cdigo a emplear para realizar la lectura por teclado sera el siguiente: Ejemplo:
import java.io.*; public class Ppal{ public static void main(String[] args)throws IOException { String linea; BufferedReader br; br = new BufferedReader (new InputStreamReader (System.in)); System.out.println("Escribe 'salir' y pulsa 'intro' para terminar"); do { cadena = br.readLine (); System.out.println (linea); }while (!linea.equals ("salir")); } }

3. ACCESO A FICHEROS. En java el acceso a ficheros est orientado a bytes sin embargo podemos crear envoltorios para manejarlos con flujos de caracteres. Las clases especializadas en el manejo de ficheros son FileInputStream y FileOutputStream. La clase File puede ser de ayuda para identificar el fichero sobre el que vamos a realizar la lectura o escritura. Esta clase permite identificar los permisos de un fichero, su fecha de creacin, el directorio al que pertenece, es decir, nos permite acceder a los metadatos del fichero pero no a sus datos. Las clases FileReader y FileWriter son las clases que podemos utilizar como envoltorios para acceder a los ficheros con flujos de tipo carcter.

46

Programacin JAVA EE5 Para leer un fichero de texto podramos emplear las siguientes lneas de cdigo: Ejemplo:
import java.io.*; public class Ppal{ public static void main (String[] args) throws IOException{ FileReader fr = new FileReader ("fichero.txt"); BufferedReader br = new BufferedReader (new FileReader ("fichero.txt")); while ((linea = bf.readLine ())!=null) { System.out.println (linea); } } }

Si lo que pretendemos es manipular ficheros binarios, deberamos manejarlos con flujos de byte. En el siguiente ejemplo se ilustra el cdigo necesario para poder realizar la copia de un fichero de imagen. Ejemplo:
import java.io.*; public class Ppal{ public static void main (String[] args) throws IOException{ FileInputStream fileInput = new FileInputStream ("c:/imagenOrigen.jpg); BufferedInputStream bufferedInput = new BufferedInputStream (fileInput); FileOutputStream fileOutput = new FileOutputStream ("c:/imagenDestino.jpg"); BufferedOutputStream bufferedOutput = new BufferedOutputStream (fileOutput); byte [] array = new byte[1000]; int nBytes = bufferedInput.read (array); while (nBytes > 0) { bufferedOutput.write (array,0,nBytes); nBytes=bufferedInput.read (array); } bufferedInput.close (); bufferedOutput.close (); } }

4. CLASES ESPECIALIZADAS. Java incorpora adems otro tipo de clases especializadas en el tratamiento de streams para hacer conversiones automticas a los tipos primitivos de java. Estas son DataInputStream y DataOutputStream.

47

Programacin JAVA EE5

Ejemplo:
import java.io.*; public class Ppal{ public static void main(String[] args) throws IOException{ DataInputStream di; FileInputStream fs; byte[] b; fs = new FileInputStream ( "c:/fichero.txt" ); di = new DataInputStream ( fs ); fs.read ( b ); int i = di.readInt (); System.out.println("El nmero leido es: " + i); di.close (); fs.close (); } }

Los mtodos especializados de la clase DataInputStream para convertir los datos ledos en tipos primitivos son los siguientes:
byte readByte() int readUnsignedByte() short readShort() int readUnsignedShort() char readChar() int readInt() long readLong() float readFloat() double readDouble() String readLine()

En el caso de la clase DataOutputStream se maneja de la misma manera que su anloga utilizando FileOutputStream en vez de FileInputStream. Los mtodos especializados estn relacionados con la escritura de tipos primitivos y son los siguientes:

void void void void void void void void void

writeBoolean( boolean b ); writeByte( int i ); writeShort( int i ); writeChar( int i ); writeInt( int i ); writeFloat( float f ); writeDouble( double d ); writeBytes( String s ); writeChars( string s );

48

Programacin JAVA EE5 EJERCICIOS DE REPASO DE LA UNIDAD DIDCTICA 4: STREAMS JAVA (FLUJOS) ENUNCIADOS. 1. Los Streams representan la forma ms bsica de leer o escribir datos desde distintos orgenes como teclado, memoria o ficheros y pueden hacerlo utilizando:

2. Las clases que se sitan a la cabeza de la jerarqua de clases para el tratamiento de streams son:

3. Completa los huecos con las Palabras : En java el acceso a ficheros est orientado a ____ sin embargo podemos crear _____ para manejarlos con flujos de _____. bytes caracteres envoltorios

4. Indique cual de las siguientes afirmaciones es correcta:

5. Completa los huecos con las Palabras : Java incorpora adems otro tipo de clases _____ en el tratamiento de ____ para hacer conversiones automticas a los tipos ____ de java. Estas son _____ y _____.
Streams especializadas DataOutputStream primitivos DataInputStream

49

Programacin JAVA EE5 SOLUCIONES A LOS EJERCICIOS DE REPASO. UNIDAD DIDCTICA 4 1. La Respuesta Correcta es: La b), Flujos de caracteres o bytes. 2. La Respuesta Correcta es: La a), InputStream y OutputStream. 3. La Respuesta Correcta es: En java el acceso a ficheros est orientado a bytes sin embargo podemos crear envoltorios para manejarlos con flujos de caracteres. 4. La Respuesta Correcta es: La b), La clase File permite identificar un fichero. 5. La Respuesta Correcta es: Java incorpora adems otro tipo de clases especializadas en el tratamiento de streams para hacer conversiones automticas a los tipos primitivos de java. Estas son DataInputStream y DataOutputStream.

50

Programacin JAVA EE5

UNIDAD DIDCTICA 5: NOVEDADES DEL LENGUAJE EN JAVA 5 1. GENRICOS. Una de las ms significativas aportaciones de java 5 ha sido la inclusin de los Genricos. Un tipo genrico va a permitir el uso de tipos especficos para las colecciones java. Hasta Java 5 las colecciones de objetos trabajaban con el tipo Object, lo que nos obligaba a realizar un casting de tipos para trabajar con el tipo correcto. A partir de ahora las colecciones podrn trabajar con tipos especficos. Ejemplo: Antes de Java 5: A partir de Java 5:
List usuarios = new ArrayList (); List<Usuario> usuarios = new ArrayList<Usuario>();

El uso de genricos en las colecciones aporta adems una caracterstica de integridad importante ya que cuando trabajamos con Object caba la posibilidad de introducir objetos de distintos tipos en la coleccin. Al utilizar genricos estamos especificando el tipo por lo tanto garantizamos la integridad de los objetos contenidos. 2. BUCLE FOR MEJORADO (FOR-EACH) Un tipo de estructura de control bastante extendida en otros lenguajes de programacin es el bucle for-each que nos permite recorrer colecciones de objetos. Esto era algo que se echaba de menos en java y ahora por fin podemos contar con este tipo de bucle, que nos permitir recorrer cualquier tipo de coleccin o tipo que implemente la interfaz Iterable como los arrays. La sintaxis es la siguiente:
for (Tipo var: coleccin){ ... }

Por ejemplo, si quisiramos recorrer un array de cadenas, utilizaramos el siguiente cdigo:


String[] direcciones = {alonso.ruiz@novalto.es;mauricio.espiguares@novalto.es}; For (String direccion:direcciones){ System.out.println (direccin); }

51

Programacin JAVA EE5 3. AUTOBOXING Y UNBOXING. Anteriormente a la aparicin de Java 5 era necesario convertir de forma explcita los tipos primitivos a sus correspondientes clases envoltorio o wrappers, esto significa que cuando queramos convertir una variable de tipo int en una instancia de la clase Integer necesitbamos realizar la conversin. Para pasar un valor entero desde una instancia de la clase Integer a una variable de tipo int, debamos utilizar el siguiente cdigo:
Integer valorInteger = new Integer (10); //Boxing Int valorInt = valorInteger.intValue (); //Unboxing

Ahora podemos hacer lo mismo de la siguiente manera:


Integer valorInteger = 10; Int valorInt = valorInteger //Auto-boxing //Auto-unboxing

4.

TIPOS ENUMERADOS.

En otros lenguajes se vienen utilizando enumeraciones desde hace muchos aos sin embargo en Java hemos tenido que esperar hasta la aparicin de Java 5 para poder utilizar este tipo de estructuras estticas. Los tipos enumerados representan otra categora de tipos al igual que las clases y los interfaces. Podemos declarar tipos enumerados utilizando la siguiente sintaxis:
<modificador> enum <nombreTipo> {<lista de valores>};

Ejemplo:
public enum TipoDocumento {FACTURA, ALBARAN, PEDIDO}; TipoDocumento tipoDoc = TipoDocumento.FACTURA;

Los tipos genricos tambin son soportados por la estructura switch. Como ejemplo se presenta el siguiente cdigo:
Switch (tipoDoc) { case FACTURA: ... break; case ALBARAN: ..... break; case PEDIDO: ..... break; default: .... }

52

Programacin JAVA EE5 5. NMERO VARIABLE DE ARGUMENTOS.

Esta nueva caracterstica nos permite declarar un nmero variable de parmetros del mismo tipo para una operacin. De esta forma evitamos tener que declarar un array como argumento de un mtodo para poder pasarle un nmero variable de valores. La sintaxis es la siguiente:
Tipo... nombreArgumento

Ejemplo:
public void enviarMail(Mensaje msg, String .. direcciones){ ... }

El argumento variable siempre deber ser el ltimo en declarar y podemos no pasarle ningn valor. Para tener acceso a los valores pasados a travs del argumento variable debemos recorrer el argumento como si fuera un array. 6. IMPORTACIN DE MIEMBROS ESTTICOS.

Esta nueva caracterstica nos permite importar miembros estticos y se denomina static imports. Es simplemente un apoyo a nivel de cdigo mediante el cual podramos implementar una llamada a un miembro esttico sin especificar toda la ruta hacia el mismo. Ejemplo: Para imprimir un mensaje por consola deberamos escribir:
System.out.println (mensaje);

Utilizando static imports escribiramos lo siguiente:


import static java.lang.System.out; out.println (mensaje);

Las anotaciones representan metadatos de los elementos de programacin como son los paquetes, las clases, los atributos, las operaciones, los parmetros y las variables locales. No afectan a la ejecucin del cdigo, simplemente aportan informacin sobre los elementos de programacin para el intrprete.

53

Programacin JAVA EE5 Las anotaciones representan tipos especiales cuyos miembros son pares atributovalor. La sintaxis necesaria para utilizar una anotacin es la siguiente:
@TipoAnotacion (<atributo1>=<valor1>, <atributo2>=<valor2>, etc)

Existen tres anotaciones predefinidas: @Override: Se utiliza para anotar operaciones que sobrescriben operaciones de la clase Base. @SuppressWarnings: Se utiliza para indicarle al compilador que tipo de warnings se quieren ocultar. @Deprecated: Le indica al compilador que un determinado elemento es obsoleto y debera mostrar una advertencia. Ejemplo: Definicin de la anotacin @Override:
package java.lang; import java.lang.annotation.*; @Target (ElementType.METHOD) @Retention (RetentionPolicy.SOURCE) public @interface Override { }

Para utilizar la anotacin @Override emplearamos el siguiente cdigo:


public class Coche extends Vehiculo{ @Override public void avanzar (double distancia){ .... } }

54

Programacin JAVA EE5 EJERCICIOS DE REPASO DE LA UNIDAD DIDCTICA 5: NOVEDADES DEL LENGUAJE EN JAVA5 ENUNCIADOS. 1. El uso de genricos es una caracterstica:

2. Las tres anotaciones incluidas a partir de la versin Java 5 son:

3. La condicin necesaria para poder utilizar el nuevo for mejorado es:

4. Los tipos enumerados:

5. Gracias a la incorporacin a partir de Java 5 de los var-args (nmero variable de argumentos):

55

Programacin JAVA EE5 SOLUCIONES A LOS EJERCICIOS DE REPASO. UNIDAD DIDCTICA 5 1. La Respuesta Correcta es: La a), Nueva en Java 5. 2. La Respuesta Correcta es: La c), @Override, @Deprecated, @SuppresWarnings. 3. La Respuesta Correcta es: La a), Que el objeto que pretendemos recorrer implemente la interfaz Iterable. 4. La Respuesta Correcta es: La b), Representan una nueva categora de tipos. 5. La Respuesta Correcta es: La c), Podemos evitar enviar arrays como parmetro cuando desconocemos el nmero de valores.

56

Programacin JAVA EE5

PRCTICAS
1. Completa los huecos con las Palabras: La programacin orientada a objetos supone un nuevo _____ (patrn o mdelo) de programacin que se populariz a principios de la dcada de los noventa. Involucra varios conceptos de programacin que describen las _____ , el ____ y la ____ de los objetos que interaccionan en una aplicacin informtica. identidad 2. paradigma estado relaciones

Completa los huecos con las Palabras: Los mensajes entre objetos representan la _____ entre los mismos, cuando un objeto recibe un determinado mensaje debe _____ para ejecutar la _____ , funcin miembro o ______. algoritmo asociado interpretarlo comunicacin operacin

3.

El proceso de definicin de una nueva clase a partir de una clase base se conoce como:

4.

Para compilar los ficheros de cdigo fuente de java utilizamos la herramienta:

5.

El contenido de los ficheros ejecutables de java se conoce como:

57

Programacin JAVA EE5

6.

Para representar una cadena de caracteres se utiliza el tipo:

7.

Los arrays son estructuras de datos que almacenan colecciones de datos...

8.

Cul sera la forma correcta de declarar una constante?

58

Programacin JAVA EE5 SOLUCIONES A LOS EJERCICIOS DE REPASO. PRACTICAS 1. La Respuesta Correcta es: La programacin orientada a objetos supone un nuevo paradigma (patrn o mdelo) de programacin que se populariz a principios de la dcada de los noventa. Involucra varios conceptos de programacin que describen las relaciones, el estado y la identidad de los objetos que interaccionan en una aplicacin informtica. 2. La Respuesta Correcta es: Los mensajes entre objetos representan la comunicacin entre los mismos, cuando un objeto recibe un determinado mensaje debe interpretarlo para ejecutar la operacin, funcin miembro o algoritmo asociado. 3. La Respuesta Correcta es: La c), Derivacin. 4. La Respuesta Correcta es: La b), javac. 5. La Respuesta Correcta es: La c), Bytecodes. 6. La Respuesta Correcta es: La c), String. 7. La Respuesta Correcta es: La a), Del mismo tipo. 8. La Respuesta Correcta es: La c), final GRAVEDAD = 9.8;.

59

Programacin JAVA EE5 GLOSARIO A API Interfaz para la programacin de aplicaciones. B Bytecodes Lenguaje intermedio que posteriormente es interpretado para su ejecucin. C Casting Es el proceso mediante el cual transformamos un tipo en otro compatible. Compilador JIT Compilador Just-In-Time. Compila en tiempo de ejecucin y es el responsable de ir traduciendo los bytecodes en cdigo ejecutable por el sistema operativo. Condiciones Las condiciones en programacin se representan mediante expresiones lgicas donde se comparan los operandos con un operador lgico y se retorna un resultado verdadero o falso. Constructor Un mtodo especial que inicia las variables de instancia de un objeto recin creado. D Dispositivos Un dispositivo es cualquier elemento hardware con el que podremos comunicar desde un programa java. 60

Programacin JAVA EE5 E Expresiones Las expresiones relacionan uno o varios operandos con uno o varios operadores produciendo un retorno que ser asignado a una variable. F Ficheros Ejecutables Son los ficheros que contienen los bytecodes y tienen extensin .class. Ficheros Fuente Son ficheros que contienen las lneas de cdigo que posteriormente son compiladas para su ejecucin. Tienen extensin .java. I Instancia Un miembro de una clase. Todos los objetos son instancias. J J2SE Java 2 Standard Edition. Existen distintos tipos de distribuciones java apropiadas cada una para el desarrollo de distintos tipos de aplicaciones. El J2SE es la distribucin bsica de Java. JDK Java Development Kit o kit de desarrollo de Java. Es la distribucin de herramientas necesarias para el desarrollo y ejecucin de aplicaciones Java.

61

Programacin JAVA EE5 JNLP Java Networking Launching Protocol. Protocolo desarrollado por Sun Microsystems para mecanizar los procesos de descarga de las distribuciones y componentes Java. JVM Java Virtual Machine o Mquina Virtual de Java. Es el entorno de ejecucin de las aplicaciones Java. O Oak Lenguaje original de Java. P POO Programacin Orientada a Objetos. Representa un nuevo paradigma/modelo de programacin. S Sentencias Una sentencia es una instruccin de cdigo. Sun Microsystems Es la empresa que desarrolla, soporta y evoluciona el lenguaje Java. U Unix Es un sistema operativo portable, multitarea y multiusuario. Desarrollado, en principio, en 1969 por un grupo de empleados de los laboratorios Bell de AT&T.

62

Programacin JAVA EE5 Existen distintas implementaciones como Solaris de Sun, Aix de IBM, HP-UX de Hewlett-Packard. Utillera de java Conjunto de herramientas proporcionadas por el JDK para crear, ejecutar y distribuir aplicaciones java. V Ventana de consola Es la ventana que se abre cuando ejecutamos el comando cmd.exe en sistemas Windows.

63

Potrebbero piacerti anche