Está en la página 1de 15

Conocemos Java, con un poco de historia previa y la visin general de las caractersticas actuales de la tecnologa. 1. Un Toque de Historia. 2.

Que es JAVA 2? 1. Un Toque de Historia: Java nace y da sus primeros pasos en 1991 formando parte de un proyecto de desarrollo de soporte software para electrnica de consumo ( frigorficos, lavadoras... ), llevado a cabo por un equipo de SUN llamado Green Team. Este primer enfoque le da a Java una de sus ms interesantes caractersticas: La portabilidad, dado que Java tenia que funcionar en numerosos tipos de CPUs, y por tanto se pens para ser independiente de la plataforma sobre la que funcione. Esta caracterstica es muy posiblemente la que ha permitido a Java convertirse actualmente en el lenguaje por excelencia para la creacin de aplicaciones en Internet. Este salto de Java para convertirse en un lenguaje de programacin para computadores se da definitivamente en 1995 cuando en la versin 2 del navegador web netscape se incluye un interprete para este lenguaje, produciendo de este modo una autntica revolucin en Internet. Con este nuevo enfoque Java sigue creciendo y saca su versin 1.1 en 1997 con muchas mejoras y adaptaciones, fruto de una revisin sustancial del lenguaje. Java 1.2 aparece a finales de 1998 y ms tarde se rebautizar como Java 2. Referencia: Tenemos un artculo que tambin comenta lo que es Java y ofrece algn otro dato de inters. 2. Que es JAVA 2? Sun describe a Java como "simple, orientado a objetos, distribuido, interpretado, robusto, seguro, de arquitectura neutra, portable, de altas prestaciones, multitarea y dinmico". Aparte de ser estas caractersticas la lgica lista de piropos que un padre siempre dara a uno de sus hijos mas aplicados, efectivamente describen bastante bien a Java. Java 2 es la tercera versin importante del lenguaje de programacin Java. Parte de la versin 1.1 sin introducirle cambios sustanciales, simplemente amplindolo. Java presenta muchas caractersticas que lo diferencian de lenguajes similares como C+ +, empezando por las posibilidades de ejecucin. Bsicamente un programa en Java puede ejecutarse como: Stand Alone: Aplicacin independiente. Applet: Una aplicacin especial que se ejecuta en el navegador del cliente. Servlet: Una aplicacin especial sin Interfaz que se ejecuta en servidor.

Por otro lado un desarrollo en Java nunca empieza desde cero. Java implementa consigo un gran nmero de clases, incluidas gratuitamente en su entorno de desarrollo, para realizar muy variadas tareas que permiten al desarrollador centrarse en las caractersticas ms inherentes a su proyecto. Sun distribuye gratuitamente desde su pgina web, el entorno de desarrollo Java llamado indistintamente con estas siglas: JDK, SDK o J2SE. Este paquete incluye como hemos dicho las clases incluidas ya en java, es decir el API de Java. Tambin incluye el compilador de Java y lo que permite a Java funcionar en nuestro ordenador: el JRE (Java Runtime Enviroment). El JRE incluye los elementos necesarios para hacer funcionar programas java en nuestro ordenador. Principalmente nos instala la Maquina Virtual de Java y los plugins necesarios para el/los navegador/es instalados en nuestro sistema. El JRE tambin se puede descargar independientemente del entorno de desarrollo, pues se distribuye en un paquete llamado J2RE. Y que es la Mquina Virtual de Java? Pues bien, como hemos comentado antes, Java est pensado para ser independiente de la arquitectura sobre la que funcione y la manera que tiene Java para conseguirlo es a travs de la emulacin de una mquina software sobre la que funcionan los programas compilados con Java. Es decir, un programa compilado con Java no tiene cdigo comprensible por ningn procesador, ese cdigo solo lo entiende la Mquina virtual de Java y lo traduce a cdigo que si pueda ser comprensible por el procesador sobre el que funciona y adems lo puede hacer funcionar sobre el sistema operativo sobre el que est instalada. Por tanto lo nico dependiente del Hardware es la mquina virtual, pues tiene que conocer lo que tiene por debajo para llevar a cabo la traduccin, pero los programas en java siempre pueden funcionar sobre una maquina virtual est donde est instalada.

. Introduccin: Java tiene como todos los lenguajes de programacin sus propias caractersticas para describir algoritmos, es decir sus propios fundamentos del lenguaje. Este manual no pretende ser una descripcin exhaustiva de todos los modos en que podemos "expresarnos" en este lenguaje, sino una base para poder ir creando nuestros pequeos programas. Creo que es mucho mas til empezar a programar puesto que se aprenden mejor estas cosas cuando tenemos que resolver algn problema durante nuestro trabajo. Para introducir simplemente destacar que Java tiene una sintaxis muy similar a la de C+ + por lo que los programadores que vengan desde este lenguaje se sentirn muy cmodos en l. 2. Comentarios: Hay tres tipos de comentarios en Java:

// Este es un comentario de una sola lnea /* Este es un comentario de una o ms lneas */ /** Este es un comentario de documentacin */ 3. Identificadores: Un identificador es un "nombre" que nos permite dirigirnos especficamente a una de las entidades propias del lenguaje, es decir, son los nombres que podemos ponerles a nuestros/as variables, mtodos, clases, interfaces y objetos. La nica restriccin en la formacin de identificadores es que tienen que comenzar por letra, subrayado o por el signo '$', pudindoles seguir despus letras o nmeros. Hay que tener en cuenta que en Java como en otros muchos lenguajes de programacin se distinguen las maysculas y las minsculas. Hay una serie de normas muy recomendables para crear identificadores en Java: En Java es habitual escribir todos los identificadores en minscula teniendo en cuenta las siguientes excepciones: 1. Si en un identificador queremos incluir un nombre compuesto se pone el primer nombre entero en minscula y el resto con la primera letra en mayscula y el resto en minscula. Por ejemplo: miNuevaVariable = 3; 2. Los identificadores de clases e interfaces siempre empiezan en mayscula siguiendo la anterior norma en caso de tratarse de un nombre compuesto. Por ejemplo: MiNuevaClase(); 3. Los nombres de variables finales ( las mas habitualmente llamadas "constantes") se escriben ntegramente en mayscula. Por ejemplo: "PI" Otra restriccin muy importante y evidente a la hora de elegir identificador por ejemplo para una variable es no coincidir con ciertas palabras restringidas que tiene el lenguaje, estas son: abstract continue for new switch boolean default goto null synchronized break do if package this byte double implements private threadsafe byvalue else import protected throw case extends instanceof public transient catch false int return true char final interface short try class finally long static void const float native super while

4. Tipos Primitivos:

Como tipos primitivos entendemos aquellos tipos de informacin mas usuales y bsicos. Son los habituales de otros lenguajes de programacin. Te describo algn dato a tener en cuenta en cada tipo. Boolean: No es un valor numrico, solo admite los valores true o false. Char: Usa el cdigo UNICODE y ocupa cada carcter 16 bits. Enteros: Difieren en las precisiones y pueden ser positivos o negativos. Byte: 1 byte. Short: 2 bytes. Int: 4 bytes. Long: 8 bytes. Reales en punto flotante: igual que los enteros tambin difieren en las precisiones y pueden ser positivos o negativos. Float: 4 bytes. Double: 8 bytes. 5. Variables: Ahora que tenemos las piezas necesarias ( identificadores y tipos ) podemos definir variables en Java. Una variable referenciar siempre a un tipo primitivo de Java o a cualquier otro objeto creado en nuestro programa. Veamos algunas declaraciones: Int a ; // declaracin de una variable 'a' //inicializada a 0 (valor por defecto). Int b = 8; // declaracin de una variable 'b' inicializada a 8. NombreClase referencia; // declaracin de una variable 'referencia' preparada //para llevar un objeto de la clase 'NombreClase'. NombreClase referencia2; // lo mismo que en la variable anterior. Referencia = new NombreClase; // se crea un nuevo objeto de la clase //'NombreClase',y es asignado a la variable //'Referencia' Referencia2 = referencia; // Ahora tambin 'referencia2' tiene el mismo // objeto a su cargo que 'referencia' Una vez tenemos un poco de idea de como declarar variables en Java, tenemos que tener en cuenta desde que sitios de nuestro programa podemos acceder a ellas, es lo que llamamos mbito de la variable. Bsicamente la norma es que la variable tiene validez dentro del bloque encerrado entre llaves donde ha sido declarada, ya sea dentro de una funcin o de por ejemplo una sentencia 'if'. Veamos un ejemplo con un pequeo programita en java. public class AmbitoVariables { public static void main(String[] args) { if (true) {

int y=5; } System.out.println(y); } } Si intentamos ejecutar este cdigo el compilador nos dar un error dicindonos que la variable y no est definida puesto que la hemos declarado en un bloque distinto de donde la pretendemos utilizar. Hay mas normas de mbito respecto a las variables miembro de una clase. Para acceder a ellas depende si en la clase est declarada como 'public' o como 'private'. Las variables declaradas en una clase como 'public' se acceden directamente a travs de 'NombreClase.nombreVariable'. En caso de una variable 'private' solo podemos utilizarla mediante los mtodos de esa clase. Por otro lado desde la declaracin de cualquier funcin propia de una clase podemos acceder a las variables internas de esa clase directamente. Ya incluir mas normas de mbito cuando veamos el concepto de herencia en siguientes capitulos de la programacin en Java. Este tutorial acaba con el siguiente punto en el que vemos los operadores.

Descripcin de las estructuras de programacin, de tipo bifurcacin o toma de decisiones, en Java. Se tratan de las mismas estructuras que pueden encontrarse en cualquier otro lenguaje, si sabes ya programar ten en cuenta que lo nico que necesitas aprender es la sintaxis y eso se consigue mucho mejor programando as que puedes pasar por alto este punto. Bifurcaciones: Permiten ejecutar cdigo en funcin de una expresin evaluada Bifurcaciones if: Tienen las siguientes posibilidades en su sintaxis: if (ExpresionBooleana){conjuntoDeSentencias} if (ExpresionBooleana) {conjuntoDeSentencias} else {conjuntoAlternativo} if (ExpresionBooleana) {conjuntoDeSentencias} else if {conjuntoAlternativo} else if {conjuntoAlternativo2} Ejemplos: if (i == 5){ System.out.println(" i vale 5 ");}

else {System.out.println("i no vale 5");} if (i == 5){ System.out.println(" i vale 5 ");} else if (i < 5){System.out.println("i es menor que 5");} else if (i > 5){System.out.println("i es mayor que 5");} Bifurcaciones switch Son las que permiten realizar varias acciones distintas dependiendo del estado de una variable. Switch (Expresion){ Case valor1: conjuntoDeSentencias; break; Case valor2: SentenciasAlternativas; break; Case valor3: SentenciasAlternativas2; break; Case valor4: SentenciasAlternativas3; break; } La sentencia 'break' detrs de cada opcin de case sirve para que no evalue el resto de opciones sino que se salga directamente del 'Switch', asi que dependiendo de lo que quieras hacer la pondrs o no. Ejemplos: switch (i) { case '1': System.out.println( "i contiene un 1"); case '2': System.out.println( "i contiene un 2"); case '3': System.out.println( "i contiene un 3"); } Los bucles se utilizan para ejecutar un conjunto de instrucciones varias veces basndose siempre en una condicin que decidir si se sigue repitiendo o no. Veamos los tipos que hay. Bucle While while (expresion) {sentencias} Las instrucciones dentro de las llaves se ejecutan mientras la expresin sea verdadera. i=5; while ( i > 0 ) {i --;} // las llaves aqu se podan haber omitido, puesto // que solo hay una sentencia. System.out.println("Ahora i vale 0");

Bucle For Es un bucle ms "fijo", permite ejecutar el conjunto de sentencias un numero determinado de veces fijado al principio del bucle y funciona por tanto como un contador. Su expresin general seria como la que sigue: for (inicializacin, expresionBooleana, incremento) {conjuntoDeSentencias;} for (int i= 0; i <10; i++){ System.out.println("el valor de i es: " + i); }

Este ejemplo nos mostrara por la pantalla diez lneas dicindonos el valor creciente de 'i' de cero a nueve. Bucle do while Es igual al bucle while anteriormente visto, solo que ahora se evala la expresin al final del bucle, por lo que ese conjunto de sentencias se ejecuta al menos una vez: i=5; do {i --;} // las llaves aqu se pueden omitir puesto while ( i > 0 ) // que solo hay una sentencia. Este ejemplo similar al anterior para el bucle while se diferencia en que ejecuta una vez mas las sentencias en su cuerpo puesto que comprueba la condicin posteriormente. Sentencias Break, Continue y Return Antes hemos hablado de la sentencia Break con las bifurcaciones switch. Pues bien, esta sentencia tiene un valor mas amplio. La sentencia break nos permite salirnos del bloque de sentencias (encerrado entre llaves) o el bucle que estamos ejecutando, sin ejecutar las sentencias que resten para el final o las restantes iteraciones del bucle. Por ejemplo: i=5; do{ i --; if (i == 3) break; } while ( i > 0 ) // En este ejemplo cuando i tenga el valor 3 // se abandonar el bucle. La sentencia Continue solo es vlida para bucles, sirve para no ejecutar las sentencias que restan para la finalizacin de una iteracin de ese bucle, continuando despus con las siguientes iteraciones del bucle. Por ejemplo: i=5; do{ if (i == 3) continue; i --; }while ( i > 0 ) // En este ejemplo cuando i tenga el valor 3

// se abandonar la iteracin y por tanto el // bucle no tendr fin puesto que no se // ejecutara la sentencia de decremento. Tanto la sentencia continue como break se pueden utilizar con etiquetas para poder discriminar los bucles que quieren afectar en caso de que se encuentren en un bucle anidado. Por ejemplo: Bucle1: for (int i=0; i<10; i++){ bucle2: for (int j=0; i<10; j++){ if (j==5) {break bucle2;} } } // cuando j llega a 5 el bucle2 deja de // ejecutarse hasta la siguiente iteracion // del bloque1 Por ltimo vemos la sentencia return. Esta sentencia nos permite finalizar tambin un conjunto de sentencias, con la peculiaridad esta vez de que tambin finaliza el mtodo o funcin que en el que se encuentre. En el caso de que queramos devolver un valor desde esa funcin o mtodo lo debemos poner a continuacin de return. Por ejemplo: void funcionEjemplo(){ int i=0; while (i < 100){ //esta absurda funcin nos devuelve i++; //al llamarla el valor 100 como has } //podido comprobar return i; } Bloque Try Catch Finally Se trata de unas sentencias de control relacionadas con el tratamiento de excepciones, no tiene nada que ver con las estructuras de control de bucle, vistas en este artculo, salvo porque es tambin una estructura de control. La comentamos a continuacin, aunque se ver con ejemplos ms adelante. El tratamiento de excepciones se utiliza para detectar errores cuando se ejecutan nuestros programas y tratarlos del modo que nosotros queramos. Los errores cazados por un sistema de tratamiento de excepciones no bloquean el programa y el manejo de excepciones nos permite hacer cosas cuando esos errores ocurren. Por ahora solo es bueno que sepas que existen, ya las veremos en otro momento. Trabajando con objetos y las partes de un programa tpico orientado a objetos y escrito en Java.

Vamos a intentar entender como funciona un programa en Java para poder empezar a programar nosotros posteriormente. Intentar tambin explicar algo sobre los conceptos bsicos de la Programacin orientada a objetos, mientras avanzamos. De todos modos os remito al artculo sobre este tema que ya tenemos publicado en nuestra pgina. Seguramente en un futuro ampliaremos los contenidos sobre programacin orientada a objetos dentro de nuestra web por la importancia que esta tiene. Vamos adelante. Estructura bsica de un programa en Java En Java, como en cualquier otro lenguaje orientado a objetos, abandonamos el modo de entender un programa que utilizbamos anteriormente para aproximarnos a un modo ms cercano a "la vida misma". Los programas ahora estarn divididos en clases. Una clase en si se puede entender como un programa independiente, tiene sus propios datos y tambin maneja esos datos "a su modo". La relacin con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases tal y como las hemos explicado anteriormente son "la clase mecnico" y la "clase panadero". Cada una de estas clases tiene sus propias herramientas y sus propias tareas, por ejemplo, el panadero tiene "harina" y una de sus tareas es "amasar", mientras que el mecnico tiene "bujas" y una de sus tareas es "limpiar bujas". Lo importante de todo esto es que cada uno hace muy bien su tarea pero no tiene sentido "llevar el coche a la panadera de la esquina" ni "pedir una baguette junto con un cambio de aceite". Unas pequeas clases que nos servirn en un futuro para implementar un ejercicio un poco ms complicado. Estas clases son la clase "ficha" y la clase "tablero" que nos servirn para implementar con el tiempo un juego de las "cuatro en raya". public class Fichas { String color; public Fichas(String c){color=c;} public String dameColor(){return(color);} } Esta va a ser la clase ficha. Vemosla un poco: Esta clase tiene una variable "color" que es un String. El tipo String no es un tipo primitivo en Java, es una clase que est dentro del API de Java, mas concretamente dentro del paquete "Java.lang" y que adems siempre se incluye por defecto en cada programa Java que hagamos. Por tanto, lo que estamos haciendo en la segunda lnea de nuestro programa es declarar un objeto sin valor de la clase String. La tercera y la cuarta lnea son dos mtodos de la clase "Fichas" que estamos definiendo. El primer mtodo es un constructor. Un constructor es un mtodo que se llama con la sentencia "new", es decir cuando alguien quiera crear un objeto y que nos define bajo que condiciones se crea ese objeto, ya lo entenders mejor. En este caso para que

alguien quiera crear una ficha tiene que pasar un objeto "String" como parmetro y obtendr a cambio un objeto de la clase "Fichas" del color que ha solicitado. El segundo mtodo nos devuelve un objeto "String" con el valor del color que tiene el objeto ficha en ese momento. public class Tablero { Fichas estadoTablero[][]; public Tablero(){estadoTablero=new Fichas [6][7];}; public boolean verSiLlena(int indice){ return(estadoTablero[7][indice]==null);}; } Bueno, esta segunda clase que estudiamos tiene tambin un objeto interno llamado "estadoTablero" que en este caso es un "array" cuyas posiciones son de la clase anteriormente declarada "Fichas". Tambin tenemos un "constructor" para el objeto "estadoTablero" que crea ese "array" con las dimensiones que queremos. Y en este caso hay una funcin que nos dice si la columna por la que nos interesamos con el parmetro de entrada "ndice" est llena. De estos dos ejemplos de clases an nos quedan algunos conceptos por aprender, como por ejemplo eso del "constructor". Lo veremos con detenimiento ms adelante. Vemos lo que son las clases, cmo crearlas y algunos detalles adicionales de su uso. En si, y como he comentado anteriormente en el Manual de Java, las clases marcan la estructura bsica de un programa tanto en Java como en la programacin orientada a objetos en general. Una clase es el producto de enfocar la programacin a los datos ms que a las funciones. Por tanto una clase es una coleccin de datos y adems para operar con ellos una serie de funciones propias de la clase. Veamos por ejemplo la clase "Fichas" definida anteriormente, su nico dato es "el color" y la nica operacin que permite es saber el color de la ficha en cualquier momento. Eso permite un acceso restrictivo a los datos segn la funcin de los mismos. En este caso la clase es as basndose en la vida misma: No creo que nadie haya cambiado el color de una ficha jugando a las "cuatro en raya" y en caso positivo no tendra muy buenas intenciones al hacerlo. Adems de este mtodo bsico de proteccin de los datos, Java permite algunos ms que vemos ahora mismo. Cuando declaramos una clase lo primero que ponemos es la cabecera: public class Fichas { (cuerpo de la clase) }

La primera palabra nos proporciona la posibilidad de dar permisos de accesos a nuestra clase, los permisos son los siguientes: "Public": Una clase "public" es accesible desde cualquier otra clase, no obstante para que esto suceda debe ser primero accesible el "package" de esa clase "public". Para que un "package" sea accesible debe de estar en el directorio que seala la variable "CLASSPATH" que definimos al instalar nuestro entorno Java y, claro est, tener permiso de lectura en ese directorio. "Package": Usar este identificador en la cabecera de la clase es opcional, pues es la opcin por defecto en java, es decir, si escribimos: class Fichas {(Cuerpo de la clase)} Es lo mismo que si escribimos: package class Fichas {(Cuerpo de la clase)} Las clases "package" ( que podemos entender como las que no son "public" ) son accesibles solo desde su propio package. Esto es relativo a la accesibilidad de las clases. Ms conceptos relativos a la accesibilidad hacen referencia a las variables internas de una clase que ya comentamos en un captulo anterior, y a sus mtodos. En cuanto al nombre de la clase consideraremos varias cosas. Debe de obedecer al convenio de nombres de Java y coincidir con el nombre del fichero ".java" en el que se guardar la clase. Lo normal es que cada clase vaya incluida en un nico fichero pero claro est, nos puede interesar por algn motivo meter varias clases en un nico fichero. En este caso solo puede haber una clase public que es la que dar el nombre a dicho fichero. En caso de que no hubiese una clase public el compilador entender que la clase "principal" de ese fichero es la que concuerda con el nombre del mismo, por lo que evidentemente dos clases con un mismo nombre no son permitidas en un mismo fichero. Por ltimo para explicar la estructura de una clase explicar los elementos habituales en la definicin de su cuerpo. Primero se suelen declarar, al menos, las variables internas de esa clase y posteriormente se definen los constructores y los mtodos que dispondr la clase. Lo entenderemos mejor ms adelante En la definicin de constructores y mtodos tenemos que tener en cuenta un nuevo concepto de la programacin orientada a objetos. La sobrecarga. La sobrecarga consiste en poder tener varios mtodos o constructores con el mismo nombre dentro de una misma clase y que no hagan las mismas cosas. Esto se consigue de una manera muy sencilla, se diferencian entre ellos mediante el nmero y tipo de parmetros que reciben. Veamos un ejemplo:

/*tenemos dos mtodos que pueden por ejemplo obtener el rea de una figura geomtrica en concreto, podran ser:*/ float obtenerAreaCirculo(Circulo ci){ /* ... */ } float obtenerAreaCuadrado(Cuadrado cu){ /* ... */ } /*en Java esto se puede abreviar teniendo dos mtodos sobrecargados, por ejemplo: */ float obtenerArea(Circulo ci){ /* ... */ } float obtenerArea(Cuadrado cu){ /* ... */ } /*A la hora de ejecutar el mtodo obtenerArea se utilizar el que corresponda al parmetro que se le pase por cabecera*/

"Una clase en movimiento". Podemos ver la relacin entre clase y objeto de este modo. Supongamos por ejemplo una clase llamada "Mamfero". Como en la "vida misma" tu te puedes encontrar por la calle con "Personas", "Perros", "Gatos" ... que evidentemente pertenecen a esa clase "Mamfero", pero no te vas a encontrar con un "Mamfero" a secas. Ms o menos esa es la relacin entre clase y objeto. Una clase es una especificacin de cmo debe ser un objeto para pertenecer a esa clase y por consiguiente un objeto es un ejemplar individual de una clase. Tomando como ejemplo nuestra clase "Fichas" vemos que todas las fichas tienen que tener un color como caracterstica que la defina. Es decir, nuestros objetos "ficha" sern fichas blancas, negras, etc. A la hora de "actuar" por tanto se har sobre un objeto en concreto. En un objeto se puede acceder a sus mtodos y a las variables miembro que tenga, siempre claro que sean ambos declarados en la clase como accesibles. La accesibilidad para mtodos y variables depende en primera instancia de la accesibilidad a la clase a la que pertenecen. Si la clase nos es accesible entonces depende en segunda instancia de estas normas:

Accesibilidad de variables y mtodos: depende de los siguientes modificadores de acceso que se ponen (o no) delante de la variable en su declaracin o del mtodo en su definicin. "public": Da accesibilidad completa a la variable, se puede ver desde la propia clase, dentro y fuera del mismo "package" y en cualquier "subclase" de la clase en la que se declara, ya est en el mismo o en distinto "package". "protected": Se puede acceder desde la propia clase, desde el mismo "package" y desde cualquier "subclase", pero no se puede ver desde una clase de otro "package". "private": Solo se puede acceder desde la propia clase. "package": Es la opcin por defecto (como si no se pone nada). Proporciona accesibilidad desde el propio "package" y por tanto lgicamente desde la propia clase y adems desde cualquier subclase que est dentro del mismo "package". Una vez tenemos claros las normas acerca de la accesibilidad en Java, veamos unos ejemplos de utilizacin de los objetos en Java. Java permite organizar las clases mediante agrupaciones o packages. Efectivamente vamos a necesitar organizar nuestras clases en algn momento porque nuestro desarrollo puede ir creciendo, y tener un cmulo de clases todas juntas en un directorio, sin ningn tipo de organizacin fsica ni lgica, no nos ayudar demasiado. Java nos permite con los "Packages" evitar esta situacin de un modo bastante elegante y ordenado. Un "Package" es bsicamente una agrupacin de clases, vemos por ejemplo que la versin 1.2 de Java incluye un total de 59 "Packages" para organizar todo su API. Cualquier grupo de clases se puede organizar dentro de un "package" pero evidentemente lo ms normal es que tus clases las organices por algn motivo. Las clases se suelen organizar segn la relacin entre ellas. Por ejemplo si tuvisemos un grupo de clases que permiten hacer una ordenacin de elementos en un array podramos organizarlas de este modo: Quicksort.class; // Clase para ordenar arrays con el mtodo quicksort Burbuja.class; // Clase para ordenar arrays con el mtodo de la burbuja Seleccion.class; // Clase para ordenar arrays con el mtodo de seleccin Insercion.class; // Clase para ordenar arrays con el mtodo de insercin directa /* Podemos englobar estas clases en un package puesto que todas estn relacionadas en su cometido. Crearemos por tanto el "package ordenaciones" para que podamos acceder a ellas de este modo: */ ordenacion.Quicksort.class; // Ejemplo acceso a quicksort en el package ordenacin

/* Igualmente podramos tener tambin clases para la bsqueda de un elemento en un array en tal caso repetiramos el proceso y por ejemplo tendramos el "package tratamientoArrays" de este modo: */ tratamientoArrays.ordenacion.Quicksort.class; // Ejemplo acceso a quicksort dentro del // package ordenacin que a su vez est // dentro del package tratamientoArrays. El uso de "Packages" no solo nos permite organizar nuestras clases, sino que nos permite diferenciar clases que siendo distintas tengan que tener el mismo nombre, es decir, ayuda a java con la resolucin de nombres. Tambin como hemos visto por encima anteriormente nos permite ciertas normas para controlar el acceso a clases. Veamos ahora como utilizar los "packages" para nuestras clases. Lo primero que tenemos que tener en cuenta es que todas las clases que van a pertenecer a un mismo "package" tienen que estar en un mismo directorio que debe coincidir en nombre con el nombre del "package". Vemos que por tanto el nombre completo de una clase de un "package" equivale a su ruta desde el directorio que tomemos de base para nuestras clases. El directorio de base para nuestras clases es el definido por la variable de entorno CLASSPATH que introducimos en el segundo capitulo de este manual. Veamos el ejemplo: tratamientoArrays.ordenacion.Quicksort.class /* Equivale al acceso a la clase que se encuentra en el directorio: $CLASSPATH/tratamientoArrays/ordenacion/Quicksort.class */ El convenio de nombres de Java establece tambin que los nombres de los "packages" empiecen por minsculas. En segundo lugar para utilizar los "packages" en nuestras clases tenemos que incluir al principio del fichero de la clase (antes de cualquier otra sentencia) la linea: Package nombreDelPackage; Por ltimo veamos la sentencia "import". "import" permite importar un "package" a nuestra clase Java. Esto nos permite acceder (en caso de que sean accesibles) sin usar todo el nombre del "package" a cualquier clase dentro de l. Vemoslo en el siguiente ejemplo: Import tratamientoArrays.ordenacin.*; //Importamos todas las clases //del "Package" de ordenacin de //arrays que tenamos organizado. /*tiramos lneas de cdigo en Java hasta que... */ Quicksort arrayQuick= new Quicksort(); //... En cualquier momento de nuestra clase // podemos hacer uso de la clase Quicksort sin

// utilizar toda la ruta del package. Hay que tener tambin en cuenta que importando un "package" no importamos todos sus "subpackages" sino solo todas las clases de ese "package". Tambin podemos simplemente importar solo una clase dentro de ese "package" poniendo en vez de un asterisco el nombre de la clase a importar. Para acabar con este punto quiero hacer un comentario acerca del API de Java. Ya os he dicho que las clases del API de Java estn organizadas en "packages" segn su funcin. Hay "packages" preparados para acometer las mas variadas tareas. Es ejercicio del lector informarse de que "packages" le interesan en su desarrollo y del funcionamiento de las clases incluidas en estos. Nosotros veremos ciertos "packages" de uso habitual durante el manual. Como ya os coment, en java no se empieza desde cero, tenemos un conjunto de clases que podemos incluir en nuestro programa sin necesidad de importar ningn "package". Esas clases son las que pertenecen al "package" Java.lang. este "package" incluye las clases bsicas de Java como por ejemplo la clase "Array" que utilizaremos muy habitualmente.

.... seguir subiendo material no dejen de visitar esta seccin ;)))))

También podría gustarte