guia de estudio java

Upload: jorge-diaz

Post on 13-Jul-2015

379 views

Category:

Documents


0 download

TRANSCRIPT

DEFINICIN E HISTORIA DE JAVA. Java surgi en 1991 cuando un grupo de ingenieros de Sun Microsystems trataron de disear un nuevo lenguaje de programacin destinado a electrodomsticos. La reducida potencia de clculo y memoria de los electrodomsticos llev a desarrollar un lenguaje sencillo capaz de generar cdigo de tamao muy reducido. Debido a la existencia de distintos tipos de CPUs y a los continuos cambios, era importante conseguir una herramienta independiente del tipo de CPU utilizada. Desarrollaron un cdigo neutro que no dependa del tipo de electrodomstico, el cual se ejecutaba sobre una mquina hipottica o virtual denominada Java Virtual Machine (JVM). Era la JVM quien interpretaba el cdigo neutro convirtindolo a cdigo particular de la CPU utilizada. Esto permita lo que luego se ha convertido en el principal lema del lenguaje: Write Once, Run Everywhere. A pesar de los esfuerzos realizados por sus creadores, ninguna empresa de electrodomsticos se interes por el nuevo lenguaje. Como lenguaje de programacin para computadores, Java se introdujo a finales de 1995. La clave fue la incorporacin de un intrprete Java en la versin 2.0 del programa Netscape Navigator, produciendo una verdadera revolucin en Internet. Java 1.1 apareci a principios de 1997, mejorando sustancialmente la primera versin del lenguaje. Java 1.2, ms tarde rebautizado como Java 2, naci a finales de 1998. Al programar en Java no se parte de cero. Cualquier aplicacin que se desarrolle cuelga (o se apoya, segn como se quiera ver) en un gran nmero de clases preexistentes. Algunas de ellas las ha podido hacer el propio usuario, otras pueden ser comerciales, pero siempre hay un nmero muy importante de clases que forman parte del propio lenguaje (el API o Application Programming Interface de Java). Java incorpora en el propio lenguaje muchos aspectos que en cualquier otro lenguaje son extensiones propiedad de empresas de software o fabricantes de ordenadores (threads, ejecucin remota, componentes, seguridad, acceso a bases de datos, etc.). Por eso muchos expertos opinan que Java es el lenguaje ideal para aprender la informtica moderna, porque incorpora todos estos conceptos de un modo estndar, mucho ms sencillo y claro que con las citadas extensiones de otros lenguajes. Esto es consecuencia de haber sido diseado ms recientemente y por un nico equipo. El principal objetivo del lenguaje Java es llegar a ser el nexo universal que conecte a los usuarios con la informacin, est sta situada en el ordenador local, en un servidor de Web, en una base de datos o en cualquier otro lugar. Java es un lenguaje muy completo (de hecho se est convirtiendo en un macro-lenguaje: Java 1.0 tena 12 packages; Java 1.1 tena 23 y Java 1.2 tiene 59). En cierta forma casi todo depende de casi todo. Por ello, conviene aprenderlo de modo iterativo: primero una visin muy general, que se va refinando en sucesivas iteraciones. Una forma de hacerlo es empezar con un ejemplo completo en el que ya aparecen algunas de las caractersticas ms importantes. La compaa Sun describe el lenguaje Java como simple, orientado a objetos, distribuido, interpretado, robusto, seguro, de arquitectura neutra, portable, de altas prestaciones, multitarea y dinmico. Adems de una serie de halagos por parte de Sun hacia su propia criatura, el hecho es que todo ello describe bastante bien el lenguaje Java, aunque en algunas de esas caractersticas el lenguaje sea todava bastante mejorable. Algunas de las anteriores ideas se irn explicando a lo largo de este manual. REQUISITOS PARA PROGRAMAR EN JAVA. A grandes rasgos, cualquier persona interesada en programar en Java, necesitar un editor de textos (como el bloc de notas de Windows o el vim de Linux), un compilador (que se incluye en el Java Developement Kit (o Software Developement Kit en versiones recientes). Este JDK o SDK incluye el archivo javac.exe quien realmente es el compilador. El JRE por su parte es el tiempo de ejecucin de Java (Java Runtime Environment) que no permite desarrollar aplicaciones en Java, sino ejecutarlas mediante el JavaVM (o mquina virtual de Java).

Sin embargo, diversas comunidades y empresas desarrolladoras de software han creado diversos entornos de desarrollo integrado (IDEs) que cuentan con herramientas intuitivas que ayudan a la depuracin y optimizacin del cdigo fuente as como diversas tareas como la generacin del producto final. En este curso, se utilizar el NetBeans. Pero antes de adentrarnos en el Netbeans es necesario conocer los fundamentos de Java. FUNDAMENTOS DE JAVA Un programa en Java presenta la estructura habitual en los lenguajes OOP (lenguajes orientados a objetos). As, tendremos una clase que contenga el programa principal. El fichero fuente tendr extensin .java, mientras que el compilado tendr extensin .class. Un fichero fuente puede contener ms de una clase, pero slo una puede ser de tipo public. Adems, el nombre de esa clase public deber coincidir con el nombre del fichero fuente. Por ejemplo, si en nuestro fichero .java declaramos public class MiClase, el nombre de ese fichero deber ser MiClase.java (respetando las maysculas pues, de lo contrario, Java interpretara que son nombres distintos). A no ser que nuestros programas sean demasiado simples, stos estarn constituidos por varias clases. Estas clases hacen referencia a una programacin modular, en la que podemos modificar nuestras clases de forma independiente, como si fueran subprogramas realizando una funcin especfica. La clase principal, aquella que se ejecuta prioritariamente y que da comienzo al programa, es la que contiene la funcin main(). Las clases, se agrupan en paquetes o packages (libreras o agrupaciones de clases) y por ello debemos indicar su ubicacin al principio de nuestro cdigo. Es decir, si queremos utilizar la clase ClaseA presente en el package "ClasesABC", debemos indicar al principio el paquete que contiene a ClaseA, en este caso, ClaseABC. Si no se especifica, Java utilizar el package por defecto, el directorio activo. Una clase es una agrupacin de datos (variables y campos) y funciones (mtodos) que operan sobre estos datos. Se les llama, respectivamente, variables miembro y mtodos o funciones miembro. En ellos se basa la programacin orientada a objetos, en la programacin de clases pues, cualquier programa, se construir a partir de un conjunto de clases. Una vez definida y declarada nuestra clase, podemos declarar elementos de modo similar a la creacin de variables (int, double...) Los elementos declarados en una clase se llaman objetos de la clase. package primero; /* Nombre del paquete (archivo que contiene mis clases */ import java.clase.* /* importa clases necesarias para el programa */ /* declaracin de la clase pblica main */ public class Main { /* declaracin de la funcin main() que es la primera en ejecutarse */ public static void main(String[] args) { /* Cdigo de su funcin main() */ } /* Fin de la funcin main() */ } /* Fin de la clase main() */

DECLARACIN DE VARIABLES Y CONSTANTES EN JAVA Para usar una variable en el programa se debe declarar. As, se reserva el espacio de memoria necesario para almacenar el valor requerido con un tipo de dato especfico. tipo identificador; tipo identificador1, identificador2, identificadorn; Los identificadores son los nombres que le daremos a las variables. As mismo, una variable no podr almacenar un valor que no sea del tipo del cual se declar. Ejemplos: int i; /* Variable de tipo entera */ double r; /* Variable de tipo doubl */ char c; /* Variable de tipo char */ int i,j,k,s; /* Declaraciones de varias variables en una lnea */ Los nombres de variables DEBEN comenzar con caracteres alfabticos (A-z) o con $ o _. Sin embargo, no pueden comenzar con dgitos. Sin embargo, despus de el primer carcter, se pueden utilizar dgitos. Los identificadores tampoco pueden coincidir con las palabras reservadas del lenguaje java, por ejemplo: do, abstract, continue, for,, new, switch, package. Java distingue entre maysculas y minsculas, asi que las siguientes variables son diferentes: int edad; int EDAD; Las variables se pueden inicializar cuando se declaran, por ejemplo: int edad=0; Las constantes hacen referencia a valores que no cambian durante la ejecucin del programa. final doubl PI=3.141692; La palabra clave final impide que el valor de la variable se modifique. Se siguen las mismas convenciones que se estudiaron para la declaracin de las variables. ESTRUCTURAS DE CONTROL EN JAVA Las estructuras de control de Java son similares a las de C. Tenemos las estructuras de control condicionales y repetitivas clsicas de la programacin estructurada. La estructura de control ms bsica es if/else, que tiene la siguiente forma: if (condicin) { sentencias; } else { sentencias; }

Mediante esta estructura condicional, podemos ejecutar un cdigo u otro dependiendo de si se cumple una condicin concreta. La segunda parte de la estructura (else) es opcional. Las siguientes lneas muestran un ejemplo de uso de la estructura if/else. if (vidas == 0) { terminar = true; } else { vidas--; }

En este ejemplo, si la variable vidas vale 0, la variable terminar tomar el valor true. En otro caso, se decrementa el valor de la variable vidas. La otra estructura condicional es switch, que permite un control condicional mltiple. Tiene el formato siguiente. switch (expresin) { case val1: sentencias; break; case val2: sentencias; break; case valN: sentencias; break; default: sentencias; break; } Dependiendo del valor que tome la expresin, se ejecutar un cdigo determinado por la palabra reservada case. Observa como al final de las sentencias se incluye la palabra reservada break, que hace que no se siga ejecutando el cdigo perteneciente al siguiente bloque. Si el valor de la expresin no coincide con ninguno de los bloques, se ejecuta el bloque default. Lo veremos mejor con un ejemplo. switch (posicion) { case 1: medalla = "oro"; break; case 2: medalla = "plata"; break; case 3: medalla = "bronce"; break; default: medalla = "sin medalla"; break; }

Las estructuras que hemos visto hasta ahora nos permiten tomar decisiones. Las siguientes que vamos a ver nos van a permitir realizar acciones repetitivas. Son los llamados bucles. El bucle ms sencillo es el bucle for.

for (inicializacin_contador ; control ; incremento) { sentencias; } Este bucle ejecuta el bloque de sentencias un nmero determinado de veces. for (i=1 ; i 0) { vueltas--; }

A la entrada del bucle, la variable vueltas tiene el valor 10. Mientras el valor de esta variable sea mayor que 0, se va a repetir el bloque de cdigo que contiene. En este caso, el bloque de cdigo se encarga de decrementar la variable vuelta, por lo que cuando su valor llegue a 0, no volver a ejecutarse. Lo que estamos haciendo es simular un bucle for que se ejecuta 10 veces. El bucle do/while funciona de forma similar al anterior, pero hace la comprobacin a la salida del bucle. do { sentencias; } while (condicin);

El siguiente ejemplo, es igual que el anterior. La diferencia entre ambos es que con el bucle do/while, el cdigo se ejecutar siempre al menos una vez, ya que la comprobacin se hace al final, mientras que con el bucle while, es posible que nunca se ejecute el cdigo interno si no se cumple la condicin. vueltas = 10; do { vueltas--; } while(vueltas > 0);

Veamos una ltima estructura propia de Java (no existe en C) y que nos permite ejecutar un cdigo de forma controlada. Concretamente nos permite tomar acciones especficas en caso de error de ejecucin en el cdigo. try { sentencias; } catch (excepcin) { sentencias; }

Si el cdigo incluido en el primer bloque de cdigo produce algn tipo de excepcin, se ejecutar el cdigo contenido en el segundo bloque de cdigo. Una excepcin es un tipo de error que Java es capaz de controlar por decirlo de una forma sencilla, realmente, una excepcin es un objeto de la clase Exception. Si por ejemplo, dentro del primer bloque de cdigo intentamos leer un archivo, y no se encuentra en la carpeta especificada, el mtodo encargado de abrir el archivo lanzar una excepcin del tipo IOException.

OPERADORES EN JAVA A. Operadores aritmticosEl lenguaje Java soporta varios operadores aritmticos para los nmeros enteros y en coma flotante. Se incluye + (suma), - (resta), * (multiplicacin), / (divisin), y % (mdulo, es decir, resto de una divisin entera). Por ejemplo:

sumaEste + aEste; //Suma los dos enteros divideEste % entreEste; //Calcula el resto de dividir 2 enteros Operador + * / % Uso op1 + op2 op1 - op2 op1 * op2 op1 / op2 op1 % op2 Descripcin Suma op1 y op2 Resta op2 de op1 Multiplica op1 por op2 Divide op1 por op2 Calcula el resto de dividir op1 entre op2

El tipo de los datos devueltos por una operacin aritmtica depende del tipo de sus operandos; si se suman dos enteros, se obtiene un entero como tipo devuelto con el valor de la suma de los dos enteros. Estos operadores se deben utilizar con operandos del mismo tipo, o si no realizar una conversin de tipos de uno de los dos operandos al tipo del otro. El lenguaje Java sobrecarga la definicin del operador + para incluir la concatenacin de cadenas. El siguiente ejemplo utiliza + para concatenar la cadena "Contados ", con el valor de la variable contador y la cadena " caracteres.":

System.out.print("Contados" + contador + "caracteres.");Esta operacin automticamente convierte el valor de contador a una cadena de caracteres.

Los operadores + y - tienen versiones unarias que realizan las siguientes operaciones:

Operador + -

Uso +op -op

Descripcin Convierte op a entero si es un byte, short o char Niega aritmticamente op

El operador - realiza una negacin del nmero en complemento A2, es decir, cambiando de valor todos sus bits y sumando 1 al resultado final:

42 -> 00101010 -42 -> 11010110Existen dos operadores aritmticos que funcionan como atajo de la combinacin de otros: ++ que incrementa su operando en 1, y -- que decrementa su operando en 1. Ambos operadores tienen una versin prefija, y otra posfija. La utilizacin la correcta es crtica en situaciones donde el valor de la sentencia es utilizado en mitad de un clculo ms complejo, por ejemplo para control de flujos:

Operador ++ ++ ---

Uso op++ ++op op---op

Descripcin Incrementa op en 1; se evala al valor anterior al incremento Incrementa op en 1; se evala al valor posterior al incremento Decrementa op en 1; se evala al valor anterior al incremento Decrementa op en 1; se evala al valor posterior al incremento

B. Operadores de comparacin y condicionalesUn operador de comparacin compara dos valores y determina la relacin existente entre ambos. Por ejemplo, el operador != devuelve verdadero (true) si los dos operandos son distintos. La siguiente tabla resume los operadores de comparacin de Java:

Operador Uso > op1 > op2 >= op1 >= op2 < op1 < op2