2 I NTRODUCCI ON Surgi en 1991. Como lenguaje de programacin en 1995. Al programar en JAVA no se parte de cero sino utiliza clases ya existentes. El JDK (Java Development Kit) es un conjunto de programas y libreras que permiten desarrollar, compilar y ejecutar programas en Java. Permite detener la ejecucin de un programa para ver el valor de las variables.
3 I NTRODUCCI ON Un package es una agrupacin de clases que tienen una finalidad relacionada. Existe una jerarqua de packages que se refleja en nombres compuestos separados por un punto. Es habitual nombrar los packages con letras minsculas y los nombres de clases deben empezar siempre con mayscula. 4 CONCEPTO DE CLASE Y HERENCI A Una clase es una agrupacin de datos (variables o campos) y de funciones (mtodos) que operan sobre esos datos. A estos datos y funciones pertenecientes a una clase se les denomina variables y mtodos o funciones miembro. La POO se basa en el programacin de clases. Un programa se construye a partir de un conjunto de clases 5 CLASE Y HERENCI A Una vez definida e implementada una clase, es posible declarar elementos de esta clase de modo similar a como se declaran las variables ( int, double, float, etc.). Los elementos declarados de una clase se denominan objetos de la clase. La clase es lo genrico, es el patrn o modelo para crear objetos. 6 CLASE Y HERENCI A Cada objeto tiene sus propias copias de las variables miembro , con sus propios valores Las clases pueden tener variables static que son propias de la clase y no de cada objeto. La HERENCI A permite que se pueda definir nuevas clases basadas en clases existentes. Una derivada de otra (extends) hereda todas sus variables y mtodos. 7 CLASE Y HERENCI A La clase derivada puede aadir variables y mtodos a los heredados. Todas las clases en Java son derivadas de la clase java.lang.Object, por lo que heredan todos los mtodos y variables de sta. Para indicar que una clase deriva de otra se utiliza la palabra extends: class CirculoGrafico extends Circulo 8 EJ EMPLO DE I NSTRUCCI ONES En los ejemplos: import java.util.Vector; import java.awt.*; Se importan clases de los packages de Java. En el primero a la clase Vector y en el segundo a todas las clases. En Java todas son clases ; no se puede definir una variable o una funcin que no pertenezca a una clase. 9 EJ EMPLO ..... class Ejemplo1 { public static main(String arg[ ]) Las clases son verdaderos tipos de datos o datos creados por el usuario. Un objeto es una variable concreta de una clase. La definicin de un programa siempre comienza con el mtodo main. 10 EJ EMPLO...... System.out.println(comienza el main); Imprime una cadena de caracteres en la salida estndar del sistema. Circulo c = new Circulo(2.0, 2.0, 4.0); Es equivalente a: Circulo c; c = new Circulo (2.0, 2.0, 4.0);
11 EJ EMPLO.... En esas instrucciones se crea una referencia llamada c a un objeto de la Clase Circulo. Crear una referencia es como crear un nombre vlido para referirse a un objeto de la clase. Con el operador new se crea un objeto propiamente dicho. 12 EJ EMPLO..... Los parmetros o argumentos que se incluyen a continuacin del nombre de la clase se le pasan al constructor de la clase y representan las coordenadas del centro y el radio. Debe tener en cuenta que una Clase es lo genrico, en este caso Crculos, y un objeto es algo en concreto, en este caso c es un circulo especifico. 13 EJ EMPLO.... La clase especifica que cada objeto necesita tres datos: dos coordenadas y un radio, que son las variables miembros de la clase. La sentencia: System.out.println(Radio = + c . r + unidades.); imprime un texto que contiene el valor del radio. 14 EJ EMPLO.... El operador + permite unir tres subcadenas y se le conoce como operador de concatenacin. Observe que el radio del objeto c aceza colocando el nombre del objeto con un punto y seguido por el nombre de la variable. 15 EJ EMPLO... La palabra public indica que puede ser utilizada por cualquier clase La palabra static indica que es un mtodo de clase, es decir, un mtodo que puede ser usado aunque no se haya creado ningn objeto de la clase. 16 NOMENCLATURA En Java es habitual utilizar nombre con minscula. Cuando un nombre consta de varias palabras es habitual poner una a continuacin de otra, poniendo con mayscula la primera letra de la siguiente palabra. Ej.. totalNotas. El nombre de las clases deben comenzar con maysculas. 17 NOMENCLATURA Los nombres de objetos, los nombres de mtodos y variables miembro, el de las variables locales comienzan siempre con minscula. 18 ESTRUCTURA GENERAL Un programa fuente tiene una extensin java (*.java). Los programas compilados son *.class. Un programa fuente puede tener mas de una clase pero solo una puede ser public. El nombre del archivo fuente debe coincidir con el de la clase public 19 ESTRUCTURA GENERAL Si en un archivo aparece la declaracin: public class MiClase {........} entonces el nombre del archivo debe ser MiClase. Java. Deben coincidir maysculas y minsculas. Las clase de java se agrupan en packages que son libreras de clases. Si la clase no se define como miembro de un package se utiliza el directorio activo. 20 VARI ABLES Es un nombre que contiene un valor que puede cambiar a lo largo del programa. Hay dos tipos principales de variables: Variables de tipos primitivos, estn definidas mediante un valor nico. Variables referencia, son referencias o nombres de una informacin mas compleja como un array u objeto de una determinada clase. 21 VARI ABLES Desde el punto de vista de su papel en el programa, las variables pueden ser: Variables miembro de una clase: se definen dentro de una clase, fuera de cualquier mtodo; pueden ser primitivos o de referencia. Variables locales: se definen dentro de un mtodo o dentro de cualquier bloque de instrucciones. 22 NOMBRE DE VARI ABLES Pueden ser cualquier conjunto de caracteres numricos o alfanumricos. No pueden incluirse como nombres las palabras reservadas del Java. Los tipos primitivos de variables aquellas variables sencillas que contienen los tipos de informacin mas habituales tales como valores booleanos, caracteres y de valores numricos enteros o flotantes. 23 TI POS PRI MI TI VOS DE VARI ABLES El Java dispone de 8 tipos: un tipo puede almacenar valores verdadero y falso; otro almacenar caracteres (char), y 6 tipos para guardar valores numricos. Cuatro tipos para enteros (byte, short, int, long). Dos para valores de punto flotante (float y double) 24 CARACTERI STI CAS DE LOS TI POS PRI MI TI VOS El tipo boolean no es un valor numrico (0-1) como en el C/C++, sino un valor true o false. El tipo char ocupa 2 bytes por carcter. Los tipos byte, short, int, long son nmeros enteros que pueden ser positivos y negativos. No existe el sin signo. Se utiliza la palabra void para indicar la ausencia de un tipo de variable determinado. 25 DEFI NI CI ON E I NI CI ALI ZACI ON DE VARI ABLES Se define especificando el tipo y el nombre. Las variables primitivas se inicializan a cero (salvo boolean y char, que se inicializan a false y \0). Las variables de tipo referencia son inicializadas por defecto a un valor null. Una referencia es una variable que indica donde se encuentra un objeto (lugar en la memoria del computador) 26 DEFI NI CI ON E I NI CI ALI ZACI ON DE VARI ABLES Si se desea que esta referencia apunte a un nuevo tipo de objeto es necesario utilizar el operador new, sino no se encuentra apuntando a ningn objeto asignandosele el valor null. Un tipo particular de referencia son los arrays o vectores ya sean de variables primitivas o de objetos. 27 EJ EMPLO DE DECLARACI ON E I NI CI ALI ZACI ON int x; // Declaracin de variable primitiva int y = 5; MyClass unaRef; // Referencia a un objeto MyClass; se inicializa a null. unaRef = new MyClass( );// La referencia apunta al nuevo objeto creado. MyClass segundaRef = unaRef;// Segunda referencia, se inicializa igual a unaRef. 28 EJ EMPLO DE DECLARACI ON E I NI CI ALI ZACI ON int [ ] vector;//Array inicializado a null. vector=new int[10];vector inicializado en 0 double [ ] v={1.0, 2.6, 3.1};// Declaracin e inicializacin vector de 3 elementos. MyClass [ ] lista = new MyClass[5]// Se crea vector de 5 referencias a objetos. Las 5 referencias inicializadas en null. 29 EJ EMPLO DE DECLARACI ON E I NI CI ALI ZACI ON lista[0] = unaRef; lista [1] = new MyClass; En el ejemplo las referencias unaRef, segundaRef y lista[0] actuarn sobre el mismo objeto. 30 AMBI TO DE UNA VARI ABLE En Java todas las variables deben estar incluidas en una clase. Todas las variables definidas dentro de un bloque son visibles y existen dentro de este bloque. Las variables definidas dentro de un if no son validas al finalizar las sentencias correspondientes a dicho if. 31 AMBI TO DE UNA VARI ABLE Las variables miembro de una Clase declarada como public son accesibles a travs de una referencia a un objeto de dicha clase utilizando un operador punto. Las variables miembro declaradas como private no son accesibles directamente desde otras clases. Las funciones miembro de una clase tienen acceso directo a todas las variables miembro de la clase. 32 AMBI TO DE UNA VARI ABLE Las funciones miembro de una clase B derivada de una clase A , tienen acceso a todas las variables miembro de A declaradas como public o protected, pero no las declaradas como private. Es posible declarar una variable dentro de un bloque con el mismo nombre que una variable miembro , pero no con el mismo nombre de otra variable local. 33 AMBI TO DE UNA VARI ABLE La variable declarada dentro de un bloque oculta a la variable miembro en ese bloque. Para acceder a la variable miembro oculta ser preciso utilizar el operador this. La forma de crear nuevos objetos es utilizando el operador new.
34 AMBI TO DE UNA VARI ABLE Cuando se utiliza el operador new, la variable de tipo referencia guarda la posicin de memoria donde esta almacenado este nuevo objeto. La eliminacin de los objetos la realiza el garbage collector, quien automticamente libera o borra la memoria ocupada por un objeto cuando no existe una referencia apuntando hacia dicho objeto. 35 OPERADORES Aritmticos: +, -, *, / , %. Asignacin: +=, -=, *=, /=, %= Unarios: +, - sirven para mantener o cambiar el signo de una variable, constante o expresin. El operador instanceof permite saber si un objeto pertenece a una determinada clase o no. Nombre_objeto instanceof nom_clase 36 OPERADORES El operador condicional ? Permite realizar bifurcaciones. expresin_booleana ? res1 : res2 z = (x > y) ? X+3 : x+5; Evala y devuelve res1 se el resultado es true y res2 si es false. El Java dispone del operador de incremento ++ y decremento --. 37 OPERADORES Existen los siguiente operadores relacionales: <, >, >=, <=, ==, !=. Existen los sgtes. Operadores lgicos: &&, | | , ! , & , | Si se considera solamente un & o | la evaluacin del segundo operando se realiza aunque la evaluacin del primer operando de respuesta negativa. 38 OPERADORES El operador + se utiliza para concatenar cadena de caracteres. System.out.println(El resultado asciende a + result + unidades); Todos los operadores excepto los de asignacin se evalan se izquierda a derecha.
39 SENTENCI A I F Las estructuras de control permiten tomar decisiones y realizar un proceso repetidas veces. Las bifurcaciones permiten ejecutar una entre varias acciones en funcin del valor de una expresin lgica o relacional. La bifurcacin if permite ejecutar un conjunto de sentencias en funcin del valor que tenga la condicin. 40 SENTENCI A I F if (expresin booleana) { ........................... sentencias; } else { ......................... sentencias; } 41 EJ EMPLO DE SENTENCI A I F int numero = 61; if (Math.abs(numero) < 10) Math.abs calcula el valor absoluto System.out.println(numero tiene un digito); else if (Math.abs(numero)<100) System.out.println(tiene dos digitos); else System.out.println(tiene mas de dos); 42 SENTENCI A SWI TCH Es una alternativa al if para mas de dos salidas. switch (expresin) { case value1: sentencia; break; case value2: sentencia; break; case value3: sentencia; break; default: sentencia; } 43 SENTENCI A SWI TCH No es posible establecer rango de condiciones, sino se debe comparar con valores concretos. En ausencia del break se ejecutan todas las condiciones que siguen hasta encontrar un break o termine el switch. 44 SENTENCI A SWI TCH char c = (char) (Math.random( ) * 26 +a); Generacin aleatoria de letras minsculas System.out.println (La letra + c); switch ( c ) { case a: case e: case i: case o: case u : System.out.println (es una vocal); break; } 45 BUCLE WHI LE El conjunto de sentencias se ejecuta mientras la condicin sea true(verdadera). while (condicin) { sentencia; } while (x>10) { P = Q+8; x= x-1; } 46 BUCLE FOR Es semejante al while, con la diferencia que el incremento o decremento de la variable de control se realiza automticamente. for (int i=1, j=i+10; i<5; i++, j=2*i) {System.out.println( i = + i + j = + j); } Salida: 1,11; 2,4; 3,6; 4,8 47 BUCLE DO WHI LE Es similar al bucle while pero con la particularidad de que el control est al final del bucle.. do { sentencia; ................ } while (condicin) 48 SENTENCI A BREAK Y CONTI NUE CON ETI QUETAS Las etiquetas permiten indicar un lugar donde continuar la ejecucin de un programa despus de un break o un continue. El nico lugar donde se pueden incluir etiquetas es justo delante de un bloque de instrucciones entre llaves (if, switch, while, do...while, for) y solo se deben utilizar cuando se tiene uno o mas bucles dentro de otro bucle y se desea salir o continuar 49 EJ EMPLO BREAK bucleI: for (int i=0, j=0; i<100; i++) { while (true) { if ((++j) >5) break bucleI; finaliza ambos bucles else break; } } finaliza bucle interno 50 CLASES EN J AVA La clases son el centro de la POO. Las clases pueden ser declaradas como pblicas (public) y como package (accesible slo para otras clases del package) Las variables miembro y los mtodos pueden ser public, private, protected, y package. Una clase puede derivar de otra y es ese caso hereda todas sus variables y mtodos. 51 CLASES EN J AVA Una clase derivada puede aadir nuevas variables y mtodos y/o redefinirlos. Los objetos de distintas clases pertenecientes a una misma jerarqua o que implementan una misma interface pueden tratarse de una forma general e individualizada, al mismo tiempo. Una clase es una agrupacin de datos y de funciones que operan sobre esos datos. 52 CLASES EN J AVA [public] class nombre { declaracin de variables y mtodos ............................. } La palabra public es opcional, si no se pone la clase solo es visible para las dems clases del package. Todos los mtodos y variables deben ser definidos dentro de las llaves de la clase. 53 CLASES EN J AVA Un objeto es un ejemplar concreto de la clase, las clases son como los tipos de variables. Todas las variables y funciones deben pertenecer a una clase. No hay variables y funciones globales. Si una clase deriva de otra (extends), hereda todas sus variables y mtodos. 54 CLASES EN J AVA Java tiene una jerarqua de clases estndar de la que pueden derivar las clases que crean los usuarios. Una clase solo puede heredar de una nica clase. Si no se indica de que clase deriva, por defecto la clase deriva de Object que es la base de toda la jerarqua de clases. 55 CLASES EN J AVA En un archivo se pueden definir varias clases, pero no puede haber mas que una clase public . Este archivo se debe llamar igual que la clase public con extensin java. Si una clase contenida en un archivo no es public puede tener otro nombre. Las clases se pueden agrupar en packages introduciendo al comienzo del archivo: package nombre_del_package 56 VARI ABLES MI EMBRO DE OBJ ETO Cada objeto tiene su propia copia de variables miembro. Las variables miembro de una clase, tambin llamadas campos pueden ser de tipos primitivo (boolean, int, long, etc.) u referencia a objetos de otra clase. No pueden existir datos sin inicializar. Las de tipo primitivo se actualizan automticamente. 57 VARI ABLES MI EMBRO DE OBJ ETO Tambin es posible hacerlo en la declaracin : long nDatos = 100; Las variables miembro se inicializan en el mismo orden en que aparecen en la codificacin de la clase si es que unas dependen de otras. Se puede aplicar un mtodo a un objeto poniendo el nombre del objeto y luego el nombre del mtodo separados por un punto 58 VARI ABLES MI EMBRO DE OBJ ETO Las variables miembro pueden ir precedidas en su declaracin por uno de los modificadores de acceso: public, private, protected, package.
59 VARI ABLES MI EMBRO DE CLASE Una clase puede tener variables propias de la clase y no de cada objeto A estas variables se le conocen con el nombre de variables de clase o static. Pueden usarse para definir constantes comunes para todos los objetos de la clase. Son parecidas a las variables globales en C++. 60 VARI ABLES MI EMBRO DE CLASE Las variables de clase se crean anteponiendo la palabra static a su declaracin. Para llamarlas se puede utilizar el nombre de la clase o del objeto antepuesto con un punto. Circulo.nCirculos Si no se les da valor en la declaracin, las variables miembro static se inicializan con los valores por defecto. 61 VARI ABLES DE TI PO FI NAL Una variable de tipo primitivo declarada como final no puede cambiar su valor a lo largo de la ejecucin. Puede ser considerada como una constante y equivale a la palabra const del C++. Pueden ser final tanto las variables miembro como las locales. 62 METODOS DE OBJ ETOS Son funciones definidas dentro de una clase Salvo los mtodos static o de clase, se aplican siempre a un objeto de la clase por medio del operador punto. public Circulo elMayor(Circulo c) { if (this . r>=c) return this else return c; 63 METODOS DE OBJ ETOS Al comienzo se debe definir el tipo del valor de retorno. Los mtodos tienen visibilidad directa de las variables miembro del objeto, es decir acceder a ellas sin calificarlas con un nombre de objeto o tambin mediante el operador this. El valor de retorno puede ser un valor de tipo primitivo o una referencia.. 64 METODOS DE OBJ ETOS Solo puede haber un valor de retorno que puede ser un objeto o un array. Se puede devolver un objeto de la misma clase o de una subclase. Los mtodos pueden definir variables locales que a diferencia de las variables miembro no se inicializan por defecto. Si se incluye la palabra native en la definicin permite incluir funcione escritas en otros lenguajes que se encuentran almacenadas en al librera DLL. 65 METODOS SOBRECARGADOS Al igual que el C++ permite usar mtodos distintos con el mismo nombre que se diferencian por el nmero y/o tipo de los argumentos. Si existe el mtodo cuyos argumentos se ajuste exactamente al tipo de los argumentos de la llamada, se llama a este. Si no existe uno que se ajuste exactamente, se intenta promover los argumentos de la llamada al tipo inmediato superior y se llama al mtodo que coincida. 66 PASO DE ARGUMENTOS Los argumentos de los tipos primitivos se pasan siempre por valor. Se puede pasar una referencia a un objeto y dentro de la funcin utilizar los mtodos de ese objeto. Dentro de un mtodo se pueden usar variables locales de los tipos primitivos o referencias, las cuales dejan de existir al termino de la ejecucin del mtodo. Los argumento ficticios de un mtodo tienen categora de variables locales del mtodo. 67 METODOS DE CLASE Son los mtodos que no actan sobre objetos concretos a travs del operador punto. Pueden recibir objetos de su clase como argumentos explcitos, pero no tienen argumento implcito ni pueden utilizar this. Los mtodos y variables de clase se crean anteponiendo la palabra static. Para llamarlos se utiliza el nombre de la clase: Math . sin (ngulo) 68 CONSTRUCTORES Es un mtodo que se llama automticamente cada vez que se crea un objeto de una clase. La principal funcin del constructor es reservar memoria e inicializar las variables miembro de la clase. Los constructores no tienen valor de retorno y su nombre es igual al de la clase. 69 CONSTRUCTORES Su argumento implcito es el objeto que se est creando. Una clase tiene varios constructores que se diferencian por el tipo y nmero de argumentos. Se llama constructor por defecto al que no tiene argumentos. El constructor de una subclase puede llamar al constructor de su superclase por medio de la palabra super. 70 CONSTRUCTORES De esta forma un constructor solo tiene que inicializar por si mismo las variables no heredadas. Si el programador no crea un constructor para una clase, el compilador crea uno por defecto. Los constructores pueden tener los modificadores de acceso public, private, etc 71 I NI CI ALI ZADORES STATI C Es un mtodo que se llama automticamente al crear la clase . Se diferencia del constructor en que no es llamado para cada objeto sino una vez para toda la clase. Los inicializadores static se crean dentro de la clase, como mtodos sin nombre y sin valor de retorno, con tan solo la palabra static y el cdigo entre llaves. 72 PACKAGES Es una agrupacin de clases. Para que una clase pase a formar parte de un package, por ejm. Llamado pkgName se tiene que codificar: package pkgName como primera sentencia del archivo. Los nombres de los packages se suelen escribir con minscula para distinguirlos de las clases. 73 PACKAGES Todas las clases que forman parte de un package deben estar en el mismo directorio. Se utilizan para agrupar clases relacionadas. La sentencia import permite abreviar el nombre de las clases, variables y mtodos, evitando el tener que escribir continuamente el nombre del package. Se importan por defecto el package java.lang y el package actual o por defecto. 74 LA CLASE OBJ ECT Es la raz de toda la jerarqua de clases, todas las clases derivan de ella. Una clase puede redefinir cualquiera de los mtodos heredados de su superclase. El nuevo mtodo sustituye al heredado. Los mtodos de la superclase que han sido redefinidos pueden ser accedidos por medio de la palabra super. 75 CLASES O METODOS ABSTRACTOS Una clase abstracta es aquella de la que no se pueden crear objetos. Su utilidad es permitir que otras clases deriven de ella. public abstract class Geometria Una clase abstract puede tener mtodos que no son abstract. Un mtodo abstract no puede ser static. 76 I NTERFACES Es un conjunto de declaraciones de mtodos (sin definicin) . Una clase puede implementar una o varias interfaces. public class CirculoGrafico extends Circulo implements Dibujable, Clonable Una interface se define de modo similar a una clase 77 I NTERFACES public interface Dibujable { public void setposicion(double x, double y); public void dibujar(Graphics dw); } Cada interface public debe ser definida en un fichero *.java con el mismo nombre de la interface. 78 I NTERFACES Solo permiten los modificadores public y package. Cuando una interface deriva de otra incluye todas sus constantes y declaraciones de mtodos. Las constantes definidas en una interface se pueden utilizar en cualquier clase precediendolas del nombre de la interface. 79 ARRAYS Se tratan como objetos de una clase definida. Son objetos pero con caractersticas propias Los arrays pueden ser asignados a objetos de la clase Object y los mtodos de Object pueden ser utilizados con arrays. Se crean con el operador new seguido del tipo y nmero de elementos. 80 ARRAYS Se puede acceder al nmero de elementos de un array con la variable miembro implcita length. Ejm: vect . Length Se accesa a los elementos con los corchetes y un ndice que varia de 0 a length-1. Se puede crear array de objetos de cualquier tipo. En principio un array de objetos es un array de referencias que hay que completar llamando al operador new. 81 ARRAYS Los elementos de un array se inicializan al valor por defecto del tipo correspondiente. Cero para valores numricos cadena vaca para string, false para booleano y null para referencias. Como todos los objetos, los arrays se pasan como argumentos a los mtodos por referencia. 82 ARRAYS Se pueden inicializar con los valores entre llaves, separados por comas. Tambin los arrays de objetos se pueden inicializar con varias llamadas a new dentro de unas llaves. Si se igualan dos referencias a un array no se copia el array, sino que se tiene un array con dos nombres, apuntando al mismo objeto. 83 ARRAYS Es posible dos formas para crear una referencia a un array: double[ ] x; //preferible double x [ ]; Creacin del array con el operador new x = new double [100]; La referencia y la creacin se pueden juntar double[ ] x = new double [100]; 84 EJ EMPLOS DE CREACI ON DE ARRAYS Crear un array de 10 enteros que se inicializan en cero. int v[ ] = new int[10]; Crear un array inicializando con valores: int v[ ] = (0,1,2,3,4,5,6,7,8,9); string dias[ ] = (lunes,martes,miercoles,jueves); 85 EJ EMPLOS DE CREACI ON DE ARRAYS Array de 5 objetos MiClase listaObj[ ] = new MiClase [5] for (i=0; i<5; i++) listaObj[i] = new MiClase (....); 86 ARRAYS BI DI MENCI ONALES Se crean de un modo muy similar al de C++ Puede crearse directamente de la forma: int [ ] [ ] mat = new int [3] [4]; Tambin se puede crear con los sgtes pasos int [ ] [ ] mat; mat = new int(nfilas)[ ]; for (i=0; i<nfilas; i++) mat [i] = new int(ncols); 87 EJ EMPLO DE ARRAYS BI DI MENCI ONALES Crear una matriz de 3 * 3 inicializada en 0: double mat [ ] [ ] = new double [3][3] Matriz con carga de valores: int [ ] [ ] b = ((1,2,3), (4,5,6), (7,8,9)); int c=new[3][] //array de referencia a array c[0]=new int[5]; c[1]=new in[4]; 88 CLASES STRI NG Y STRI NGBUFFER Estn orientadas a manejar cadenas de caracteres constantes (que no pueden cambiar), o que el programador ingrese la cadena de caracteres. Ambas clases pertenecen al package java.lang y por lo tanto no hay que importarlas. Los mtodos de string se pueden utilizar directamente sobre literales como por ejemplo hola.length; 89 METODOS DE LA CLASE STRI NG Los objetos de la clase string se pueden crear a partir de cadenas de caracteres definidas entre , como por ejemplo hola.java. La forma de crear objetos de la clase es la siguiente: String str1 = HOLA String str2 = new String (HOLA); 90 METODOS DE LA CLASE STRI NG El mtodo charAt(int) devuelve el carcter en la posicin especificada. El mtodo getChars(int,int, char[ ], int ) copia los caracteres indicados en la posicin indicada de un array de caracteres. indexOf (String,[int]) devuelve la posicin en la que aparece por primera vez un string en otro string , a partir de una posicin dada. 91 METODOS DE LA CLASE STRI NG lastI ndexOff(strig,[int]) devuelve la ltima vez un string aparece en otro empezando en una posicin y hacia el principio. lenght( ) devuelve el nmero de caracteres. replace(char,char) sustituye un carcter por otro en un string. startsWith(string) indica si un string comienza con otro string o no. 92 METODOS DE LA CLASE STRI NG substring(int,int) devuelve un string extrado de otro. toLowerCase( ) convierte en minsculas. toUpperCase( ) convierte en maysculas. trim( ) elimina los espacios en blanco. valueOf( ) devuelve la representacin como string de sus argumentos. 93 METODOS DE LA CLASE STRI NGBUFFER La clase stringBuffer se usa siempre que se desea modificar una cadena de caracteres. Hay muchos mtodos cuyos argumentos deben ser objetos string , que antes de pasar esos argumentos se debe realizar la conversin. stringBuffer( ), stringBuffer(int), stringBuffer(string) son constructores. 94 METODOS DE LA CLASE STRI NGBUFFER capacity( ) devuelve le espacio libre del stringBuffer. charAt(int) devuelve el carcter en la posicin especificada. getChars(int,int,char[ ] int) copia los caracteres indicados en la posicin indicada de un array de caracteres. insert(in, ) inserta un string o un valor en la posicin especificada 95 METODOS DE LA CLASE STRI NGBUFFER length( ) devuelve le nmero de caracteres de una cadena. reverse( ) cambia el orden de los caracteres. setCharAt(int,car) cambia el carcter en la posicin indicada. setLenght( int ) cambia el tamao de un stringBuffer. toString( ) convierte en objeto de tipo string 96 WRAPPERS Son clases diseadas para ser un complemento de los tipos primitivos. Los tipos primitivos se pasan como argumento a los mtodos por valor(ya que no son objetos), mientras que los objetos se pasan por referencia. No hay forma de modificar en un mtodo un argumento de tipo primitivo y que esa modificacin se trasmita al entorno que hizo la llamada. 97 WRAPPERS La forma de lograrlo es usando un wrapper Es un objeto cuya variable miembro es el tipo primitivo que se quiere modificar. Existe una clase wrapper para cada uno de los tipos primitivos numricos, esto es, existen las clases Byte, Short, Integer, Long, Float y Double. Observe que los nombres empiezan con mayscula siguiendo la nomenclatura del Java. 98 CLASE DOUBLE La clase java . lang . Double deriva de Number, que a su vez deriva de Object. Esta clase contiene un valor primitivo de tipo double. Los mtodos Double(double) y Double(String) son los constructores de esta clase. doubleValue( ), floatValue( ), intValue( ), shortValue( ) y byteValue( ) son los mtodos para obtener el valor del tipo primitivo. 99 CLASE DOUBLE String tostring( ), Double valueOf(String) son los conversores con la clase string. equals(Object) sirve para comparar con otro objeto. MAX_DOUBLE, MIN_DOUBLE, POSITIVE_INFINITY, NEGATIVE_INFINITY, TYPE son constantes predefinidas. 100 CLASE I NTEGER La clase java.lang.Integer tiene como variable miembro un valor del tipo int. Sus mtodos son los siguientes: Integer(int), Integer(String) son los constructores de la clase. doubleValue( ), floatValue( ), longValue( ), intValue( ), shortValue( ), y byteValue( ) son los conversores con otros tipos primitivos. 101 CLASE I NTEGER Integer decode(String), Integer parseInt (String), String toString( ), Integer ValueOf(String) son conversores con string. MAX_VALUE, MIN_VALUE, TYPE son constantes predefinidas. Los Wrappers Byte, Short y Long son similares a Integer Los Wrappers son utilizados para convertir cadenas de caracteres (texto) en nmeros. 102 CLASE I NTEGER Los ejemplos siguientes muestran algunas conversiones: String numDecimalString = 8.976; float numFloat = Float.valueOf(numDecimalString).floatValu e( ); double numDouble = Double.valueOf(numDecimalString).double Value( ); 103 CLASE I NTEGER String numIntString = 1001; int numInt= Integer.valueOf(numIntString).intValue( ); En el caso de que el texto no se pueda convertir directamente al tipo especificado se lanza una excepcin de tipo NumberFormatException, por ejemplo si se intenta convertir directamente el texto 4.897 en un entero. 104 CLASE MATH Java.lang.Math deriva de Object. Proporciona mtodos static para realizar las operaciones matemticas ms habituales. Proporciona adems las constantes E y PI. Sus mtodos son los siguientes: abs( ), acos( ), sin( ), tan( ), asin( ), exp(), atan( ), max( ), min( ), ramdom( ), round( ), power( , ) (devuelve el primer argumento elevado al segundo) 105 CLASE MATH rint(double) devuelve el entero mas prximo. sqrt( ) devuelve la raz cuadrada. IEEEremainder(double,double) calcula el resto. toDegrees(double) pasa de radianes a grados. toRadians( ) pasa de grados a radianes. 106 CLASE VECTOR Representa un array de objetos que puede crecer y reducir, segn el nmero de elementos. Permite acceder a los elementos con un ndice,aunque no permite el uso de corchetes. El mtodo capacity( ) devuelve le tamao del vector. 107 CLASE VECTOR El mtodo size( ) devuelve le nmero de elementos que realmente contiene, mientras que capacityIncrement es una variable que indica el salto que se dar en el tamao cuando se necesite crecer. El mtodo elementCount devuelve le nmero de componentes vlidos del vector. 108 METODOS DE LA CLASE VECTOR Vector( ), Vector(int), Vector(int,int) son constructores que crean un vector vaco, uno de la capacidad indicada y un vector de la capacidad e incremento indicados. 109 El ABSTRACT WI NDOWS TOOLKI N (AWT) Se encarga de construir interfaces grficas. Se utiliza en la creacin de eventos. Para construir una interface grfica se requiere lo siguiente; Un contenedor o container, que es la ventana donde se situarn los componentes (botones, barras de desplazamientos, etc) 110 El ABSTRACT WI NDOWS TOOLKI N (AWT) Los componentes: mens, botones de comandos, barras de desplazamiento, cajas y reas de texto, botones de opcin y seleccin, etc. El modelo de eventos. El usuario controla la aplicacin actuando sobre los componentes con el ratn o con el teclado. Cada vez que el usuario realice una determinada accin se produce un evento. 111 El ABSTRACT WI NDOWS TOOLKI N (AWT) El AWT crea un objeto de una determinada clase de evento, derivada de AWTEvent. Este evento es transmitido a un determinado mtodo para que lo gestione. 112 OBJ ETOS EVENT SOURCE Y EVENT LI STENER El modelo de eventos en Java est basado en que los objetos sobre los que se producen los eventos (event source) registran los objetos que habrn de gestionarlos (event listener), para lo cual los event listeners habrn de disponer de los mtodos adecuados. Estos mtodos se llamarn automticamente cuando se produzca el evento. 113 OBJ ETOS EVENT SOURCE Y EVENT LI STENER La forma de garantizar que los event listeners disponen de los mtodos apropiados para gestionar los eventos es obligarles a implementar una determinada interface listener.