You are on page 1of 30

Curso Bsico de Lenguaje Java

El Panorama de la Computacin de Alto Rendimiento El crecimiento de volumen de datos y la complejidad de los procesos actuales Segn Pfister, hay tres alternativas: *Trabajar ms arduamente *Trabajar de forma ms inteligente *Pedir ayuda En la ltima dcada, el avance y la popularidad de los recursos tecnolgicos. Motivacin: la alta disponibilidad y alto costo de las supercomputadoras Sin embargo, persisten importantes retos. La idea Computacionales de Grids

Resumen del curso Por qu Debo aprender Java? Objetivos vs Tiempo Java es difcil? Que ES a Java? Lenguaje para la creacin de software para el control remoto electrnico Lenguaje de programacin pequeo, fiable y porttil Lenguaje de programacin adecuado para Internet Lenguaje de programacin orientada a objetos Lenguaje de programacin en el formato de cliente-servidor Herramientas de Desarrollo: JDK / SDK 1.5 (Java 2) Net Beans JBuilder ECLIPSE JCreator LE (Freeware) SOFTWARE -Descargas J2SE (Java 2 Standard Edition) - www.java.sun.com/j2se/downloads/index.html J2SE v1.5 (72 Kb) Documentacin: La documentacin de J2SE V1.5 (45 Mb) JCreator - www.jcreator.com (2Mb) BlueJ - www.bluj.org (2,3 Mb) -Instalacin: Instale la documentacin en la raz del JDK Ruta (Path = ... C: \ J2SDK1.5 \ BIN) (! Archivo no encontrado) JCreator / BlueJ - Informar a las carpetas y documentos J2SDK -Variaciones Aplicaciones de escritorio (carcter y grfica) Aplicaciones Web: applets, servlets y JSP EJB -Conceptos orientados a objetos Motivacin: la fiabilidad, mantenibilidad, y la productividad Estrategias: encapsulacin y polimorfismo Herencia Clase y Encapsulamiento -Organizacion de las Clases en Java Jerarqua de la clase Los paquetes El rt.jar y la documentacin de la API

Ejemplo de programacin import java.lang.*; / / No hay necesidad de este paquete ya se ha importado de forma predeterminada class Ex1 extends Object / / No hay necesidad de ampliacin del objeto, es el valor predeterminado { public static void main(String args[]) { String frase = Esto Es Un ejemplo de Salida en la consola "; System.out.println(frase); } } / / Tabla de Aplicacin import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Ex2 { public static void main(String args[]) { JFrame Ex2 = new JFrame(); Font f = new Font("Arial",Font.BOLD,20); JLabel lab = new JLabel("Este es un programa con interfaz grfica de usuario "); Ex2.setTitle("Interfaz Grfica "); Ex2.setSize(400,200); Ex2.setFont(f); Ex2.getContentPane().add(lab); Ex2.setVisible(true); Ex2.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) {System.exit(0); }}); } } // Programa Applet import java.awt.*; import javax.swing.*; import java.applet.*; public class Ex2 extends Applet { Font f = new Font("Arial",Font.BOLD,20); JLabel l = new JLabel("Esto es un ejemplo de applet "); public void init() { l.setFont(f); add(l); } }

<! Archivo HTML para ejecutar el applet > <HTML> <BODY BGCOLOR="#FFFACD"> <CENTER> <APPLET code = "Ex2.class" width = "300" height = "100" > </APPLET> </CENTER> </BODY> </HTML>

Compilacion y Ejecucion: -El archivo de origen (. Java) deben tener el mismo nombre de clase en el programa si esta clase se describe como pblico. Por convencin de utilizar la primera letra del nombre de la clase en minsculas -Para cada clase declarada en el programa crear un archivo de clase (. Clase) y justo despus de la compilacin de estas clases puede contener un modificador pblica -Slo la clase que se ejecutar el mtodo principal ser necesariamente declararse como sigue: public static void main (String args []) -El procedimiento para generar y ejecutar una aplicacin Java es la siguiente: javac MeuProg.java (se producir si la clase tambin tienen este nombre en MeuProg.class) java MeuProg

Comentario y Documentacion: / / -> Forma de comentar una sola lnea / * Y * / -> Forma de comentar en varias lneas / ** Y * / -> forma de crear un bloque de comentarios para la documentacin con la utilidad javadoc. Etiquetas para la documentacin: @ version, autor @, @ param, @ return, @ see y la excepcin @ El autor etiquetas @ @ y la versin es slo para la descripcin de las clases y se tendr en cuenta a menos que utilice la versin de los autores y como parmetros para el javadoc / ** Esta clase muestra una cadena como un ejemplo @ Versin 1.0 Autor @ Marcos Esteves * / public class TesteDoc{ / ** Mtodo para mostrar una cadena @ Para el texto es el parmetro de la clase <b> String </ b> que se reciba @ Ver # main * / exibeString public void (String texto) { System.out.println (texto);} public static void main (String args []) { X = new TesteDoc TesteDoc (); x.exibeString ("Cadena de prueba");}} javadoc-autor-la versin TesteDoc.java Los literales numricos - Precedido de 0 = octal y 0 x = hexadecimal - Ejemplo: 0377 = 3778, 0x9876 = 987616 Boolean literales - verdadero y lo falso (no es igual a 0 y 1) Los literales de caracteres - representado por un solo carcter entre comillas simples o mediante el uso de una secuencia de escape Ejemplo: 'a', '\ \', '\ n', 'u0041 \', '1 ',' \ "' Literal de cadena - en realidad son clases que se comportan como un tipo bsico. Cotizaciones estn representados como cadenas Unicode y se escapa - Ej: "una lnea \ lneas nTwo \ tTabulao" Ejemplo: ("Doom II" c: \ juegos \ doom) - implica: "\" Doom II \ "c: \ \ juegos \ \ Doom" Tipos de Datos-Los tipos de datos en Java son portables a travs de plataformas de hijo e invariable por lo tanto, Tags: puede ser de cualquier tamao y el carcter, la limitacin viene desde el sistema operativo con los nombres de las clases y los archivos. Los tipos primitivos son: char (16), byte (8), corto (16), int (32), larga (64), float (32), dobles (64) y boolean (8) Los tipos primitivos cuando se utiliza como clase o variables de instancia se inicializan por defecto, ya que las variables locales se debe inicializar Ejemplo: int x = 10, y = 3.141592F float, double z = 1.35e +10, sexo char = 'M 'String text = "\ t \ lLa es \ n \ t \ t Por ejemplo," = vaca "", = en blanco "" Operadores Aritmtica = +, -, *, /,% - unario +, -, + +, Asignacin: + =, - =, * =, / = Lgico: &, && (AND), | | | (OR), ^ (XOR) (NO) Relacional: = (asignacin) == (comparacin) = (diferenciacin),>,> =, <, <= Ejemplo: (? X =, Y =) int x 7 = 20%, y = x / 2, y = x *, y = x + + + + z = x (Si (i <= 10) y (&&) (veterinario [i]. Equals ("Juan")) (X = 3) = (x == 3)! (if (i == 3) | (| |) (i == 5)) Argumentos que se pasan por el programa de linea:

Ejemplo: public static void Main (string [] args) { java MeuProg param1 param2 (args [0] = param1 y args [1] = param2) {clase MeuProg public static void main (String [] args) { System.out.println ("Nombre =" + args [0] + "\ nSobrenome =" + args [1]);}} java MeuProg Jos Carlos - Salida: Nombre Apellido = = Jos y Carlos (en diferentes lneas) La salida por defecto del dispositivo:

Ejemplo: System.out.println (cadena1 cadena2 + + ...) - La conversin a String es automtico, ya que la concatenacin (+) (implcita utilizando el mtodo toString () del objeto de la superclase) System.out.println ("A" +2 + "Tres" +4); Tipos de conversiones: Las conversiones permitidas para tipos primitivos van en sentido de menor a mayor: byte -> corto -> int -> largo -> float -> doble, y cualquier retroceso en este sentido implica el uso de emitidos. Ejemplo: double x = 9,997; int y = (int) x; Principales formas de tipos de conversin: de largo x = 10 -> int y = (int) x; float x = 10 -> y = largo (largo) x; String x = "10" -> Integer.paseInt int y = (x) String x = "20:54" -> Float.parseFloat float y = (x); String x = "20:54" -> doble Double.parseDouble = y (x); int x = 10 -> Cadena y = String.valueOf (x) float x = 10:35 -> Cadena y = String.valueOf (x) double x = 254,34 -> Cadena String.valueOf y = (x) Ejemplo: Convertir java 2 4 3 class Conversion { public static void main(String args[]) { double nota1, nota2, nota3, media; nota1=Double.parseDouble(args[0]); nota2=Double.parseDouble(args[1]); nota3=Double.parseDouble(args[2]); media=(nota1+nota2+nota3)/3; System.out.println("El promedio es: "+media); // Salida = El promedio es de: 3.0 } }

Constantes: En Java las constantes pueden ser declaradas para toda la clase y por esta razn se le llama una clase constante. El final indica la presencia de una constante. Ejemplo: class UsandoConstantes { public static final doble de g = 32 / / definicin debe llegar antes que el mtodo public static void main (String [] args) {System.out.println (g + "metros por segundo al cuadrado"); } } Comandos condicionales: . Si ... otra cosa: a)las condiciones siempre debe estar entre parntesis b) Si slo hay una declaracin sern claves innecesarias . Ejemplo: if (valor == 0 | | valor == 1) factorial = 1; ms {Factorial * = valor; valor -;} . Operador de El condicional o ternario: Devuelve un valor cuando en realidad es una expresin . Ejemplo: int = maiorvalor x> y? x: y (equivalente a if (x> y) = x maiorvalor; maiorvalor otra = y; . Cambiar la estructura de los casos: una variable de prueba y los valores slo pueden ser simples tipos primitivos byte, short, int y char . Por ejemplo: switch (operador) { caso de '+': a + = 5; break; case '-': A - 5 = salto; '*' caso: a * = 5; break; caso de '/': un / 5 = break; default: System.out.println ("operador desconocido");}

Repeticin de estructuras: . El bucle (inicializacin, prueba de incremento) a) todos los argumentos son opcionales b) incrementos Es posible hacer que el flotador . Ejemplo: for (double x = 5, x <= 10 x + = 0.5) {... } for (int = parte de valor;> parte 1 ;) el factorial * = -; El lazo while (condicin) {sentencias} y al mismo tiempo (condicin) a) Es soportes necesarios para la condicin y si slo hay una instruccin no requiere claves b) while (condicin) Pruebas 1 y luego realiza do {sentencias} while (condicin) primero se ejecuta despus de las pruebas Ejemplo: while (i <10) {el System.out.println (i + "") {System.out.println (i + ""); i + +;} i + +;} while (i <10); Prctica: Haga una lista de ejercicios N 1

Use el teclado para la entrada de datos mediante secuencias (JDK 1.4)

import java.io. *; -. Los informes que se van a importar paquetes (conjunto de clases) io, con todas sus clases ms all del java.lang* paquete por defecto InputStreamReader obj1 = new InputStreamReader (System.in) - Crea un objeto (obj1) flujo de datos para recibir la entrada estndar (System.in) un conjunto de bytes y las convierte en caracteres Obj2 = new BufferedReader BufferedReader (obj1) - Crea un buffer del flujo de entrada de caracteres para que los guarde. Esto evita las lecturas sucesivas de bytes y las conversiones de caracteres (que acta como una cach). obj2.readLine () - Mtodo de la clase BufferedReader para leer una lnea de texto y devolver un objeto String con el contenido de la lnea. try {...} catch (Exception tipo) {...}: Instrucciones para el control de los posibles errores durante la ejecucin del programa de getMessage () - Mtodo de la clase de excepciones para capturar una serie de excepciones printStackTrace () - Mtodo de la clase Exception que muestra el tipo de excepcin generada y dnde ocurri en el programa salida (1) - Mtodo en el sistema de clases que se detiene la ejecucin de la JVM y el valor es un indicador de una anomala Ejemplo: import java.io.*; class Dobro {public static void main ( String args[] ) { InputStreamReader entrada = new InputStreamReader(System.in); BufferedReader br = new BufferedReader (entrada ); String valorstr; int valornum; System.out.println(Introduce un nmero entero: ); try { valorstr = br.readLine(); valornum = Integer.parseInt(valorstr); System.out.println(El doble + valorstr + y: + (valornum * 2)); } catch (Exception e) { System.out.println( Error : +e.getMessage()); e.printStackTrace(); System.exit(1); } } }

*Excepciones Java: Java es la forma de ESCRIBIR programas robustos (que pueden manejar los posibles errores sin necesidad de abortar).

-Capturar o declarar la posibilidad de una excepcin (aumentar excepcin)? Tratar: Proteger el cdigo del mtodo que contiene posibles errores y tratar usando try-catch {...} Ascensor: la clusula throws a revelar su mtodo, o un informe que utiliza mtodos que pueden generar errores, o que l mismo plantea las excepciones no controladas dentro de su mtodo. -try {...} catch (Exception) {...} - Despus de la clusula try, las lneas entre los bloques {...} se desviar para ejecutar la clusula de captura predefinidos o genricos (Exception e). Cuando ocurre un error se genera una excepcin que puede ser tratada. El tipo de excepcin generada depende de la clase y el mtodo que est utilizando y el rango de los errores de entrada y de salida de error de formato Por ejemplo: try {} conjunto de instrucciones catch (nombre de la excepcin) {el tratamiento de este tipo de error} catch (nombre de la excepcin) {el tratamiento de este tipo de error ...} -Por ltimo - Opcional, pero debe tratar de ser todo menos una captura, a menos que usted lo usa, finalmente. Se compone de un conjunto de cdigo que se ejecuta siempre, independientemente de si o no el error. Normalmente se utiliza para liberar los recursos o el tratamiento de errores desconocidos. -El uso de throw (s): La instruccin que se utiliza para declarar una excepcin particular puede ocurrir en un mtodo y tambin se utiliza para desencadenar una excepcin en un mtodo.

Ejemplo: import java.io. *; {clase ExemploException public static void main (String args []) { int lmite; nota doble, la suma promedio = 0; InputStreamReader entrada = new InputStreamReader (System.in); BufferedReader br = new BufferedReader (entrada); tratar de { System.out.print ("\ nlntroduzca el nmero de notas:"); lmite = Integer.parseInt (br.readLine ()); for (int i = 1, i <= lmite; i + +) { System.out.print ("\ nlntroduzca una nota:"); nota = Double.parseDouble (br.readLine ()); if (cuenta <0 | | grado> 10) throw new Exception ("El valor de la nota <0 o> 10"); suma + = grado; } media = suma / lmite; System.out.print ("\ nEl promedio es:" + promedio); System.out.println (); } catch (NumberFormatException e) { System.out.println ("Valor no vlido introducido"); } catch (Exception e) { System.out.println ("Error en la entrada!"); System.exit (0); } catch (Exception e) { System.out.println (e.getMessage ()); System.exit (0); } }

Uso del teclado para entrada de datos usando la classe Scanner (JDK 1.5)
Classe Scanner Se utiliza para leer los datos ms fcil. Esta clase est disponible en la versin 1.5 del JDK y pertenece al paquete java.util. Ejemplo: import java.util.Scanner; Scanner in = new Scanner (System.in); System.out.println ("Escriba su nombre:"); String Nombre = in.nextLine(); / / se utiliz nextLine () como el nombre puede contener espacios en blanco Para ver algo especfico delimitada por Blanco: String FirstName = in.next(); / / empezar a leer el primer carcter que no sea el espacio y termina / / igual que el primer espacio

Para leer los datos numricos: int edad = in.nextInt(); Double salario = in.nextDouble(); Los mtodos nextInt () y nextDouble () gatillo excepciones si los datos no se pueden convertir a su tipo correspondiente. Para evitar esto, hay mtodos hasNextInt () y hasNextDouble () que devuelve true si la secuencia siguiente es vlida. Nota: Siempre que tengas un poco de lectura antes de nextLine (), ya sea con nextInt, nextDouble o el prximo, con un nextLine lectura (). Scanner in = new Scanner(System.in); System.out.println ("Introduzca la edad:"); edad = in.nextInt(); in.nextLine () / / Si esta lnea no se coloca la siguiente lectura se omitir System.out.println ("Introduzca el nombre:"); Nombre = in.nextLine(); Funciones Matemticas: Estas funciones se derivan de los mtodos de Java de la clase de matemticas de la java.lang paquete por defecto definida como esttica. . Sintaxis: Matemticas name> Metodo> (lista> Argumentos>) - Tiene dos constantes PI y E. Mtodo ceil (<valor double>): Calcula el valor entero inmediatamente devolver un doble doble. Ejemplo: Math.ceil (5,2), volvi 6,0 Piso de Mtodo (<valor double>): Calcula el nmero entero antes de devolver un valor doble para un doble. Ejemplo: Math.floor (5,9) devuelve 5,0 Max (Mtodo <valor1>, <valor2>): Calcula el ms grande entre <valor2> <valor1> y devolver el mayor tipo que se encuentra. Ex-Math.max (10,3.5) -> 10,0 Mtodo min (<valor1>, <valor2>): Calcula la ms pequea entre <valor2> <valor1> y devolviendo el tipo ms pequeo encontrado. Ex Math.min (10,3.5) -> 3,5 Mtodo sqrt (<valor1 double>): Calcula la raz cuadrada de <valor1> devolver un doble. Ejemplo: Math.sqrt (900) -> 30,0 (negativo = NaN) Mtodo pow (<base>, <pot>): Calcula la <pot> <base> el poder mediante la devolucin de un doble. Ejemplo: Math.pow (25,0.5) -> 5,0 Todo el mtodo (<valor double>): Calcula el redondeo de devolver un valor a largo. Ex Math.round (30,5) -> 31 Ejemplo: random (): Devuelve un valor aleatorio doble entre [0,0 y 1,0 [ Por ejemplo, para regalar un punto entre 0 y 99 -> (int) (Math.random () * 100)

Funciones de String En Java, de cadena es una clase que tiene mtodos para la manipulacin y puede ser utilizado como una variable. Sintaxis:. (En) String s = "El lenguaje Java", (uso) s <mtodo> (argumento / s) "Los literales de cadena debe ir entre comillas." Mtodo length (): Devuelve un entero equivalente a la longitud de la cadena. Por ejemplo, int longitud = s.length (); (Tamao = 14) Mtodo charAt (<> ndice): Devuelve un carcter que corresponde a la posicin relativa [0 ... (n-1)] del carcter de la cadena. Ex s.charAt char c = (5) (c = 'a') Mtodos toUpperCase () y toLowerCase (): Estos mtodos de convertir los caracteres de una cadena a maysculas y

minsculas, respectivamente, devuelve una cadena. Ex s.toUpperCase String x = () (x = "LENGUAJE JAVA") s.toLowerCase String x = () (x = "java lenguaje") Mtodo substring (<index1>,] <ndice2> [): Devuelve una cadena con los caracteres de <index1> arriba] <ndice2> [. Si <ndice2> no se especifica, ser hasta el final de la cadena. Cadena s.substring Ex x = (0,9), (x = "Idioma") Mtodo de ajuste () Elimina todos los espacios antes y despus de la cadena que devuelve un String. String x = "Espacios"; x.trim x = (), (x = "Espacios") Sustituir el mtodo (<char1>, <char2>): Reemplazar todas las apariciones del <char1> <char2> cadena devolviendo un String. Si no hay ninguna ocurrencia de <char1> se encuentra, la cadena original se devuelve. Ex cadena s.replace x = ('a',''), (x = "Lingu joya v J") Mtodo valueOf (<nomevar>): Convierte varios tipos de datos en una cadena. Por ejemplo, String x = String.valueOf (45.74), (x = "45.74") Formato de Salida: Cuando se imprime un nmero en la consola, el valor por defecto es usar el nmero mximo de dgitos distintos de cero del tipo en cuestin. Ejemplo: x = 10000 / 3,0; System.out.println (x) = aparece 3333,3333333333335 Dar formato con la clase del paquete NumberFormat java.text (JDK 1.4)

Los valores numricos: NumberFormat.getNumberInstance (); Los valores monetarios: NumberFormat.getCurrencyInstance (); Valores porcentuales: NumberFormat.getPercentInstance (); Cada uno de estos mtodos tiene un formateador que es una instancia de la clase NumberFormat para la ubicacin predeterminada. Entonces se utiliza el mtodo del formato () de esta clase para obtener una cadena con formato igual al nmero. Ejemplo: NumberFormat nf = NumberFormat.getNumberInstance (); System.out.println ("Nmero de formato:" + nf.format (x)); nmero con formato: 3333,333 Para ajustar el tamao utilizando los mtodos setMaximumIntegerDigits () setMinimumIntegerDigits () setMaximumFractionDigits () setMinimumFractionDigits (). Ejemplo: nf.setMaximumFractionDigits (2); nf.setMaximumIntegerDigits (2); System.out.println ("Nmero de formato:" + nf.format (x)) 33,33 Cambiar la configuracin regional predeterminada: Locale.xxxxxx donde xxxxxx es el objeto que contiene informacin sobre la ubicacin. Ejemplo: NumberFormat nf = NumberFormat.getNumberInstance (Locale.GERMANY); Formato de salida con la clase DecimalFormat (string_formatacao) Ejemplo: (. # # # # # #) DecimalFormat gl = new DecimalFormat; System.out.println ("Nmero de formato:" + df.format (x)); 3.333,33 Formato Con printf: La versin 1.5 del JDK trajo de vuelta el formato de printf que permite a los campos. El formato es tal que cada uno de los especificadores de formato que empiezan con el carcter% se sustituye por el argumento correspondiente. La conversin de caracteres que termina el especificador de formato (%) indica el tipo se est dando formato. Ejemplo: System.out.println (". Hola,% s El prximo ao ser el Sr.% d aos de edad", nombre, edad); double x = 10000.0 / 3,0; System.out.println (x) / / Muestra 3333.33333333333335 System.out.println ("% 8.2f", x) / / Muestra 3333.33 Convertidores principales para printf d -> Entero decimal Ejemplo: 159 f -> Ex de punto flotante: 15,9 s -> Cadena por ejemplo, "Hola" c -> caracteres Ejemplo: 'H' b -> Ex lgico: true tx -> Fecha y hora (donde x representa lo que usted desea que la fecha y / o tiempo) Ejemplo: TD -> Formato de fecha en los EE.UU. (mes, da, ao) - 03/20/2006 TY -> Los dos ltimos dgitos del ao - 06 tm -> Mes de dos dgitos (con ceros a la izquierda) - 03 td -> Da con dos dgitos (con ceros a la izquierda) 20

Como definir ls Clases Una clase en Java siempre se define con la palabra en la clase en minsculas y el nombre de la clase con la primera letra en mayscula. A continuacin, por lo general miembros de la clase descrita, es decir, los elementos que definen la clase. Ejemplo: Fecha de la clase { int da / / Las primitivas de asignar espacio de memoria, int mes, / / clase no tiene esos tipos porque son referencias! int ao;} Fecha de hoy / / Asignar el espacio apenas para la referencia: en la actualidad hoy = new Date (); hoy El operador new crea una instancia, asigna memoria y se llama al constructor de la clase; El acceso a cualquier miembro de la clase sin instanciacin adecuada produce una excepcin de tipo NullPointerException. Ejemplo: Fecha de hoy; hoje.dia = 5 / / ERROR! Para la creacin de instancias primero es necesario hoy = new Date (); Ex: String nombre1 = "Juan"; cadena nombre2 = new String ("Juan"); if (nombre1 == nombre2) System.out.println ("Son iguales"); else System.out.println ("Son diferentes"); Los mtodos en Java son subrutinas que pueden ser llamados cada vez que lo consideran necesario. calificador de tipo de retorno nombre-mtodo (parmetro tipo_parmetro) {...} Calificador: Estos son los especificadores de acceso que indica que tiene derecho a acceder a este mtodo, adems de la presencia o ausencia de clusula de esttica. Esta clusula establece que el mtodo es una clase o instancia. Tipo de retorno: void puede estar indicando que no se devuelve nada, o un tipo de datos o una clase que indica el tipo de cambio. Si usted tiene algn comentario que debe ser devuelto a travs de la clusula de retorno. Propiedades de las variables: Hay tres tipos de variables en Java: los niveles de clase, y de la instancia local. Las variables locales: las variables se definen dentro de un mtodo. Estas variables deben ser inicializadas antes de ser utilizado. Variables de Instancia: Son variables de Las declaradas en el cuerpo de la clase, que pertenece al cuerpo, es decir, pertenecen al objeto y por lo tanto, cada objeto tendr su copia con los valores posiblemente diferentes. Las variables de clase: variables Son tambin declar en el cuerpo de la clase, sino que pertenecen a la clase como un todo, describiendo todas las instancias de la clase. Estas variables se declaran con la clasificacin esttica. Slo hay una copia de cada variable de clase para todos los objetos de la clase y que residen en una dimensin diferente de los objetos. Tipos de mtodos: Hay dos tipos de mtodos en Java: Mtodos de clase e instancia o estticas -Los mtodos de clase: Son con los mtodos definidos calificador esttico y slo operan en las variables de clase. Estos mtodos no requieren de una instancia que se invoca, ya que puede ser llamado desde dentro del nombre de la clase seguido por el mtodo. Ejemplo: Integer.parseInt (), Math.max (), String.valueOf () -Los mtodos de instancia: mtodos Son los declar sin cualificado esttica y operan sobre instancias a pesar de que pueden operar en las clases. Ejemplo: clase automvil { Clase esttica contaObj int / / variable Modelo de cadena, marca, / / Las variables de instancia public void principal (String args []) / / Clase Mtodo {Int x; ... Variable / / local} String setModelo(String modeloAux) {...}} // mtodo Instancia Variables y mtodos de clase y de instancia: Las variables y mtodos de clase (con el modificador static) ocupan distintas dimensiones de las variables y mtodos de instancia y se crean slo una vez en la creacin de instancias de la primera clase del objeto.

Ejemplo: Fecha de la clase { static tipoCalendario int; int dia, mes, ao; static void trocaTipoCalendario (new_type int) {... } void incrementaDia (int num_dias) {... }} ... Fecha de hoy = new Date (); Maana Date = new Date () 1) de hoy 2) maana -La invocacin de las variables y mtodos de clase y de instancia: Las variables y mtodos de instancia requiere una instancia que se llama. Las variables y los mtodos de la clase puede y debe ser llamado por el nombre de la clase. Ejemplo: Data hoje = new Data(); hoje.dia = 5; hoje.incrementaDia (3); Data.tipoCalendario = 3; Data.trocaTipoCalendario (3); Integer.parseInt () String.valueOf () Math.max (), ... -Mtodos de acceso: Seguiendo los patrones de encapsulacin de objetos orientada a programacin orientada a objetos, los Miembros de las clases no deben tener acceso desde el exterior, excepto a travs de los mtodos. Para las variables de ESO se debe declarar con mtodos de modificacin Y El privadas que les dan acceso a las variables con los modificadores de modificadores pblicos son los siguientes: 1) private 2) public 3) protected 4)default (package) Ejemplo: class Data { private int dia, mes, ano; public void setDia( int dia_aux) { dia = dia_aux }; public int getDia() { return dia }; ... // Para todas las dems variables } Manipulacin de datos (clase Date): Esta clase de paquete java.util representa un cierto tiempo transcurrido desde una fecha determinada arbitrario en el calendario gregoriano Ene 01, 1970 00:00:00. Esta clase tiene varios mtodos de instancia de fecha y hora. Ejemplo: Fecha Date = new Date (); -Los mtodos pero las fechas Comunes manipulacion para el hijo: data.getDate () - Devuelve el da del mes; getDay () Devuelve el da de la semana (0 Domingo - Sbado 6); getMonth () - Devuelve el mes (0 a 11 ); getYear () - Devuelve el ao (por ao hasta 2000 de 3 dgitos para el ao 2000 vuelve vuelve Ex 100, 101 retornos para el ao 2001, ...);. data.setDate (das): Establece el da con el objeto fecha (Lo mismo ocurre con setMonth () y setYear ()). -Los mtodos ms comunes para la manipulacin del tiempo son: data.getHours () - Devuelve la hora 0-23; getMinutes () - Devuelve los minutos 0-59; getSeconds () - Devuelve los segundos de 0 a 59; setHours (horas ) setMinutes (minutos) y setSeconds (segundos) para ajustar las horas, minutos y segundos del objeto de datos; data.toLocaleString () - devuelve una cadena que contiene la fecha y la hora de objeto de datos.

La clase GregorianCalendar: Esta clase se recomienda para las fechas ms recientes y manipular y tiempos. Ejemplo: GregorianCalendar diaDeHoje = new GregorianCalendar(). diaDeHoje = dato Del Sistema Oper. GregorianCalendar diaDeHoje = new GregorianCalendar(1999, 11, 31, 23, 59, 30). Meses de 0 a 11 Los mtodos ms comnmente utilizados: int get(int valor) donde el valor puede ser cualquiera de las constantes definidas en el calendario como: YEAR, MONTH, DAY_OF_MONTH, DAY_OF_WEEK, DATE, HOUR, MINUTE, SECOND, AM_PM void set( int ano, int mes, int dia) ou void set(int ano, int mes, int dia, int hora, int minuto, int segundo) boolean equals(Object quando) Compara el objeto actual al volver cierto si representan el mismo punto en el tiempo. boolean before(Object quando) Devuelve true si el objeto actual cuando se trata antes de. boolean after(Object quando) - Devuelve true si el objeto actual cuando se trata despus de. Ejemplo: GregorianCalendar diaDeHoje = new GregorianCalendar(). int dia = diaDeHoje.get(Calendar.DAY_OF_MONTH); int mes = diaDeHoje.get(Calendar.MONTH); int ano = diaDeHoje.get(Calendar.YEAR); Alterando: diaDeHoje.set(Calendar.YEAR, 2007) diaDeHoje.set(Calendar.MONTH, Calendar.DECEMBER) NOTA: El calendario de clase abstracta se ha incluido entre 0-11 meses Ejemplo = 11 de diciembre, abril = 3, ...

Constructores
Son mtodos que Poseen el Mismo Nombre de la clase, tienen el tipo de retorno, y cuya finalidad es llevar a cabo las tareas bsicas al crear un objeto. Slo puede ser invocado con el constructor new. Esos mtodos cuando cuando no son declarados, Java llama de forma automtica por defecto. Ejemplo class Empleado { int mat; String nome; public Empleado (int mat_aux, String nome_aux) { mat = mat_aux; Nombre = nome_aux } public static void main (String args[ ] ) { Empregado emp = new Empleado ( 123, Juan Carlos); System.out.println( Mat: + emp.mat + Nombre + emp.nome ); } } NOTA: Si se declara un constructor, el constructor por defecto se proporcionar de forma automtica!

This y escopo
This dentro de una definicin de mtodo de instancia se utiliza para referirse al objeto del que se llam al mtodo. Se trata de una referencia a las variables de instancia de este objeto, en lugar de las variables locales, o pasar el objeto actual como un argumento a otro mtodo. Ejemplo Una de las funciones tradicionales: = maana umaData (Fecha d); Una llamada en Java: Fecha d = new Date (); d.amanha () / / El mtodo de maana operan en el objeto d Ejemplo: public class Fecha { private int da, mes, ao; public void Maana () { this.dia= this.dia + 1;}} Ejemplo: class {TestaEscopo int teste = 10; void imprimeTeste () { int teste = 20; System.out.println ("Teste = + teste);} / / this.teste; public static void main (String args []) { TestaEscopo st = new TestaEscopo(); st.imprimeTeste ();}} Llamando a otro constructor de la misma clase: El uso de este como el primer comando indica a un constructor a llamar a otro constructor sobrecargado de la clase. Ejemplo class Cliente { public Cliente (String n, int c ) { nome = n; numConta = c; } public Cliente ( String n) { this (n,numConta + 1); } Conta.cadastrarConta(this); } } Ejercicio: Crear una clase MeuCirculo centro con coordenadas x, y y radio r. Definir dos constructores, donde el valor 1 de x, y y r se pasa como un argumento y un segundo caso que no pasa el valor del radio r es asumida como un valor predeterminado.

Destructores
En Java, la eliminacin de los objetos creados se realiza de forma automtica cuando el objeto pierde la referencia o no, pero est siendo usada. Esta tcnica se llama recoleccin de basura y se produce cuando el sistema est inactivo en las referencias ya marcadas.

Arrays Las matrices de Java son tratados como objetos, es decir, que necesitan referencias y los pasos necesarios para crear cualquier objeto en java (declaracin y creacin de instancias). Para diferenciar la declaracin de tipos de datos primitivos con [*] despus de que el nombre del vector o el tipo. Ejemplo: frase String [] o String [] frase; coordenadas int [] o int [] coordenadas; Creacin de objetos de la matriz se realiza despus de la declaracin o en conjuncin con la declaracin: Ejemplo frase = new String[10]; // String frase[] = new String[20]; coordenadas = new int[50]; // int[] coordenadas = new int[50]; Los elementos de un array se crea con los siguientes valores por defecto - 0 para arreglos numricos'', para los personajes, false para booleanos matrices y nulos para los objetos. Los arreglos tambin se pueden crear desde el principio: Ejemplo: String nomes[] = {Joo, Pedro, Mario}; isto seria o mesmo que : String nomes[] = new String[3]; nomes[0] = Joo; nomes[1] = Pedro; nomes[2] = Mario; Las matrices siempre comienzan en cero y saber el tamao de un vector se utiliza la longitud variable de instancia. Ejemplo: System.out.println (nomes.length); Los vectores de copia se puede hacer de dos maneras: 1) Desplazamiento de un array de objetos a otro lo que significa que tanto la referencia del mismo vector. int[ ] vet1, vet2; vet1 = new int[10]; vet2 = vet1; vet1[5] = 15; System.out.println(vet2[5]) // tambiem sera 15; 2) Duplicando efetivamente os elementos del vector con el mtodo arraycopy(vetOrigem, posOrigem, vetDestino, posDestino, qtd) da classe System. Ejemplo: vet1={2, 3, 5, 7, 11, 13}; vet2 = {1001, 1002, 1003, 1004, 1005, 1006, 1007}; System.arraycopy( vet1, 2, vet2, 3, 4); for (int i = 0; i <vet2.length; i++) System.out.println(Elemento + i +: +vet2[i]); El uso de matrices con ms dimensiones es similar a la anterior, sin embargo, requieren ms ndices. Las matrices multidimensionales en Java se ensamblan como arreglos de arreglos. int espaco[] [] [] = new int [10] [5] [5]; MeuObjeto matObj[] [] = new MeuObjeto[5] [5]; espaco[1] [2] [2] = 10; matObj[2] [5] = new matObj(); Hay una clase de arreglos de java.util que tiene algunos mtodos de la clase muy tiles como: -static void sort( a ) -> Ordenar la matriz de uno de los tipos int, largo, corto, char, byte, float o double con quicksort; -static int binarySerach( a , v) -> Bsqueda de un elemento v en la matriz ordenada mediante la bsqueda binaria. Devuelve el ndice donde se encontr o un valor negativo indica la posicin donde r debe ser insertado. -static void fill ( a, b) -> Rellena toda la matriz con el elemento b del mismo tipo de la matriz. -static boolean equals( a, b) -> Compara las matrices vuelve a y b true si el mismo tipo tienen la misma longitud y los elementos en el partido de los ndices correspondientes. Introduccin al polimorfismo esttico: Implementar una clase que tiene tres mtodos para obtener los valores de diferentes tipos (int, float y double) e imprimirlas. Una instancia de un objeto de esta clase en el mtodo principal y llamar a los mtodos con los argumentos correspondientes. La sobrecarga o polimorfismo esttico: Es un tipo de polimorfismo en varios mtodos tienen el mismo nombre en una clase y slo se diferencian por la cantidad, el tipo o el orden de los parmetros. Esta tcnica impide que los mtodos con caractersticas similares tienen diferentes nombres, lo que facilita la reutilizacin de cdigo. Por lo tanto, los mtodos con el mismo nombre se comportan de manera diferente, porque tienen cdigos diferentes de acuerdo a los argumentos pasados. Ex String.valueOf (....) class Exemplo { public static void main(String args[]) {

System.out.println(Area do quadrado: +area(3) ); System.out.println(Area do retangulo: +area(3,2) ); } public static int area(int x) { return x * x }; public static int area(int x, int y) { return x * y }; } Ejercicio: Implementar el ejemplo de arriba en dos clases, una que va a leer el nmero de argumentos pasados y llamar a la zona de mtodo () y otro que va a contener slo el rea de mtodos sobrecargados () para calcular el rea. El siguiente es un ejemplo completo de una clase Empleado y el uso de sobrecarga: CLASSE EMPREGADO import java.util.*; class Empregado { private String nome; private double salario; private GregorianCalendar dataContratacao; public Empregado (String n, double s, GregorianCalendar d) { nome = n; salario = s; dataContratacao = d; } public void aumentaSalario(double percentualDeAumento) { salario = salario + salario * percentualDeAumento / 100; } public void alteraDataContratacao(int ano, int mes, int dia) { dataContratacao.set(Calendar.YEAR, ano); dataContratacao.set(Calendar.MONTH, mes); dataContratacao.set(Calendar.DATE, dia); } // CONTINUACION public int anoContratacao() { return dataContratacao.get(Calendar.YEAR); } public String getNome() { return nome; } public double getSalario() { return salario; } public void print() { System.out.printf(%s %7.2f %d ,nome, anoContratacao(), salario); } public void print(int i) { System.out.println(i); } public void print(String s) { System.out.println(s); } public void print(double d) { System.out.printf(7.2f,d); } } / / Clase que implementa la sobrecarga import java.util.*; // Devido a classe GregorianCalendar Debido a la clase GregorianCalendar public class TestaEmpregados { public static void main(String args[]) { Empregado vetEmpregados [] = new Empregado[3]; vetEmpregados[0] = new Empregado("Luiz Claudio", 3500, new GregorianCalendar(1989, 10, 1)); vetEmpregados[1] = new Empregado("Vinicius Aguiar", 4500, new GregorianCalendar(1989, 12, 6)); vetEmpregados[2] = new Empregado("Luciana Arruda", 2500, new GregorianCalendar(1993, 1, 12)); for (int i = 0; i < 3; i++) { vetEmpregados[i].print(vetEmpregados[i].getNome()); // passa um String vetEmpregados[i].print(vetEmpregados[i].getSalario()); // passa um double vetEmpregados[i].print(vetEmpregados[i].anoContratacao()); // passa um int } } } Paquetes (paquete): Este modo se utiliza por parte de Sun a organizar y clases grupales. Los paquetes estn organizados por niveles de jerarqua de clases por lo que la singularidad de Garantizar.

La clusula del paquete: La clusula debe ser su primer paquete en un archivo de clase y le dice a qu paquete UNA clase pertenecen, por ejemplo: las ventas de paquetes. La ausencia de la clusula hace que el paquete que une la pertenencia a una clase de un paquete por defecto, que es el directorio actual. Los paquetes especificados en la clusula subdirectorios del paquete se asignan al sistema de archivos del sistema operativo, y ha creado una estructura de subdirectorios similares a estos paquetes. Ejemplo: ClasseUtil Mar se define con la clase: sistemas.comuns paquete y se asignan en el directorio c: \ diretorioSistemas. Cuando se compila con-d crear un directorio por debajo de los sistemas de directorio actual y un subdirectorio bajo el directorio comn de los sistemas de ClasseUtil.class: c: \ diretorioSistemas \ system \ common \ ClasseUtil.class. Debido a que el compilador encuentra los paquetes: Para la ubicacin del paquete es necesario para informar a la ruta de clase en el directorio desde el que son como un paquete, ya que las rutas son relativas a una o ms especifica en la raz del classpath. Los paquetes tambin se pueden ofrecer in Zip o. Jar donde hay dentro de la jerarqua de archivos y paquetes. Ejemplo: una ruta de clases se define as: CLASSPATH = C: \ diretorioSistemas, y un ejemplo de clase que utiliza ClasseUtil define as:. Sistemas.comuns.ClasseUtil importacin; class Ejemplo {... }. La bsqueda sera la siguiente: por ClasseUtil.class en el paquete estndar de JAVA_HOME \ jre \ lib \ rt.jar ClasseUtil.class especificado por la ruta de clases: c: \ diretorioSistemas por ejemplo de la clase directorio local ClasseUtil.class (.) para los sistemas de \ common \ ClassUtil.class en JAVA_HOME \ jre \ lib \ rt.jar para los sistemas de \ common \ ClassUtil.class en c: \ diretorioSistemas / / Dnde debo ser! para los sistemas de \ common ClassUtil.class \ en el directorio local de la clase Example El comando de importacin: Cuando una clase utiliza otra accin de clase para un pblico que no pertenece al mismo paquete, es necesario utilizar El paquete de comando de importacin informada pertenece a la clase que proporciona el recurso deseado. Ejemplo:. import sistemas.comuns.ClasseUtil, o import sistemas.comuns.*;

Herrencia
Es la pieza clave de OO para la reutilizacin de cdigo y consiste en la obtencin de la clase de ua Otra heredando mtodos y Sus atributos. Java ES UNA slo es posible extender una clase. Una subclase, cuando se cre, tiende a incorporar nuevos atributos y / o mtodos por lo que es ms especfico (especializado) de la clase original (generalizacin). classe Empregado package testes; import java.util.*; class Gerente extends Empregado { private String nomeDaSecretaria; public Gerente ( String n, double s, GregorianCalendar d ) { super (n, s, d); // super (...) llama el equivalente parmetro constructor de la superclase nomeDaSecretaria = ""; // debe ser el smbolo del primero en el constructor de la subclase } public void aumentaSalario ( double percentualDeAumento ) // Mtodo aumentaSalario reescrito { GregorianCalendar hoje = new GregorianCalendar( ); double bonus = 0.5 * ( hoje.get(Calendar.YEAR) - anoContratacao( ) ); // No hay acceso directo a super.aumentaSalario( percentualDeAumento + bonus ); // variables de los empleados, ya que son privados } // Super.metodo () mtodo llama a la misma firma en la superclase de no repetir el cdigo public String getNomeDaSecretaria( ) { return nomeDaSecretaria; } public void setNomeDaSecretaria( String nome ) { nomeDaSecretaria = nome; } } // package testes; import java.util.*; public class TestaEmpregadoGerente { public static void main( String args[]) { Gerente mandaChuva = new Gerente ("Ricardo", 7500, new GregorianCalendar(1987,11,15)); mandaChuva.setNomeDaSecretaria("Claudia"); Empregado vetEmpregado [] = new Empregado[3]; vetEmpregado[0] = mandaChuva; // En tiempo de compilacin vetEmpregado [0] es un empleado vetEmpregado[1] = new Empregado("Claudia",2000,new GregorianCalendar(1999, 11, 6)); vetEmpregado[2] = new Empregado("Luciana",2500,new GregorianCalendar(1993, 1, 12)); System.out.println("Los empleados y los salarios antes del aumento"); for (int i = 0; i < 3; i++) { vetEmpregado[i].print(); }

System.out.println(); for (int i = 0; i < 3; i++) { vetEmpregado[i].aumentaSalario(5); } // Em En tiempo de ejecucin vetEmpregado [0] del gerente System.out.println("Los empleados y los salarios despus de que el aumento"); for (int i = 0; i < 3; i++) { vetEmpregado[i].print(); } // La clase Gerente no tiene un mtodo de impresin y utiliza la clase Empleado System.out.println("\nLa secretaria del departamento se llama: "+mandaChuva.getNomeDaSecretaria()); } } Encapsulacin Con la excepcin de los modificadores static final de resumen y otros, protegidos, privados y el paquete se utilizan para controlar el acceso a las variables, mtodos y clases, y son los primeros en ser declarados. Acceso estndar (Pakage): variable o mtodo declarado de esta forma est disponible para cualquier otra clase del mismo paquete Acceso privado: las variables y mtodos privados slo son accesibles dentro de la clase donde se les inform, o por medio de clases particulares no. Ni los mtodos ni las variables se pasan por herencia. Acceso pblico: las variables y mtodos pblicos estn disponibles para cualquier clase. Aas las variables de clase suelen ser pblicos para que puedan acceder desde cualquier lugar. El acceso protegido: mtodos protegidos y variables son accesibles por cualquier clase del mismo paquete o por las subclases de esta clase (applet por ejemplo, es una subclase de Panel, pero estn en diferentes paquetes y java.applet.Applet java.awt.Panel) Polimorfismo dinmico Cuando se invoca un mtodo, el compilador intenta encontrar en la clase a la que pertenece el objeto, y si no lo encuentra, buscando sucesivamente en las clases para padres hasta encontrar o generar errores. Polimorfismo dinmico o el enlace en tiempo es el uso de objetos de clases diferentes, pero relacionados por la jerarqua y tienen la misma firma (lista de nombres y el parmetro), pero con cdigos diferentes. Ejemplo Empleado vet Empleado [ ] = new Empleado [2]; vetEmpleado [0] = new Gerente(Ricardo Silva, 7500, new GregorianCalendar(1987, 12, 15) ); vetEmpleado [1] = new Empleado Luiz Alberto, 2500, new GregorianCalendar(1988, 10, 11) ); vetEmpleado [0]. aumentaSalario (5) / / aumentos para los diferentes mtodos de firma del mismo vetEmpleado [1]. aumentaSalario (5) / / La seleccin del mtodo se realiza para cargar en tiempo de ejecucin Ejemplo Empleado e = new Empleado (); Gerente g = new Gerente(); e = g; // Ok, Empleado Manager tiene todo y nada g = e; // Erro Error! Empleado Por supuesto que no es todo lo que debe tener un gerente g = (Gerente) e; // Ok, pero para el compilador en tiempo de ejecucin y tiene que ser manager! Ejemplo Tome una clase que se cree que los empleados y directivos en una serie de empleados e imprimir sus nombres y los nombres de sus secretarios, segn corresponda a partir del vector. import java.util.*; class ListaEmpleado Gerentes { public static void main(String args[]) { Empleado vetEmpleado [] = new Empleado [4]; Gerente mandaChuva1 = new Gerente ("Ricardo", 7500, new GregorianCalendar(1987,11,15)); mandaChuva1.setNombreDeSecretaria("Claudia"); Gerente mandaChuva2 = new Gerente ("Pedro", 5500, new GregorianCalendar(1980,06,28)); mandaChuva2.setNombreDeSecretaria("Luciana"); vetEmpleado[0] = mandaChuva1; vetEmpleado[1] = new Empleado("Claudia",2000,new GregorianCalendar(1999, 11, 6)); vetEmpleado[2] = new Empleado("Luciana",2500,new GregorianCalendar(1993, 1, 12)); vetEmpleado[3] = mandaChuva2; for (int i = 0; i < 4; i++) { if (vetEmpregado[i] instanceof Gerente) { System.out.println("Nombre Gerente: "+ vetEmpleado[i].getNome()); System.out.println("Nombre Secretria: "+ ((Gerente) vetEmpleado[i]).getNombreDeSecretaria()); } else System.out.println("Nombre Empleado: "+ vetEmpleado[i].getNome()); } } Clases abstractas: Es una clase que define una jerarqua de clases de otros, pero es tan abstracta que sus mtodos que acabamos de decir lo que debe ser realizado por los descendientes, sin embargo, sobre todo para poner en prctica los cdigos (mtodos abstractos). Estas clases se definen en el modificador resumen, no puede ser instanciada slo directamente a travs de las subclases. Adems, los mtodos y las variables pueden tener tangibles e incluso no tienen ningn mtodo abstracto, sin embargo, si hay alguna clase de mtodo abstracto debe ser declarada como abstracta. Ejercicio public abstract class PassaroCanoro

{ private String origem; // variable concreta public abstratct void cantar() ; // mtodo abstracto, sin aplicacin public String getOrigem() { return origem; } } // mtodo concreto public class Curio extends PassaroCanoro { public void cantar() { ... } } public class TrincaFerro extends PassaroCanoro { public void cantar() { ... } } // Proporcionar la aplicacin para todos los mtodos abstractos Creando un objeto: // abstracto tambin estar PassaroCanoro pc; // se puede declarar un objeto de clase abstracta pc = new PassaroCanoro(); // Error! Pero no se puede crear una instancia PassaroCanoro pc = new Curio(); // instancia de la subclase

El objeto de la superclase
esta clase es la superclase de la cual todas las clases derivadas, es decir, todas las clases son hijas de los objetos. Normalmente se tarda un objeto de esta clase como genrico como almacenamiento puede referirse a cualquier objeto. Esta clase tambin define algunos mtodos tiles, como es igual a () y toString () que deben ser cancelados en otras clases personalizadas a trabajar. -Mtodo equals (): En la clase de objetos slo se compara dos puntos objetos de la misma zona. Para determinar si dos objetos distintos tienen el mismo contenido que la cancele. Ejemplo: class Empleado {... public boolean equals (Object obj) {/ / prueba a cualquier objeto es igual a un empleado determinado if (! (obj instanceof Empleado)) return false; Empleado e = (Empleado) obj; nome.equals retorno (e.nome) && sueldo == e.salario && fechaContratacion.equals (e. fechaContratacion); -Metodo ToString: Devuelve una cadena que representa el valor del objeto. Desde algunas clases generales reemplazar este mtodo para dar una representacin impresa de estado del objeto. Ejemplo: la clase Empleado {... public String toString () {Return nombre + "\ n" + sueldo + "\ n" + fechaContratacion;} Todas las arrays son clases que se derivan de la clase de objetos y todo el conjunto de objetos se puede convertir en una gran variedad de objetos: Objeto Vet = new int [10 [/ / Ok, ya que cualquier matriz es un objeto; VetObj Object [] = new Empleado [10] / / Si la matriz del tipo de base sera un error! Por ejemplo, un mtodo para localizar un objeto de cualquier clase en un array de objetos de cualquier clase tambin. public int buscar (Object [] a, Objeto b) {For (int i = 0; i <a.length; i + +) if (. a [i] es igual a (b)) vuelvo / / El mtodo se llama es igual a la clase real del objeto [i] else return -1; La clase Vector Es una clase definida en el paquete java.util que almacena elementos de tipo Object, por lo que para recuperar el tipo real del objeto que debe utilizar el yeso. La clase Vector proporciona varios mtodos para trabajar con un vector como si lista enlazada, o al aumentar y disminuir el tamao dinmicamente. -Creacin: Vector veterinario = new Vector (3) Un potencial vector vaco de hasta tres elementos. Al entrar en el cuarto elemento de la doble vector de tamao automticamente. Para evitar el crecimiento exponencial puede pasar el tamao del aumento en el argumento segundo del constructor. Ejemplo: nuevo vector (3,5); -Adicin: El mtodo add () y add (int index, Object obj) agregar un elemento al final del vector en la posicin index o elementos mviles> index =. Ejemplo: vet.add (new Empleado ()) o vet.add (3, novoFunc); -Extraccin: El mtodo remove (int index) elimina el elemento en la posicin index en Vector =. Ejemplo: vet.remove (3) / / Quita el elemento en la cuarta posicin de regresar como un objeto -Conseguir el tamao del vector: Con el mtodo size () es posible obtener el tamao actual del vector. Ex = int tambin vet.size (); -Acceso a la del vector: Con el mtodo get (int index) se puede acceder a un elemento que es el ndice de posicin, pero vale la pena recordar que vendr como un objeto. Los elementos slo se puede acceder despus de que se ha insertado elementos con el mtodo add (). Ex Artculo x = (Artculo) vet.get (3); -Cambiar de posicin: Con set (int index, Object obj) es posible cambiar el ndice de posicin del vector de obj contenido. Tambin es necesario que el ndice de posicin ya existe en el vector. -Ajuste el tamao: Usted puede ajustar el tamao del vector sin necesidad de aadir todos los elementos uno por uno usando setSize (int n). Esto hace que el vector que tiene n elementos pasa null. Ex Vector v = new Vector (10) / / 10 el tamao de capacidad 0

v.set (0, x) / / Error! La posicin 0 no existe todava. v.add (x) / / v.size () = 1 se convierte v.setSize (10) / / v.size () se hace igual a 10 -Rendimiento: Las operaciones vectoriales no son tan eficientes como con las matrices. As, es comn a Sabemos que la matriz no vara en ms de tamao, los elementos de la copia de Vector a la matriz. Nombres anteriores String [] = new String [vet.size ()]; vet.copyInto [nombre]; Un ejemplo completo: import java.util.*; class Departamento { private String nombre; private Vector empleados = new Vector(10); public Departamento ( String n ) { nombre = n; } public void print() { System.out.println( nome ); } public void adicionarEmpleado ( Empleado e ) { empleados.add(e); } public Empleado removerEmpleado (Empleado e ) { int n encontrarEmpleado (empleados, e); if (n == -1 ) return null; else return (Empleado) empleados.remove(n); } // public void listarEmpleados() { for ( int i = 0 ; i < empleados.size() ; i++ ) { System.out.println( ( ( Empleado) empleados.get(i) ).getNome() ); } private static int encontrarEmpleado( Vector v, Empleado b ) { for ( int i = 0 ; i < v.size() ; i++ ) { if ( ( ( Empleado) v.get(i) ) . equals(b) ) return i; else return -1; } } import java.util.*; class TestaEmpleado { public static void main(String args[ ]) { Departamento umEmpleado = new Departamento(Compras); Empleado vinicius = new Empleado (Vinicius Aguiar, 4500, new GregorianCalendar(1992,6,13); umDepartamento.adicionaEmpleado(vinicius); Empleado carlos= new Empleado (Carlos Ribeiro, 5500, new GregorianCalendar(1993,7,14); umDepartamento.adicionaEmpleado(carlos); System.out.println(Lista de Empleados); umDepartamento.listarEmpleados(); Empleado empRemovido = umDepartamento.removerEmpleado(carlos); if ( ! (empRemovido == null) ) System.out.println(Empleado removido = +empRemovido.getNome()); else System.out.println(Empleado Inexistente. Nome = +carlos.getNome() ); System.out.println(Lista de Empleados); unDepartamento.listarEmpleados(); empRemovido = unDepartamento.removerEmpleado(carlos); if ( ! (empRemovido == null) ) System.out.println(Empleado removido = +empRemovido.getNome()); else System.out.println(Empleado Inexistente. Nome = +carlos.getNome() ); }

Empacadores de objetos (clases Wrappers) De vez en cuando necesitamos convertir un tipo bsico de objeto y de que todos los tipos tienen una clase bsica para este fin. Las clases son Integer, Long, Float, caracteres de doble, y Boolean. Todas estas clases son el tipo de final y no se puede heredar de transporte, y tambin formar objetos inmutables, es decir, no puede cambiar el valor de los objetos contenidos en estas clases. Para crear objetos a partir de tipos bsicos que utilizan los constructores para las clases. Por ejemplo, new Integer (5) o Float nueva (35,4) crea objetos de clase Integer y valores de coma flotante con 5 y 35,4, respectivamente, por ejemplo, crear un vector con valores de tipo double Vector v = new Vector (); v.add (3.14) / / Error! Mtodo Add () slo se permite a los objetos de vector v.add (new doble (3.14)) / / Crea un objeto de tipo Double que almacena el valor 3,14 double x = ((double) v.get (n)). doubleValue () / / Mtodo doubleValue () para recuperar el valor Otra manera de convertir la cadena en el tipo bsico puede contener separadores de miles. try {x = new DecimalFormat () parse (s.trim ()) doubleValue ();..} catch (ParseException e) {x = 0;}

La clase Class La clase representa el identificador del tipo de objeto creado en tiempo de ejecucin. As, la JVM sabe qu clase de objeto pertenece y los mtodos correctos. Sin embargo, esta informacin puede ser obtenida mediante el mtodo de getClass clase de objetos que devuelve un objeto de la clase clase. Ex empleado y; ... De la clase C1 = e.getClass (); System.out.println ("Nombre de clase =" + e.getClass (). GetName ()) / / Devuelve el nombre de la clase for (int i = 0, i <3, i + +) / / se puede devolver un administrador o como un nombre de la clase Empleado System.out.println (vetEmpregados [i] getClass () GetName () + "" + vetEmpregados [i] getName ()...); Hay otras formas de obtener un objeto de clase como Class.forName () y. Tipo de clase Interfaces es la forma utilizada por Java a la herencia mltiple, es decir, un nio hereda de ms de un padre al igual que en C + +. A modo de ejemplo, supongamos que queremos escribir una clase genrica para la clasificacin de cualquier tipo de objeto de Java. Empezamos con una clase abstracta que se puede ordenar tiene un mtodo abstracto copareTo () capaz de saber si un objeto es mayor, menor o igual a otro. Luego creamos una clase que tiene cualquier OrdenaObjetos ordnedar un mtodo de clase (se puede ordenar a []) que toma una matriz de objetos ordenables y ordenarlos de sus mtodos compareTo (). Para ello ser necesario que los objetos se extienden CLASES ordenada de dejar sin efecto el mtodo compareTo (). Ejemplo class Empregados extends Sortable { ... // La extensin puede ordenar public int compareTo( Sortable b ) // codificacin mtodo compareTo () de Ordenable { Empregado emp = (Empregado) b; if ( salario < emp.salario ) return -1; if ( salario > emp.salario ) return 1; return 0; } public class TestaOrdenacao { public static void main(String args [ ]) { Empregado vetEmpregados = new Empleado[ 3 ]; vetEmpleado[0] = new Empleado (Vinicius Aguiar, 4500, new GregorianCalendar(1992,6,13); vetEmpleado[1] =new Empregado (Carlos Ribeiro, 5500, new GregorianCalendar(1993,7,14); vetEmpleado[2] =new Empregado (Marco Aurelio, 3500, new GregorianCalendar(1990,4,30); OrdenaObjetos.ordenar(vetEmpleados); ... } Array Paso de los empleados (ordenable) for ( int i = 0; i < vetEmpleados.length; i++ ) System.out.println( vetEmpleados[ i ] ); } } abstract class Sortable { public abstract int compareTo( Sortable b ); } // mtodo que se debe codificar todos los Ordenable import java.util.*; class OrdenaObjetos { public static void ordenar( Sortable a[ ] ) { int n = a.length; boolean troca = true; while ( troca ) { troca = false; for ( int i = 0; i < n 1; i++ ) { Sortable temp = a[ i ]; if ( temp.compareTo( a[ i + 1 ] ) > 0 ) { // llama a la compareTo () para ordenar la correspondiente a[ i ] = a[ i + 1 ]; a[ i + 1 ] = temp; troca = true; } } } } } Hay un problema en el uso de la clase abstracta para expresar la propiedad genrica: Supongamos una clase que ya se extiende a otro directamente, en este caso no sera posible extender, porque se puede ordenar en una clase Java slo puede tener un padre. Ejemplo: la clase se extiende ClasseFilho ClassePai, ERROR puede ordenar,! La interfaz se ocupa de esta y es un compromiso que la clase va a poner en prctica ciertos mtodos con el conjunto misma firma. Incluso puedes usar hasta la palabra para indicar que implementa el compromiso. Ejemplo public interface Comparable // java.lang.Comparable { pubic int compareTo(Object b); } class ClasseFilho extends ClassePai implements Comparable Interfaces, as como las clases abstractas, no se pueden crear instancias con el nuevo, pero puede referirse a objetos de clases que implementan como un superclase. Ejemplo class Empregado implements Comparable { . . . } Comparable x = new Empregado( . . . ); if ( y instanceof Comparable ) { . . . }

Una interfaz puede extender otro creando una cadena de interfaces y, aunque no se permite o los campos de instancia y mtodos de clase, es posible tener constantes. Por ejemplo, public interface X extends Y { {Public static final int CONSTANTE = 10; public int umMetodo ();} Es posible aplicar mltiples interfaces de una mayor flexibilidad. Como ejemplo de una clase en la que para clonar y comparar objetos. Ejemplo: Gerente de pblico se extiende Empleado implementa clonable, comparable; Clases Internas: son clases definidas dentro de otras clases. La motivacin para su uso son los siguientes: Los mtodos de la clase interna puede tener acceso a los miembros de la clase externa directamente; Las clases internas pueden ocultar otras clases en el mismo paquete; Las clases internas annimas guardar una gran cantidad de cdigo cuando se usa; import java.awt.*; import java.awt.event; import java.util.*; import javax.swing.*; import javax.swing.Timer; public class InnerClassTest { public static void main(String args[ ]) { TalkingClock clock = new TalkingClock(1000, true); JOptionPane.showMessageDialog(null, Sair do programa ? ); System.exit(0); } }

class TalkingClock { private int interval; private boolean beep; public TalkingClock ( int interval, boolean beep) { this.interval = interval; this.beep = beep; } public void start() { ActionLintener listener = new TimePrinter(); // Internamente new TimePrinter(this); Timer t = new Timer ( interval, listener); t.start(); } private class TimePrinter implements ActionListener { // Classe Interna private // Aqui existe uma referncia do tipo TimeClock outer; public void actionPerformed(ActionEvent e) { Date now = new Date(); System.out.println( Agora so: + now); if (beep) // Varivel da classe externa Internamente (outer.beep) Toolkit.getDefaultTookit().beep(); } } } Nota: Se trata de un constructor generado internamente, de tipo: public TimePrinter( TalkingClock clock) { outer = clock; }

La clase interna annima Cuando se trata de la creacin de una clase interna para usar slo un objeto de esta clase, se puede crear el obj sin ni siquiera nombrar la clase que adems de estar construyendo ahora viene a ser annimo. public void start() { ActionLintener listener = new ActionListener() // supertipo nueva de la clase (con o sin argumentos) o la interfaz // Crear el obj oyente, una clase sin nombre que implementa ActionListener, y tiene la siguiente descripcin { // Abrir las llaves despus del parntesis indica la presencia de la clase annima public void actionPerformed(ActionEvent e) { Date now = new Date(); System.out.println( Agora so: + now); if (beep) // Varivel da classe externa Internamente (outer.beep) Toolkit.getDefaultTookit().beep(); } }; // Fin de la declaracin de clase interna annima Timer t = new Timer ( interval, listener); t.start(); } Significado: Crear un objeto de una clase que implementa ActionListener y es el mtodo actionPerformed. clase annima interna no puede ser constructores, pero si es necesario, se puede pasar a los fabricantes de los parmetros, si la clase annima superclase es una clase y una interfaz que no se extienda.

Interfaces grficas con Swing El paquete Swing no es un reemplazo para el AWT (Abstract Window Toolkit), el paquete de grficos utilizado en las primeras versiones de Java. En su lugar, la oscilacin se ve como una capa dispuesta sobre el AWT y utilizando los componentes internos de la AWT. A diferencia de AWT, donde algunos de los componentes utilizados de la capacidad de procesamiento de grficos de las interfaces grficas de que la aplicacin se ejecutan, los componentes Swing estn escritos en Java puro. La idea de utilizar la API nativa de AWT para la creacin de interfaz grfica de usuario trajo los siguientes temas: Las diferencias en el comportamiento de los componentes en diferentes sistemas operativos Algunos sistemas operativos tienen series limitadas de componentes GUI Los errores en la biblioteca AWT interfaz grfica de usuario para diferentes plataformas El enfoque derivado de Swing Foundation Classes de internet, adopt la filosofa de mantener el control de eventos AWT de la plataforma y obtener slo la ventana de grficos (cuadros) y otros componentes en que son prestados por la isla de Java. Dibuja los componentes de una sola forma trado diferentes apariencias que fue anulada en Java mediante la creacin de diferentes "look and feel" de las normas de Windows, Motif, y de metal. Un componente oscilacin del paquete es reconocido por la letra J que precede el nombre del componente AWT mismo paquete. La clase JFrame: Consiste en la clase que representa la ventana principal de una aplicacin GUI con Swing. Esta clase se extiende directamente a la clase Frame del AWT. import javax.swing.*; // importa el paquete javax.swing public class PrimeiraVentana extends JFrame // extends JFrame { public PrimeiraVentana () { super (Nuestra primera ventana); // llama al construtor de JFrame especificando un ttulo setSize(300, 150); // Ajusta el tamano da la ventana (ancho x alto) en pxeles setVisible(true); // Muestra la ventana } public static void main (String args[ ]) { PrimeiraVentana pj = new PrimeiraVentana(); // Crea una instancia de PrimeraVentana pj.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Indica qu hacer cuando se cierra la ventana } }

A pesar de la ventana puede haber creado el comportamiento esperado de su cierre de ventanas Window no causa la aplicacin para detener la ejecucin, pero slo cerrar la ventana. Para que esto suceda debe existir la pj.setDefaultCloseOperation ltima declaracin (JFrame.EXIT_ON_CLOSE). Hay otra forma de cerrar la ventana y la aplicacin y est vinculada a los posibles eventos generados a partir de una ventana. Para ello slo tiene que importar el paquete de java.awt.event. * Y cambiar la declaracin previa de la siguiente declaracin, como las nuevas clases son propiedad de este paquete. Ejemplo: Pj.addWindowListener (nuevo WindowAdapter () / / Obj de la clase interna annima que se extiende de un adaptador de la clase { public void windowClosing ( WindowEvent e) { System.exit( 0 ); } } ); Especificacin de un ttulo de la ventana: Puede especificar un ttulo para la ventana durante la ejecucin del programa mediante el mtodo setTitle (String title) del JFrame clase. Ejemplo: MinhaVentana JFrame ventana = new (); janela.setTitle ("Texto desde mi ventana"); Configuracin de un icono para la ventana de la aplicacin: Se puede establecer un icono para la ventana en tiempo de ejecucin con las siguientes instrucciones: Ejemplo: ImageIcon icon = new ImageIcon ("box.gif") / / La ubicacin del archivo se transforma en una URL janela.setIconImage (icone.getImage ()); Definir el punto de vista desde una ventana: Para establecer el punto de vista desde una ventana usando el mtodo de setExtendedState (int mode) heredado de la clase Frame, donde el modo puede ser una de las tres constantes: NORMAL, MAXIMIZED_BOTH ICONFIED, es decir, patrn, minimizada o maximizada. Ejemplo: janela.setExtendedState (ICONFIED); La fijacin del tamao de una ventana: Para activar o desactivar el cambio de tamao una ventana utiliza el mtodo de setResizable (valor booleano) heredado de Marco. Ejemplo: janela.setResizable (false) / / evita el cambio de tamao. Especificacin de las dimensiones de una ventana: para especificar el tamao de una ventana se utiliza para setSize (anchura, altura), por ejemplo janela.setSize (300, 200);

/ / Un ejemplo del uso de los mtodos de la clase JFrame la construccin de un defecto de la ventana import javax.swing.*; public class Janela extends JFrame{ protected int largura = 300, altura = 150; protected String titulo = "Sin ttulo"; protected String icone = "estandar"; protected boolean redimensionavel = true; protected String modo = "normal"; public void mostrar() { this.setSize(largura, altura); this.setTitle(titulo); if(icone != " estandar ") { ImageIcon iconeImg = new ImageIcon(icone); setIconImage(iconeImg.getImage()); } this.setResizable(redimensionavel); this.setVisible(true); if(modo == "normal") setExtendedState(NORMAL); else if(modo == "minimizada") setExtendedState(ICONIFIED); else setExtendedState(MAXIMIZED_BOTH); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }

/ / Ejemplo de una clase que utiliza la clase de ventana por defecto import javax.swing.*; public class MinhaJanela extends Ventana { public MinhaJanela() { titulo = "Esta es una clase personalizada"; altura = 600; largura = 800; redimensionavel = true; icone = "box.gif"; modo = "maximizada"; mostrar(); } public static void main(String args[]) { MiVentana app = new MiVentana(); } } Colocacin de la ventana de control En general se necesitan tres pasos para colocar los controles en las ventanas: Obtenga una referencia al contenedor de la ventana. La clase JFrame se compone de cuatro paneles de los cuales el contenido del panel es lo que nos interesa porque los otros son para el control interno de la apariencia; Ejemplo: la pantalla = Contenedor janela.getContentPane (); Definir cmo los componentes estn dispuestos en el contenedor utilizando un gestor de ventana. Al principio usamos la clase FlowLayout que asigna los componentes de izquierda a derecha de forma centralizada por defecto hasta llegar a la orilla de la derecha y luego se mueve a la siguiente lnea. Ejemplo: FlowLayout diseo = new FlowLayout (); tela.setLayout (diseo); Los componentes se colocan de forma predeterminada a 5 pxeles lejos de la anchura y la altura del borde de la ventana y entre ellos. Puede cambiar la alineacin de los componentes que utilizan las constantes: (centro, izquierda y derecha) y la distancia a travs de los nuevos valores en el constructor. Ejemplo: tela.setLayout (nuevo FlowLayout (FlowLayout.LEFT, 20, 10);

Hacer la llamada al mtodo add () de la clase Container para aadir los componentes al contenedor. Ej: JButton btn = new JButton ("Haga clic aqu"); tela.add (BTN);

Un ejemplo del uso de una etiqueta, un botn y un cuadro de texto import javax.swing.*; import java.awt.*; public class Controles2 extends JFrame { public Controles2() { super("Adicionando controles janela"); Container tela = getContentPane(); // Obtener el contenedor JFrame (panel de contenido) FlowLayout layout = new FlowLayout(); // Obtencin de un gestor de diseo layout.setAlignment(FlowLayout.LEFT); // ajuste de la posicin de los componentes a la izquierda tela.setLayout(layout); // dice el contenedor a utilizar el diseo creado JLabel rotulo = new JLabel("Tu Nome:"); // Crea una etiqueta con el texto "Tu nombre" JTextField nome = new JTextField(10); // Crear un cuadro de texto con una longitud de 10 caracteres JButton btn = new JButton("OK!"); // Cria Crea un botn "OK" tela.add(rotulo); tela.add(nome); // Aade los componentes cre el contenedor tela.add(btn); setSize(300, 100); // Establecer el tamao de la ventana setVisible(true); // Muestra la ventana } public static void main(String args[]) { Controles2 app = new Controles2(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } Ajuste el color de fondo de la ventana: El color de fondo de la ventana se puede cambiar con el mtodo de setBackground () contenido del panel, es decir, el objeto contenedor de JFrame. Los colores pueden ser especificados en las constantes de color de clase oa travs de los valores por defecto del RGB (Red-Green-Blue) que definen tonos de rojo, verde y azul que va de 0 a 255. Ejemplo: la pantalla = Contenedor janela.getContentPane (); Introduccin a la Gestin de eventos: Java proporciona una gran flexibilidad en el manejo de eventos y podemos determinar qu objeto va a responder a ese evento. La manipulacin de la AWT generalmente funciona como sigue: Un objeto detector es una instancia de una clase que implementa una interfaz como listner o ActionListener WindowListener; Una fuente de eventos es un objeto que puede reconocer eventos, crear objetos que representan estos eventos e informar a los objetos detectores registrados la ocurrencia de estos eventos que pasan el objeto de evento creado. Los objetos de evento son derivaciones de la clase como ActionEvent y java.util.EventObject WindowEvent; El origen del evento enva el objeto de evento a todos los objetos registrados oyentes cuando se producen; Los objetos entonces los oyentes utilizan los datos recibidos objeto de evento para determinar su reaccin ante el evento. Los eventos semnticos: son eventos que expresan lo que est haciendo como pulsar un botn, cambiar un cuadro de texto y otros. Estos eventos estn representados por cuatro interfaces: ActionEvent: haga clic en el botn, la seleccin del men, haga doble clic en la lista o introduzca en el cuadro de texto; AjustmentEvent: ajustar la barra de desplazamiento; ItemEvent: Seleccin en cajas o elementos de un cuadro de lista; TextEvent: Cambio en un cuadro de texto o rea de texto. Eventos de bajo nivel: son eventos que hacen que el reconocimiento de los hechos semnticos posible. Hay seis clases para representar a estos eventos: ComponentEvent: El componente ha cambiado de tamao, mover o encubierto; KeyEvent: se presiona una tecla o puestos en libertad; MouseEvent: El botn del ratn se ha pulsado, en libertad o trasladado arrastrado; FocusEvent: Un componente ha recibido o perdido el foco; WindowEvent una ventana ha sido activado, desactivado, minimizar, restaurar o cerrar; ContainerEvent: Un componente se ha aadido o eliminado As como hay varias clases de eventos tambin hay varias clases de oyentes de estos eventos. El paquete de java.awt.event eventos de base 11 proporciona interfaces para este propsito. Ellos son: ActionListener, AdjustmentListener, ComponentListener, ContainerListener, focusListener, ItemListener, KeyListener, MouseListener, MouseMotionListener y WindowListener TextListener. Siete de estos interfaces tienen las clases de adaptadores para tener ms de un mtodo. Estas clases estn diseadas para facilitar el uso de: ComponentAdapter, ContainerAdapter, FocusAdapter, KeyAdapter, MouseAdapter y WindowAdapter MouseMotionAdapter. . En respuesta a ActionEvents eventos: Para responder a estos eventos requieren los siguientes pasos:

1) Crear un objeto de origen que es un componente capaz de generar un ActionEvent como un botn o un cuadro de texto por ejemplo. Ejemplo: JButton btn = new JButton(Clique aqui); 2) Crear un objeto detector es una instancia de una clase que implementa la interfaz ActionListener y proporcionar el cdigo a su nico mtodo actionPerformed (ActionEvent e) que recibe el objeto de evento. Ejemplo: class TrataEventos implements ActionListener // Crear la clase detector { public void actionPerformed( ActionEvent e ) { . . . // A reao ao clique do boto vem aqui ! } } TrataEventos trat = new TrataEventos( ) ; // Crear el objeto detector

3) Aadir el objeto detector con el objeto de origen para hacerle saber que para pasar el objeto de evento cuando se produce un ActionEvent. Ejemplo: btn.addActionListener (Trat)

// Un ejemplo de tratamiento de eventos import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Eventos extends JFrame{ JTextField texto; public Eventos(){ super("Introduo ao uso de eventos"); Container tela = getContentPane(); FlowLayout layout = new FlowLayout(FlowLayout.LEFT); // Establece el punto de vista de los componentes tela.setLayout(layout); JLabel rotulo = new JLabel("Texto:"); // Crear una etiqueta texto = new JTextField(10); // Crear un cuadro de texto con un tamao de 10 JButton btn = new JButton("Exibir!"); // Crear un botn TratEventos trat = new TratEventos(); // Crear el objeto detector btn.addActionListener(trat); // Conexin de origen del objeto (botn) para el objeto detector tela.add(rotulo); tela.add(texto); // Adicin de componentes tela.add(btn); setSize(300, 100); setVisible(true); } public static void main(String args[]) { Eventos app = new Eventos(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } private class TratEventos implements ActionListener{ // Classe detector efinida como interna public void actionPerformed(ActionEvent evento){ // Mtodo que trata el evento String txt = "Voc digitou: " + texto.getText(); // Acceso a la variable de texto de la clase externa JOptionPane.showMessageDialog(null, txt); } } } // dilogo de tipo de mensaje

Capturar el evento del objeto: El objeto de evento se pasa al mtodo actionPerformed () es de tipo ActionEvent, y esta clase permite conocer el objeto de origen ha generado el evento por el mtodo de getSource () que devuelve un objeto. Ejemplo public void actionPerformed( ActionEvent e ) { Object source = e.getSource( ); String nomeClasse = source.getClass().getName(); // Capturando El nombre de La clase if ( source == blueButton ) ... // Identificando El origen Del objeto Adicin de texto y grficos: Para la inclusin de los textos es necesario el uso de la clase JLabel. Usted puede controlar varias propiedades de la alineacin del texto, fuente, tamao, color y as sucesivamente. Una imagen tambin puede ser incluido en la clase ImageIcon que representa la imagen. En posesin del objeto ImageIcon puede que se muestre en un JLabel exclusiva o conjuntamente con un texto. Ejemplo import java.awt.*; import java.awt.event.*; import javax.swing.*; class TextosImagens extends JFrame { JLabel L1, L2, L3, L4; ImageIcon icone = new ImageIcon("C:/Teste/Imagem.gif"); TextosImagens() { setTitle("Las etiquetas que ingresan y la ventana de grficos "); setSize(350,120); setLocation(50,50); // Posicionamiento en relacin con el contenedor getContentPane().setBackground(new Color(220,220,220)); // Color de fondo de la ventana L1 = new JLabel("Aprendendo",JLabel.LEFT); // Texto Alinear a la izquierda

L1.setForeground(Color.red); // Color de Fondp de la etiqueta L2 = new JLabel(icone); L3 = new JLabel("Inserir ",JLabel.RIGHT); L3.setForeground(Color.blue); L4 = new JLabel("Labels e Imagens",icone,JLabel.CENTER); L4.setFont(new Font("Serif",Font.BOLD,20)); L4.setForeground(Color.black); getContentPane().setLayout(new GridLayout(4,1)); // Etiqueta divide la ventana en una cuadrcula (filas, columnas) getContentPane().add(L1); getContentPane().add(L2); getContentPane().add(L3); getContentPane().add(L4); } public static void main(String args[]) { JFrame Janela=new TextosImagens(); Janela.show(); WindowListener x = new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }; Janela.addWindowListener(x); } } El mtodo de setPreferredSize (preferredSize Dimensin) permite ajustar el tamao de un componente, es decir, el rea que ocupa en la ventana. La clase Dimensin encapsula la anchura y la altura de un componente. Ex label1.setPreferredSize (new Dimension (300, 200)) / / Establece el tamao de Label1 en 300 x 200. Botones Insercin: Botones que se utilizan para agregar la clase JButton. A medida que el JLabel, JButton tiene muchas propiedades que pueden ser manipulados. import java.awt.*; import java.awt.event.*; import javax.swing.*; public class TesteBotao extends JFrame implements ActionListener { JButton b1,b2; ImageIcon icone = new ImageIcon("tomcat.gif"); public TesteBotao() { setTitle("Inserindo botoes na janela"); setSize(350,100); setLocation(50,50); getContentPane().setBackground(new Color(180,180,180)); b1 = new JButton("Busca",icone); b1.setHorizontalTextPosition(AbstractButton.LEFT); // Posicin del texto sobre la imagen (por defecto y derecha) // b1.setVerticalTextPosition(AbstractButton.TOP); // Posicin vertical del texto en la imagen (boton) b1.setBackground(new Color(100,180,180)); // color de fondo del botn b1.setForeground(Color.black); // Color del texto del botn b1.setFont(new Font("ScriptS",Font.BOLD,20)); // Establecer el tipo de letra de la tecla b1.setEnabled(true); // Activar / desactivar el botn b1.addActionListener(this); b1.setToolTipText("Pressione aqui para realizar uma busca"); // Pone una funcionalidad de botn de pista b1.setMnemonic(KeyEvent.VK_B); // Vamos a activar el botn con la combinacin de teclas ALT + B b2 = new JButton("Cancelar"); b2.addActionListener(this); b2.setMnemonic(KeyEvent.VK_C); b2.setToolTipText("Presione aqui para cancelar"); getContentPane().setLayout(new FlowLayout()); getContentPane().add(b1); getContentPane().add(b2); } public void actionPerformed(ActionEvent e) { if (e.getSource() == b1) { System.out.println("Boton 1 presionado"); } if (e.getSource() == b2) { System.out.println("Boton 2 presionado"); } } public static void main(String args[]) { JFrame Ventana = new TesteBotao(); Janela.show(); WindowListener x = new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); }

} Ventana.addWindowListener(x); } } Agregar cuadros de texto: Para incluir cuadros de texto que utilizan la clase JTextField tambin tiene varias propiedades que se pueden modificar. El siguiente ejemplo ilustra su uso con una calculadora sencilla en la que el usuario introduce dos nmeros en JTextFields y hace clic en uno de los cuatro botones de operacin. import java.awt.*; import java.awt.event.*; import javax.swing.*; class TesteJTextField extends JFrame implements ActionListener { JLabel L1,L2,L3; JButton B1, B2, B3, B4, B5; JTextField T1,T2,T3; public static void main(String args[]) { JFrame Janela=new TesteJTextField(); Janela.setVisible(true); WindowListener x = new WindowAdapter() // Para cerrar la ventana { public void windowClosing(WindowEvent e) { System.exit(0); } }; Janela.addWindowListener(x); } // TesteJTextField() { setTitle("Calculadora"); setSize(350,90); setLocation(50,50); getContentPane().setBackground(new Color(150,150,150)); // Color de Fondo getContentPane().setLayout(new GridLayout(3,4)); // establece el diseo con 3 filas y 4 columnas L1 = new JLabel("Num.1"); L1.setForeground(Color.black); // Fuente de la etiqueta L1 L1.setFont(new Font("",Font.BOLD,14)); // Tipo de fuente de etiqueta L1 L2 = new JLabel("Num.2"); L2.setForeground(Color.black); L2.setFont(new Font("",Font.BOLD,14)); L3 = new JLabel("Total"); L3.setFont(new Font("",Font.BOLD,14)); B1 = new JButton ("+"); B1.addActionListener(this); //Adiciona Aade JFrame obj que se est construyendo B2 = new JButton ("-"); B2.addActionListener(this); //para ser el objeto que detecta los botones B3 = new JButton ("x"); B3.addActionListener(this); // ActionEvents B4 = new JButton ("/"); B4.addActionListener(this); B5 = new JButton ("Limpar"); B5.addActionListener(this); B5.setBackground(Color.black); // Color de fondo Del boton B5.setForeground(Color.white); // Color do texto Del boton T1 = new JTextField(); // Crear los JTextFields T2 = new JTextField(); T3 = new JTextField(); T3.setEditable(false); // Establecer el campo de texto es de slo lectura getContentPane().add(L1); // Agrega botones, etiquetas getContentPane().add(T1); // textFields de ContentPane() getContentPane().add(B1); getContentPane().add(B2); getContentPane().add(L2); getContentPane().add(T2); getContentPane().add(B3); getContentPane().add(B4); getContentPane().add(L3); getContentPane().add(T3); getContentPane().add(B5); } public void actionPerformed(ActionEvent e) // Para tratar ActionEvents generados { float N1=0, N2=0, result=0; if (e.getSource()==B5) // Se Evento objeto de origen para el botn de B5 { T1.setText(""); T2.setText(""); T3.setText("");

return; } try { N1 = Float.parseFloat(T1.getText()); N2 = Float.parseFloat(T2.getText()); } catch (NumberFormatException erro) { T3.setText("Erro"); return; } if (e.getSource() == B1) { result = N1 + N2; } if (e.getSource() == B2) { result = N1 - N2; } if (e.getSource() == B3) { result = N1 * N2; } if (e.getSource() == B4) { result = N1 / N2; } T3.setText(""+result); // Ajusta o resultado } } // Para utilizar la contrasea que se utiliza si la clase JPasswordField sustitucin de los caracteres escritos por "*" por defecto. Sin embargo, usted puede especificar el eco de los caracteres a travs del mtodo de setEchoChar (); JPasswordField P1 = new JPasswordField(); P1.setEchoChar('?'); P1.addActionListener(this); // Agrega el objeto actual en el objeto como un oyente ActionEvents / / <enter> En un JTextField o haga clic en los botones public void actionPerformed(ActionEvent e) { if (P1.getText().equals("JAVA")) // est obsoleto mtodo getText(),cmbiela por una mejor getPassword () String texto = new String(P1.getPassword()); if (texto == java) T1.setText("valida Contrasea "); else T1.setText("invalida Contrasea "); } Las listas de seleccin: Las listas de seleccin son objetos que permiten la eleccin de uno o ms valores almacenados en una lista de opciones. Esta lista est representada por la clase JList y su uso debe seguir los siguientes pasos: 1. La declaracin de un objeto JList; 2. La declaracin de un objeto que contiene una lista de opciones (DefaultListModel) y agregar a ella todas las opciones 3. Una instancia de un objeto de un objeto que pasa de un elemento al punto 2; 4. Crear un panel de desplazamiento (JScrolPane); 5. Agregue el objeto de elemento de un panel de desplazamiento. El siguiente ejemplo muestra el uso de los mtodos principales de una lista de seleccin, donde se pueden agregar y quitar elementos de la lista. import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; // Debido a ListSelectionListener public class TesteJList extends JFrame implements ListSelectionListener, ActionListener { JLabel L1; JTextField T1; JList lista; // Declaracin de JList JButton bquant, bindice, bclear; DefaultListModel listModel; // Declaracin del objeto que contiene una lista de opciones public static void main(String args[]) { JFrame Ventana = new TesteJList(); Janela.setVisible(true); // WindowListener x = new WindowAdapter() // La clase interna para el caso WindowListener { public void windowClosing(WindowEvent e) { System.exit(0); }

}; Janela.addWindowListener(x); } TesteJList() { setLocation(300,100); setTitle("Uso do JList"); setSize(200,250); T1 = new JTextField(); T1.addActionListener(this); // Aade un oyente a T1 JFrame ActionEvents L1 = new JLabel("Sem selecao"); L1.setForeground(Color.black); bquant = new JButton("Quantidade de itens"); bquant.addActionListener(this); // Como es arriba de bquant bindice = new JButton("Indice selecionado"); bindice.addActionListener(this); // Como es arriba de Bindice bclear = new JButton("Remove item"); bclear.addActionListener(this); // Como es arriba de Bclear listModel = new DefaultListModel(); // Creacin del objeto que contendr la lista de opciones listModel.addElement("Banana"); // La adicin de la lista listModel.addElement("Pera"); listModel.addElement("Maa"); listModel.addElement("Uva"); lista = new JList(listModel); // Creacin de la JList con la lista de opciones en el objeto ListModel // lista.addListSelectionListener(this); // Adiciona el objeto JFrame como oyente a las selecciones de la lista JScrollPane Painel = new JScrollPane(lista); // JList lista aade al panel con barra de desplazamiento (JScrollPane) getContentPane().setLayout(new GridLayout(6,1)); // Agrega el gerente de GridLayout con 6 filas y 1 columna getContentPane().add(L1); getContentPane().add(T1); getContentPane().add(Painel); getContentPane().add(bquant); getContentPane().add(bindice); getContentPane().add(bclear); } public void actionPerformed(ActionEvent e) // Mtodo para el tratamiento de JFrame ActionEvents { if (e.getSource()==T1) { listModel.addElement(T1.getText()); // agregar elementos a la lista T1.setText(""); } if (e.getSource() == bquant) T1.setText("Quantidade: " + listModel.getSize()); if (e.getSource() == bindice) T1.setText("Indice selecionado: " + lista.getSelectedIndex()); if (e.getSource() == bclear) { int index = lista.getSelectedIndex(); L1.setText("Removido : "+ lista.getSelectedValue()); listModel.remove(index); } } public void valueChanged(ListSelectionEvent e) // JFrame mtodo para controlar los cambios en la lista de seleccin { L1.setText("Selecionado : "+ lista.getSelectedValue()); } Ejemplo: Cuando la eliminacin de un elemento no est seleccionado en el ejemplo anterior hace que el error, corregirlo con el fin de comprobar si hay cualquier elemento seleccionado antes de retirarlo

Agregando Casillas de verificacin (ComboBox): Creado a partir de la clase JComboBox JList funciona casi de la misma, pero hay diferencias entre los mtodos para la manipulacin de sus propiedades. Ejemplo import java.awt.*; import java.awt.event.*; import javax.swing.*; public class TesteComboBox extends JFrame implements ActionListener, ItemListener // Trata ItemEvents { JLabel L1; JTextField T1,T2,T3; JComboBox combo; // Declarar el ComboBox JButton B1,B2,B3,B4,B5,B6,B7,B8; public static void main(String args[]) {

JFrame Janela = new TesteComboBox(); Janela.setVisible(true); WindowListener x = new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }; Ventana.addWindowListener(x); } // TesteComboBox() { setTitle("Uso do JComboBox"); setSize(400,170); getContentPane().setBackground(new Color(190,190,190)); L1 = new JLabel("Conteudo"); L1.setForeground(Color.blue); L1.setFont(new Font("Arial", Font.BOLD, 15)); B1 = new JButton("Mostra Texto"); B1.addActionListener(this); B2 = new JButton("Mostra Indice"); B2.addActionListener(this); B3 = new JButton("Adiciona Item"); B3.addActionListener(this); B4 = new JButton("Remove Item"); B4.addActionListener(this); B5 = new JButton("Remove Todos"); B5.addActionListener(this); B6 = new JButton("Quant. Itens"); B6.addActionListener(this); T1 = new JTextField(); T2 = new JTextField(); String[] cores = {"Branco","Vermelho","Azul","Verde"}; // Crea un vector con las siguientes opciones combo = new JComboBox(cores); // Crea un JComboBox con las opciones de color de vectores combo.addItemListener(this); // Informa al objeto detector para el Combo ItemEvents es el JFrame getContentPane().setLayout(new GridLayout(5,2)); getContentPane().add(L1); getContentPane().add(combo); getContentPane().add(B1); getContentPane().add(B4); getContentPane().add(B2); getContentPane().add(B5); getContentPane().add(B3); getContentPane().add(T1); getContentPane().add(B6); getContentPane().add(T2); } // public void actionPerformed(ActionEvent e) // Tratar a los botones ActionsEvents { if (e.getSource()==B1) // muestra el texto L1.setText("Texto: "+combo.getSelectedItem()); if (e.getSource()==B2) // muestra del ndice L1.setText("Indice: " + combo.getSelectedIndex()); if (e.getSource()==B3) // aadir el artculo if (T1.getText().length() != 0) { combo.addItem(T1.getText()); T1.setText(""); } if (e.getSource()==B4) // eliminar el tema de que el ndice del elemento seleccionado combo.removeItemAt(combo.getSelectedIndex()); if (e.getSource()==B5) // remueve todos los artculos combo.removeAllItems(); if (e.getSource()==B6) // nmero de elementos en combo T2.setText(""+combo.getItemCount()); } public void itemStateChanged(ItemEvent e) // Si se producen cambios (ItemEvents) en el combo ... { T1.setText(""+combo.getSelectedItem()); } } Incluyendo la opcin de caja (CheckBox): Creado a partir de JCheckBox nos permiten presentar varias opciones, como cajas en las que el usuario puede seleccionar ninguna, una o ms de ellos. Ejemplo: import java.awt.*;

import java.awt.event.*; import javax.swing.*; public class TestaCheckBox extends JFrame implements ItemListener // JFrame como oyente ItemEvent { JLabel L1; JCheckBox C1, C2; // Declara la casilla de verificacin static int negrito=0, italico=0; public static void main(String args[]) { JFrame Janela = new TestaCheckBox(); Janela.ssetVisible(true); WindowListener x = new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }; Janela.addWindowListener(x); } TestaCheckBox() { getContentPane().setBackground(new Color(180,180,180)); setTitle("Uso do JCheckBox"); setSize(300,70); getContentPane().setLayout(new FlowLayout(FlowLayout.CENTER)); L1 = new JLabel("Java"); L1.setFont(new Font("Arial",Font.PLAIN,20)); L1.setForeground(Color.black); C1 = new JCheckBox("Negrito"); // Crea la casilla sin marcar. Podra ser ("Negrita", true). C1.setBackground(new Color(180,180,180)); C1.addItemListener(this); // Agrega el JFrame para ser el objeto de que el oyente ItemEvents C1 C2 = new JCheckBox("Italico"); C2.setBackground(new Color(180,180,180)); C2.addItemListener(this); // Agrega el objeto JFrame para el oyente ItemEvents C2 getContentPane().add(L1); getContentPane().add(C1); getContentPane().add(C2); } public void itemStateChanged(ItemEvent e) // Mtodo de JFrame que trata el ItemEvent ocurrido { if(e.getSource()==C1) { // Comprueba si la casilla de verificacin fue C1 if(e.getStateChange() == ItemEvent.SELECTED) // Podra ser seleccionado negrito=Font.BOLD; else negrito=Font.PLAIN; } if(e.getSource()==C2) { if(e.getStateChange() == ItemEvent.SELECTED) italico=Font.ITALIC; else italico=Font.PLAIN; } L1.setFont(new Font("Arial",negrito+italico,20)); } } Agregar los botones de radio y paneles: Los paneles se crean a partir de la JPainel clase y se utilizan como recipientes. Los botones de radio se crea a partir de la JRadioButton clase y, a diferencia de casillas, permitir que slo una de varias opciones es seleccionada por el usuario. Estos siempre deben ser agrupados en un ButtonGroup para cada grupo de botones de radio en el fotograma. Un ejemplo completo: import java.awt.*; import java.awt.event.*; import javax.swing.*; class TestePainel_RadioButton extends JFrame implements ItemListener // El JFrame es el ItemEvents Oyente { JLabel L1,L2; float N1=0,result=0; JTextField T1, T2; JPanel P1, P2; // Declara paneles JRadioButton radio1,radio2,radio3; // Declara los componentes RadioButton ButtonGroup radiogroup; // Declarar RadioGroup public static void main(String args[]) { JFrame Janela = new TestePainel_RadioButton(); Janela.setVisible(true);

WindowListener x = new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }; Janela.addWindowListener(x); } TestePainel_RadioButton() { setTitle("Uso de botoes de Radio "); setSize(340,120); getContentPane().setLayout(new FlowLayout(FlowLayout.CENTER)); L1 = new JLabel("Digite um valor"); L1.setForeground(Color.blue); L2 = new JLabel("% do Valor :"); L2.setForeground(Color.blue); T1 = new JTextField(5); T2 = new JTextField(5); P1 = new JPanel(); P2 = new JPanel(); T2.setEditable(false); radio1 = new JRadioButton("10% do valor"); radio2 = new JRadioButton("20% do valor"); radio3 = new JRadioButton("30% do valor"); radio1.setMnemonic(KeyEvent.VK_1); // Crear teclas de acceso directo para activar RadioButton radio2.setMnemonic(KeyEvent.VK_2); radio3.setMnemonic(KeyEvent.VK_3); radiogroup = new ButtonGroup(); radiogroup.add(radio1); radiogroup.add(radio2); radiogroup.add(radio3); radio1.addItemListener(this); radio2.addItemListener(this); radio3.addItemListener(this); P1.setLayout(new FlowLayout(FlowLayout.CENTER)); P1.setBackground(new Color(200,200,200)); P2.setLayout(new GridLayout(2,3)); P2.setBackground(new Color(200,200,200)); P1.add(L1); P1.add(T1); P2.add(radio1); P2.add(radio2); P2.add(radio3); P2.add(L2); P2.add(T2); getContentPane().add(P1); getContentPane().add(P2); } public void itemStateChanged(ItemEvent e) { if (T1.getText().length()==0) return; try { N1 = Float.parseFloat(T1.getText()); if (e.getSource()==radio1) result = (N1 * 10)/100; if (e.getSource()==radio2) result = (N1 * 20)/100; if(e.getSource()==radio3) result = (N1 * 30)/100; } catch(NumberFormatException erro) { T2.setText("Erro"); return; } T2.setText(""+result); } }

You might also like