Lecciones Java

download Lecciones Java

of 28

description

Lecciones java (programacion)

Transcript of Lecciones Java

Ruth CarballoPgina 2120/03/2010

EL LENGUAJE JAVA

El lenguaje Java fue creado por la empresa Sun Microsystems y en un corto perodo de tiempo se convirti en uno de los lenguajes de programacin lderes.

Principales propiedades del lenguaje Java:

Lenguaje diseado para Internet, permite crear programas (applets) que se integran en las pginas Web.

Puede ser usado como un lenguaje de programacin tradicional para crear lo que se conoce como aplicaciones

Es un lenguaje multiplataforma (portable)

Tiene prestaciones multimedia (texto, imgenes, sonido, animaciones, etc)

Resulta un lenguaje familiar al tener una estructura similar a C++

Elimina dos de los problemas ms comunes con los que se encuentran los programadores en C++: el uso de punteros, la gestin de memoria, y el control de acceso a los elementos de una matriz

Es un lenguaje orientado a objetos

Es un lenguaje interpretado que integra el poder de los lenguajes compilados y la flexibilidad de los interpretados

Se estima que es entre 10 y 20 veces ms lento que C++

Admite programacin concurrente

Es simple, robusto y seguro

Es un lenguaje accesible: a travs de Internet puede obtenerse de forma gratuita el Kit de Desarrollo Java (JDK) de la empresa Sun Microsystems

A travs de Internet se puede acceder tambin a: Cursos interactivos, multitud de ejemplos, herramientas para el desarrollo de applets, etc.

Bibliografa:

Java 2. Manual de Programacin. L. Joyanes Aguilar, M. Fernndez Azuela. Mc Graw-Hill 2001. ISBN 84-481-3193-2

Manual Avanzado de Java. F. Lima Daz. Anaya Multimedia. 1998. ISBN 84-415-0517-9

Leccin 1: Instalacin del SetUp Developer Kit de Java

Ficheros de inters:

j2sdk-1_3_1-win.exe el programa

j2sdk-1_3_1_doc.zip la documentacin (o ayuda)

Pulsando dos veces sobre el icono j2sdk-1_3_1-win se comienza la instalacin. Automticamente se crear un directorio C:\ jdk1.3.1 con los subdirectorios

\bin

\lib

\demo

etc

Al directorio C:\jdk1.3.1 es a lo que se le llama Java Home

El programa queda instalado en C:\jdk1.3.1 y las instrucciones javac (compilacin) y java (ejecucin) funcionarn nicamente en C:\jdk1.3.1\bin

En lnea de comandos se podr comprobar si el programa est bien instalado en la forma siguiente:

Ejecutando >javac en C: obtendremos como respuesta que el comando es desconocido. Pero ejecutando >javac en C:\jdk1.3.1\bin obtendremos como respuesta Usage: javac etc . Los mensajes exactos dependen

de si se usa Windows 98 o 2000.

La ventana de lnea de comandos es la ventana de MS-DOS. En Windows 2000 se

accede a ella en la forma PROGRAMAS->ACCESORIOS->SIMBOLO DEL

SISTEMA

Hasta ahora los comandos javac y java slo funcionan en la direccin C:\jdk1.3.1\bin

Si queremos que funcionen desde cualquier direccin , la direccin C:\jdk1.3.1\bin debe estar incluida en el parmetro PATH. Path se traduce al castellano como

camino o senda. Cuando WINDOWS tiene que realizar una aplicacin busca el

programa en las direcciones dadas en PATH.

Ampliacin del PATH para una sesin en MS-DOS

C:>PATH (me ensea lo que hay en el path)

C:>set PATH=%PATH%;C:\jdk1.3.1\bin (aade al PATH anterior el directorio

C:\jdk1.3.1\bin

en Windows2000 sin comillas)

C:>PATH (confirmamos que C:\jdk1.3.1\bin est en el PATH)

C:> javac (confirmamos que se produce la respuesta Usage: javac >source files> etc)

Si salimos de la sesin MS-DOS (con exit) y abrimos una nueva, veremos que lo que

habamos aadido ha desaparecido, el PATH vuelve a ser el inicial.

Ampliacin permanente del PATH (Windows98)

Para que la ampliacin del PATH sea permanente la direccin a aadir debe escribirse en el fichero de Windows Autoexec.bat - accedemos al fichero con INICIO->EJECUTAR->SYSEDIT

nos aparecer delante de todo la ventana Autoexec.bat

en la instruccin PATH=... aadimos la direccin que nos interesa

escribimos la instruccin > set classpath = .

(Al escribir > javac filename.java se crear filename.class, que es el fichero pseudocompilado. En el paso de ejecucin: >java filename se hace la llamada a

filename.class. La instruccin set classpath=. hace que el filename.class se busque en el directorio dnde ejecutamos java.)

reiniciamos el ordenador

Ahora abriendo una ventana en MS_DOS, en cualquier momento, veremos que javac

funciona desde todas las direcciones.

Instalacin de la ayuda de Java

Se abre j2sdk-1_3_1-doc.zip con Winzip, y se extrae en el directorio jdk1.3.1

Automticamente aparecer en jdk1.3.1 el subdirectorio /docs con la documentacin y

un ndice (fichero index.html)

Leccin 2: Instalacin JCreator

JCreator es un editor de Java desde el cual podemos, adems de editar el filename.java, tener un acceso cmodo a la ayuda y realizar la compilacin y ejecucin del programa.

Carpetas de inters:

JcreatorLE2.0 Little Editor Es simple y licencia gratuita

JcreatorPro2.0 Professional Es ms potente y tiene licencia gratuita para 30 das

Abre la carpeta JcreatorPro2.0 . Pulsando dos veces sobre Setup.exe se instala el editor. A continuacin se ejecuta el editor automticamente, apareciendo dos preguntas para saber cual es el Java Home y donde est la documentacin. Una vez introducida esta informacin podremos utilizar el editor JCreator desde cualquier carpeta, que nos permitir escribir el programa java, compilarlo y ejecutarlo.

Si en la instalacin no nos ha aparecido informacin sobre el Java Home o el directorio de la documentacin, habr que que darle estos datos manualmente a JCreator.

Al finalizar la instalacin nos aparece un icono JcreatorPro en el escritorio. Pulsando dos veces sobre l y se abrir el editor. Seleccionamos CONFIGURE->OPTIONS->jdkprofiles

Si ah aparece JDK version 1.3.1 es que est bien

Si no aparece seleccionamos NEW y en el Select path que me ofrece escojo el directorio C:\jdk1.3.1

En NEW tenemos dos pestaas, una para Classpath y otra de Documentacion. En la de documentacin hay que aadir C:\jdk1.3.1\docs

Una vez metida esta informacin siempre que ejecute JCreator funcionar. No habr que drsela cada vez.

Leccin 3: Primera aplicacin

1. Edicin, compilacin y ejecucin de un programa Java

1. Crear el fichero fuente filename.java. El fichero fuente contiene texto, escrito en Java, que tu y otros programadores podis entender. Se puede utilizar cualquier editor de texto para crear y editar los ficheros fuente. Por ejemplo en Windows se puede utilizar Notepad.exe (Bloc de Notas).

2. Compilar el fichero fuente en un fichero bytecode. El compilador toma el fichero fuente y convierte el texto en instrucciones que la Mquina Virtual Java (Java VM) puede entender.

> javac filename.javaSi el programa no tiene errores, volveremos a obtener el prompt. El fichero bytecode aparece en el directorio como filename.class

3. Ejecutar el programa contenido en el fichero bytecode. El intrprete Java instalado en tu ordenador lee las instrucciones en bytecode y las traduce de forma que el ordendador las entienda y pueda ejecutarlas (cdigo binario).

> java filename2. Las clases en Java

El lenguaje Java se construye en bloques que son clases. Las clases tienen a su vez variables ( tambin llamados campos o componentes) y mtodos, recordando a las clases de objetos reales.

Por ejemplo en una cmara de fotos podramos considerar como variables de estado:

variable encendido que puede tener el valor on o off

variable encendido del flash que puede ser on o off

variable de cargada o descargada on o off

variable de nmero de foto de 1 a 36

variable de niebla, etc

y como mtodos:

encender (la variable de encendido pasa de off a on)

apagar (la variable de encendido pasa de off a on)

disparar (slo funciona si la variable encencido est en on, la variable nmero de

foto se incrementa en uno)

rebobinar , etc

El software de Java se escribe a base de la creacin de clases, con sus variables y mtodos. Los objetos en Java no son ms que ejemplos (tambin llamados instancias o ejemplares) de las clases. Existen clases de las que no se pueden crear objetos, como por ejemplo la clase System que veremos ms adelante.

Toda aplicacin Java tiene que tener al menos una clase con un tipo de mtodo denominado mtodo main. Todas las acciones que se realizan en una aplicacin

se escriben en el mtodo main.

Un ejemplo de accin, una vez construida la clase CamaraFotografica, con sus variables y sus mtodos, sera la de construir una cmara concreta y en un estado concreto (por ejemplo, apagada y en nmero foto 4), encenderla, disparar tres veces y apagarla.

Se llaman constructores de una clase a los mtodos que permiten definir (instanciar) un objeto concreto de una clase.

La sintaxis de los constructores suele ser as: Clase miclase = new Clase()Cada clase se crea con sus constructores, que pueden ser ms de uno.

En el parntesis se incluyen los argumentos que usa el constructor, separados por comas. Pueden existir constructores que no usen ningn argumento.

En Java tendremos clases ya construidas y clases que construiremos nosotros.

3. Ejemplo 1: Estructura de un programa aplicacin en Java

class HolaMundo{

public static void main(String[] args){

System.out.println(Hola);}

}

En este ejemplo vemos la plantilla de una clase con mtodo main. Lo que podra variar se ha escrito en cursiva. Visto de otra forma, la plantilla de una clase que incluya mtodo main es:

class *****{

public static void main(String[] *****){

instruccin1;

instruccion2; }

}

El filename.java deber ser HolaMundo.java, pus la clase que lleva el mtodo main debe coincidir con el nombre del filename.java

Los nombres de las clases siempre se empiezan por maysculas (en azul dbil en JCreator)

String[] args son los argumentos de entrada. String[] args define (o declara o instancia) args como un objeto que es un array (lista) de cadenas de caracteres. El objeto es cadena de caracteres por la clase String y es array por el smbolo [].

Args[0] es el primer elemento de la lista, args[1] el segundo, y as sucesivamente. args es un objeto que se lee (o no se lee) en lnea de comandos .

System.out.println() es una forma tpica de escribir una lnea de salida por pantalla. Entre parntesis escribimos lo que queremos que se vea por pantalla.

System.out es el flujo de salida estndar. System es el nombre de una clase, out el de una variable o componente de la clase, que es la salida, y println() es un mtodo que acta sobre el componente de la clase.

Los mtodos son llamados en general con la sintaxis: nombreObjeto.mtodo, nombreObjeto.nombreComponente.mtodo, nombreClase.mtodo o nombreClase.nombreComponente.mtodo, segn acten sobre el propio objeto, sobre alguna de sus componentes o sobre la clase o alguna de sus componentes.

Ejecutando:

javac HolaMundo.java

java HolaMundo

veremos que por pantalla se escribe Hola4. Datos en la lnea de comandos

class HolaPersona{

public static void main(String[] args){

System.out.println(Hola + args[0]);}

}

javac HolaMundo.java

java HolaMundo Pedro

veremos que por pantalla escribe Hola PedroSi ejecutamos > Java HolaMundo el programa dar error en ejecucin, puesto que la aplicacin tiene que escribir por pantalla args[0] y no le hemos dado ningn argumento de entrada.

Si ejecutamos > Java HolaMundo Pedro Fernandez dar como salida por pantalla

Hola Pedro

Aunque ha recibido dos argumentos de entrada, slo tiene que escribir por pantalla el primero.

5. Como dar (no dar) la opcin de incluir argumentos de lnea de comando en JCreato?

Configure

Options

JDK Tools

Run Application

Seleccionar Default

Edit

Parameters

Activar (desactivar) la casilla de verificacin Prompt for main function arguments

6. Incluir comentarios en el programa

// una lnea

/* varias

lineas

*/

7. Ejemplo de construccin de objetos: objetos de la clase String

class Hola1{

public static void main(String[] args){

// construye una cadena vaca

String str=new String();

/* asigna contenido a la cadena. El contenido de una cadena siempre debe estar entre comillas dobles*/

str="Hola";

System.out.println(str);}

}

class Hola2{

public static void main(String[] args){

// construye una cadena y le asigna contenido

String str=new String(Hola);

System.out.println(str);}

}

class Hola3{

public static void main(String[] args){

/* String es una clase muy utilizada, por lo que el lenguaje

Java permite instanciarla sin

utilizar new ni constructor String(....) */

String str=Hola;

System.out.println(str);}

}

Leccin 4. Variables numricas. Operaciones aritmticas bsicas.

Variables de tipo numrico entero int

real float, doubleEl compilador asigna espacio de memoria para almacenar cada variable con arreglo a su tipo.

Todas las variables deben ser declaradas. No podemos escribir c=2; debemos hacerlo como:

float c=2; (declaracin y asignacin) o

float c; (declaracin)

c=2 (asignacin)

Siempre que sea posible, es conveniente declarar una variable y asignarle su valor inicial en un solo paso, ya que esta accin facilita la interpretacin del programa.

Las operaciones entre nmeros de dos tipos producen como resultados nmeros del tipo superior (el orden entre los anteriores es int < float < double). As

int a=2;

int b=3;

float c;

c=a/b;c es cociente de dos enteros y ser por tanto un entero. 2/3 valdr 0. Aunque c est declarada y almacenada cmo float el valor que le asigno es entero, porque a/b ser entero. En este caso se est haciendo internamente una conversin automtica de tipos, puesto que el entero 2/3=0 pasa a float como 0.0000000. Al pasar una variable numrica de un nivel inferior a superior nunca perdemos informacin, ni la ganamos, slo aadimos ceros.

Se puede realizar una conversin de tipos explcita mediante el operador cast o molde, cambiando la categora de un tipo de nivel inferior a superior. Si hacemos

c= (float)a / b;

c es el cociente entre el float a y el entero b, y el resultado ser float. c valdr 0.6666667

Los nmeros decimales se escriben como +-**.*** . Estos nmeros son considerados por Java como de tipo double, y deben declararse como double. Si queremos que un nmero decimal se considere como float, debemos escribirlo como +-**.****f

Haciendo float a1=2.4; obtendremos error en la compilacin, porque al nmero 2.40000000000000 se le estara haciendo pasar a 2.400000

Tambin dara error de compilacin esta serie de instrucciones:

double a1=2.4;

double a2=1.6;

float a3;

a3=a1/a2;

porque a1/a2 va a tener la precisin de double, y al convertirlo a float voy a perder la precisin que tena.

A continuacin vemos un ejemplo de programa con las operaciones aritmticas bsicas de suma, resta, multiplicacin y divisin.

public class Operaciones{

public static void main(String[] args){

int a=2;

int b=3;

int c1,c2,c3;

float c4;

double c5;

c1=a+b;

c2=a-b;

c3=a*b;

c4=((float)a)/b;

c5=((double)a)/b;

System.out.println("la suma es " + c1);

System.out.println("la resta es " + c2);

System.out.println("el producto es " + c3);

System.out.println("el cociente es " + c4);

System.out.println("el cociente es " + c5);

}

}

Leccin 5. La clase Number

Java permite utilizar los tipos simples int, float, double por razones de rendimiento, pero Java tiene la clase Number y subclases de sta como Integer, Float y Double, que son las clases de respectivamente nmeros enteros, nmeros reales con precisin sencilla, y nmeros reales con doble precisin.

Veremos un programa donde los nmeros son tratados como objetos de una clase. Recordemos como las strings o cadenas de caracteres slo existen en Java como objetos, y no como variables de tipo simple. Sin embargo, vimos tambin que la declaracin y asignacin puede realizarse similarmente a la que se realiza para las variables de tipo simple, sin necesidad de utilizar el operador new y el constructor . Esto es as por la misma razn de rendimiento: la clase String es muy utilizada y define un tipo de datos.

Para construir objetos de las clases Integer, Float, Double, etc, subclases de Number lo debemos hacer con el operador new y sus constructores.

class ClaseNumero{

public static void main(String[] args){

Integer i = new Integer(2);

Integer j = new Integer("33");

Double d1 = new Double(2.16);

Double d2 = new Double("-2.4316");

System.out.println(i + " "+ j );

System.out.println(d1 + " " + d2);

}

}

La clase Integer proporciona un mtodo muy utilizado para convertir una cadena en un nmero, que es el mtodo parseInt. Puede actuar sobre un objeto de la clase Integer o directamente sobre la clase. Podemos escribir el mtodo con uno o dos argumentos, el primero es una cadena de caracteres y el segundo un entero.

parseInt( cadena de caracteres, entero) o parseInt(cadena de caracteres)

int k1 = Integer.parseInt("101");

int k2 = Integer.parseInt("101",2);

System.out.println(k1 + " " + k2);

k1 vale 101 y k2 vale 5, que es el valor de 101 en base 2

Otro mtodo es el de devolverme el valor del nmero:

Integer i = new Integer(2);

int k1 = i.intValue();

double k2 = i.doubleValue();

k1 vale 2 y k2 vale 2.

Double x = new Double(2.15);

double y1= x.doubleValue();

int y2 =x.intValue();

y1 vale 2.15 e y2 vale 2

Leccin 6: El programa pide datos por pantalla

import java.io.*;

public class OperacionesTeclado{

public static void main(String[] args) throws IOException{

int a=0,b=0;

double c;

BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in));

System.out.print("a=?:");

a=Integer.parseInt(teclado.readLine());

System.out.print("b=?:");

b=Integer.parseInt(teclado.readLine());

c=(double)a/b;

System.out.println("el cociente es " + c);

}

}

InputStreamReader es una clase que se encarga de convertir bytes en caracteres (Input Stream Reader significa Lector del flujo de entrada). InputStreamReader(System.in) se encarga de convertir en caracteres los bytes ledos desde el teclado, ya que System.in es el teclado.

BufferedReader es una clase que produce un texto o palabra o cadena de caracteres (String) a partir de la secuencia de caracteres.

A mi lector de datos de entrada, que los convierte en texto, lo llamo teclado, y es

un objeto definido as:

BufferedReader teclado = new BufferedReader(new

InputStreamReader(System.in));

Siempre que tenga que meter datos utilizando el teclado tendr que incluir la

instruccin anterior. Puedo variar el nombre teclado, pero lo dems es fijo.

- Integer.parseInt(teclado.readLine()); convierte el texto ledo por

teclado hasta un retorno de carro, en un nmero entero.

import java.io.*; Para leer datos tenemos que importar todas las clases del paquete io (input-output) . Si no incluimos esta sentencia tendremos un error en compilacin.

throws IOException

Al leer datos por teclado estamos obligados a considerar el posible error por no disponibilidad del teclado. En efecto, si el teclado no est disponible la operacin de entrada readLine dara error. El manejo del error que se suele implementar en el cdigo consiste en enviar un mensaje por pantalla si el teclado no est disponible.

Por ahora no hemos estudiado el manejo de errores o Exceptions. Si no queremos tratar el posible error debemos incluir el operador throws IOException en el mtodo main. Se puede comprobar que quitando ese operador del cdigo el programa produce error en compilacin, avisndonos de la IOException.

Leccin 7: La clase Math

La clase java.lang.Math proporciona una serie de constantes y funciones de uso muy comn en expresiones aritmticas. En la tabla damos algunos ejemplos.

Math.E el nmero E

Math.Pi el valor de Pi

Math.abs() valor absoluto

Math.acos() arcocoseno de un ngulo en radianes

Math.asin() arcoseno

Math.atan() arcotangente

Math.cos() coseno

Math.sin() seno

Math.tan() tangente

Math.exp() e elevado al nmero

Math.log() logaritmo neperiano de un nmero

Math.pow(a,b) a elevado a b

Math.toDegrees convierte un ngulo de radianes a grados

Math.toRadians convierte un ngulo de grados a radianes

class Clasemath{

public static void main(String[] args){

double a=100;

double b=2;

double c=Math.PI/2;

double d=Math.PI/4;

double e=Math.toDegrees(d);

double raiz=Math.sqrt(a);

double log=Math.log(a);

double log10=Math.log(a)/Math.log(10);

double exp=Math.exp(a);

double elevar=Math.pow(a,b);

double coseno1=Math.cos(c);

double coseno2=Math.cos(d);

System.out.println(raiz);

System.out.println(log);

System.out.println(log10);

System.out.println(exp);

System.out.println(elevar);

System.out.println(coseno1);

System.out.println(coseno2);

System.out.println(e);

}

}

Leccin 8: Operadores relacionales

1. Operadores relacionales

En programacin son importantsimas no slo las variables numricas sino tambin las variables lgicas. En cuanto a variables numricas hemos estudiado las de tipos int, float y double.

Por ejemplo int a=2; declara a como variable de tipo entero y le asigna el valor 2.

Los operadores relacionales o de comparacin permiten comparar valores para determinar su igualdad, desigualdad u ordenacin, y el resultado de las expresiones en las que intervienen es de tipo lgico. Las expresiones lgicas slo pueden tomar dos valores: true o false

==igual1==2False

!=Distinto1!=2True

>Mayor que1>1False

=0.2True