curso básico de lenguaje java

30
Curso Básico de Lenguaje Java El Panorama de la Computación de Alto Rendimiento El crecimiento de volumen de datos y la complejidad de los procesos actuales Según Pfister, hay tres alternativas: *Trabajar más arduamente *Trabajar de forma más inteligente *Pedir ayuda En la última década, el avance y la popularidad de los recursos tecnológicos. Motivación: 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 difícil? Que ES a Java? Lenguaje para la creación de software para el control remoto electrónico Lenguaje de programación pequeño, fiable y portátil Lenguaje de programación adecuado para Internet Lenguaje de programación orientada a objetos Lenguaje de programación 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) Documentación: La documentación de J2SE V1.5 (45 Mb) JCreator - www.jcreator.com (2Mb) BlueJ - www.bluj.org (2,3 Mb) -Instalación: Instale la documentación en la raíz del JDK Ruta (Path = ... C: \ J2SDK1.5 \ BIN) (! Archivo no encontrado) JCreator / BlueJ - Informar a las carpetas y documentos J2SDK -Variaciones Aplicaciones de escritorio (carácter y gráfica) Aplicaciones Web: applets, servlets y JSP EJB -Conceptos orientados a objetos Motivación: la fiabilidad, mantenibilidad, y la productividad Estrategias: encapsulación y polimorfismo Herencia Clase y Encapsulamiento -Organizacion de las Clases en Java Jerarquía de la clase Los paquetes El rt.jar y la documentación de la API

Upload: nikoj7

Post on 28-Oct-2015

129 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Curso Básico de Lenguaje Java

Curso Básico de Lenguaje Java

El Panorama de la Computación de Alto Rendimiento El crecimiento de volumen de datos y la complejidad de los procesos actuales Según Pfister, hay tres alternativas: *Trabajar más arduamente *Trabajar de forma más inteligente *Pedir ayuda

En la última década, el avance y la popularidad de los recursos tecnológicos. Motivación: 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 difícil?

Que ES a Java? Lenguaje para la creación de software para el control remoto electrónico Lenguaje de programación pequeño, fiable y portátil Lenguaje de programación adecuado para Internet Lenguaje de programación orientada a objetos Lenguaje de programación 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) Documentación: La documentación de J2SE V1.5 (45 Mb) JCreator - www.jcreator.com (2Mb) BlueJ - www.bluj.org (2,3 Mb)

-Instalación: Instale la documentación en la raíz del JDK Ruta (Path = ... C: \ J2SDK1.5 \ BIN) (! Archivo no encontrado) JCreator / BlueJ - Informar a las carpetas y documentos J2SDK

-Variaciones Aplicaciones de escritorio (carácter y gráfica) Aplicaciones Web: applets, servlets y JSP EJB

-Conceptos orientados a objetos Motivación: la fiabilidad, mantenibilidad, y la productividad Estrategias: encapsulación y polimorfismo Herencia Clase y Encapsulamiento

-Organizacion de las Clases en Java Jerarquía de la clase Los paquetes El rt.jar y la documentación de la API

Page 2: Curso Básico de Lenguaje Java

Ejemplo de programación import java.lang.*; / / No hay necesidad de este paquete ya se ha importado de forma predeterminada class Ex1 extends Object / / No hay necesidad de ampliación 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 Aplicación

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 gráfica de usuario "); Ex2.setTitle("Interfaz Gráfica "); 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 público. Por convención de utilizar la primera letra del nombre de la clase en minúsculas -Para cada clase declarada en el programa creará un archivo de clase (. Clase) y justo después de la compilación de estas clases puede contener un modificador pública -Sólo la clase que se ejecutará el método principal será necesariamente declararse como sigue: public static void main (String args []) -El procedimiento para generar y ejecutar una aplicación Java es la siguiente: javac MeuProg.java (se producirá si la clase también tienen este nombre en MeuProg.class) java MeuProg

Page 3: Curso Básico de Lenguaje Java

Comentario y Documentacion:

/ / -> Forma de comentar una sola línea / * Y * / -> Forma de comentar en varias líneas / ** Y * / -> forma de crear un bloque de comentarios para la documentación con la utilidad javadoc. Etiquetas para la documentación: @ version, autor @, @ param, @ return, @ see y la excepción @ El autor etiquetas @ @ y la versión es sólo para la descripción de las clases y se tendrá en cuenta a menos que utilice la versión de los autores y como parámetros para el javadoc

/ ** Esta clase muestra una cadena como un ejemplo @ Versión 1.0 Autor @ Marcos Esteves * / public class TesteDoc{ / ** Método para mostrar una cadena @ Para el texto es el parámetro 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 versión TesteDoc.java

Los literales numéricos - 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 carácter 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 básico. Cotizaciones están representados como cadenas Unicode y se escapa - Ej: "una línea \ líneas nTwo \ tTabulação" Ejemplo: ("Doom II" c: \ juegos \ doom) - implica: "\" Doom II \ "c: \ \ juegos \ \ Doom"

Tipos de Datos-Los tipos de datos en Java son portables a través de plataformas de hijo e invariable por lo tanto, Tags: puede ser de cualquier tamaño y el carácter, la limitación 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," = vacía "", = en blanco ""

Operadores Aritmética = +, -, *, /,% - unario +, -, + +, - Asignación: + =, - =, * =, / = Lógico: &, && (AND), | | | (OR), ^ (XOR) (NO) Relacional: = (asignación) == (comparación) = (diferenciación),>,> =, <, <= 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 líneas)

La salida por defecto del dispositivo:

Page 4: Curso Básico de Lenguaje Java

Ejemplo:

System.out.println (cadena1 cadena2 + + ...) - La conversión a String es automático, ya que la concatenación (+) (implícita utilizando el método 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 conversión: 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 razón se le llama una clase constante. El final indica la presencia de una constante.

Ejemplo:

class UsandoConstantes { public static final doble de g = 32 / / definición debe llegar antes que el método 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 paréntesis b) Si sólo hay una declaración serán claves innecesarias . Ejemplo: if (valor == 0 | | valor == 1) factorial = 1; más {Factorial * = valor; valor -;} . Operador de El condicional o ternario: Devuelve un valor cuando en realidad es una expresión . 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 sólo 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");}

Page 5: Curso Básico de Lenguaje Java

Repetición de estructuras: . El bucle (inicialización, 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 (condición) {sentencias} y al mismo tiempo (condición) a) Es soportes necesarios para la condición y si sólo hay una instrucción no requiere claves b) while (condición) Pruebas 1 y luego realiza do {sentencias} while (condición) primero se ejecuta después de las pruebas Ejemplo: while (i <10) {el System.out.println (i + "") {System.out.println (i + ""); i + +;} i + +;} while (i <10); Práctica: Haga una lista de ejercicios N º 1

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

import java.io. *; -. Los informes que se van a importar paquetes (conjunto de clases) io, con todas sus clases más allá del java.lang* paquete por defecto InputStreamReader obj1 = new InputStreamReader (System.in) - Crea un objeto (obj1) flujo de datos para recibir la entrada estándar (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 actúa como una caché). obj2.readLine () - Método de la clase BufferedReader para leer una línea de texto y devolver un objeto String con el contenido de la línea. try {...} catch (Exception tipo) {...}: Instrucciones para el control de los posibles errores durante la ejecución del programa de getMessage () - Método de la clase de excepciones para capturar una serie de excepciones printStackTrace () - Método de la clase Exception que muestra el tipo de excepción generada y dónde ocurrió en el programa salida (1) - Método en el sistema de clases que se detiene la ejecución de la JVM y el valor es un indicador de una anomalía

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 número 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).

Page 6: Curso Básico de Lenguaje Java

-Capturar o declarar la posibilidad de una excepción (aumentar excepción)? Tratar: Proteger el código del método que contiene posibles errores y tratar usando try-catch {...} Ascensor: la cláusula throws a revelar su método, o un informe que utiliza métodos que pueden generar errores, o que él mismo plantea las excepciones no controladas dentro de su método.

-try {...} catch (Exception) {...} - Después de la cláusula try, las líneas entre los bloques {...} se desviará para ejecutar la cláusula de captura predefinidos o genéricos (Exception e). Cuando ocurre un error se genera una excepción que puede ser tratada. El tipo de excepción generada depende de la clase y el método 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 excepción) {el tratamiento de este tipo de error} catch (nombre de la excepción) {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 código 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 instrucción que se utiliza para declarar una excepción particular puede ocurrir en un método y también se utiliza para desencadenar una excepción en un método.

Ejemplo:

import java.io. *; {clase ExemploException public static void main (String args []) { int límite; nota doble, la suma promedio = 0; InputStreamReader entrada = new InputStreamReader (System.in); BufferedReader br = new BufferedReader (entrada); tratar de { System.out.print ("\ nlntroduzca el número de notas:"); límite = Integer.parseInt (br.readLine ()); for (int i = 1, i <= límite; 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 / límite; System.out.print ("\ nEl promedio es:" + promedio); System.out.println (); } catch (NumberFormatException e) { System.out.println ("Valor no válido 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); } }

Page 7: Curso Básico de Lenguaje Java

Uso del teclado para entrada de datos usando la cla sse Scanner (JDK 1.5)

Classe Scanner

Se utiliza para leer los datos más fácil. Esta clase está disponible en la versión 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 específico delimitada por Blanco: String FirstName = in.next(); / / empezar a leer el primer carácter que no sea el espacio y termina / / igual que el primer espacio

Para leer los datos numéricos: int edad = in.nextInt(); Double salario = in.nextDouble(); Los métodos nextInt () y nextDouble () gatillo excepciones si los datos no se pueden convertir a su tipo correspondiente. Para evitar esto, hay métodos hasNextInt () y hasNextDouble () que devuelve true si la secuencia siguiente es válida. Nota: Siempre que tengas un poco de lectura antes de nextLine (), ya sea con nextInt, nextDouble o el próximo, con un nextLine lectura (). Scanner in = new Scanner(System.in); System.out.println ("Introduzca la edad:"); edad = in.nextInt(); in.nextLine () / / Si esta línea no se coloca la siguiente lectura se omitirá System.out.println ("Introduzca el nombre:"); Nombre = in.nextLine();

Funciones Matemáticas: Estas funciones se derivan de los métodos de Java de la clase de matemáticas de la java.lang paquete por defecto definida como estática. . Sintaxis: Matemáticas name> Metodo> (lista> Argumentos>) - Tiene dos constantes PI y E. Método ceil (<valor double>): Calcula el valor entero inmediatamente devolver un doble doble. Ejemplo: Math.ceil (5,2), volvió 6,0 Piso de Método (<valor double>): Calcula el número entero antes de devolver un valor doble para un doble. Ejemplo: Math.floor (5,9) devuelve 5,0 Max (Método <valor1>, <valor2>): Calcula el más grande entre <valor2> <valor1> y devolver el mayor tipo que se encuentra. Ex-Math.max (10,3.5) -> 10,0 Método min (<valor1>, <valor2>): Calcula la más pequeña entre <valor2> <valor1> y devolviendo el tipo más pequeño encontrado. Ex Math.min (10,3.5) -> 3,5 Método sqrt (<valor1 double>): Calcula la raíz cuadrada de <valor1> devolver un doble. Ejemplo: Math.sqrt (900) -> 30,0 (negativo = NaN) Método pow (<base>, <pot>): Calcula la <pot> <base> el poder mediante la devolución de un doble. Ejemplo: Math.pow (25,0.5) -> 5,0 Todo el método (<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 métodos para la manipulación y puede ser utilizado como una variable. Sintaxis:. (En) String s = "El lenguaje Java", (uso) s <método> (argumento / s) "Los literales de cadena debe ir entre comillas." Método length (): Devuelve un entero equivalente a la longitud de la cadena. Por ejemplo, int longitud = s.length (); (Tamaño = 14) Método charAt (<> Índice): Devuelve un carácter que corresponde a la posición relativa [0 ... (n-1)] del carácter de la cadena. Ex s.charAt char c = (5) (c = 'a') Métodos toUpperCase () y toLowerCase (): Estos métodos de convertir los caracteres de una cadena a mayúsculas y

Page 8: Curso Básico de Lenguaje Java

minúsculas, respectivamente, devuelve una cadena. Ex s.toUpperCase String x = () (x = "LENGUAJE JAVA") - s.toLowerCase String x = () (x = "java lenguaje") Método 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") Método de ajuste () Elimina todos los espacios antes y después de la cadena que devuelve un String. String x = "Espacios"; x.trim x = (), (x = "Espacios") Sustituir el método (<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") Método 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 número en la consola, el valor por defecto es usar el número máximo de dígitos distintos de cero del tipo en cuestión. Ejemplo: x = 10000 / 3,0; System.out.println (x) = aparece 3333,3333333333335

Dar formato con la clase del paquete NumberFormat j ava.text (JDK 1.4)

Los valores numéricos: NumberFormat.getNumberInstance (); Los valores monetarios: NumberFormat.getCurrencyInstance (); Valores porcentuales: NumberFormat.getPercentInstance (); Cada uno de estos métodos tiene un formateador que es una instancia de la clase NumberFormat para la ubicación predeterminada. Entonces se utiliza el método del formato () de esta clase para obtener una cadena con formato igual al número. Ejemplo: NumberFormat nf = NumberFormat.getNumberInstance (); System.out.println ("Número de formato:" + nf.format (x)); ◊ número con formato: 3333,333 Para ajustar el tamaño utilizando los métodos setMaximumIntegerDigits () setMinimumIntegerDigits () setMaximumFractionDigits () setMinimumFractionDigits (). Ejemplo: nf.setMaximumFractionDigits (2); nf.setMaximumIntegerDigits (2); System.out.println ("Número de formato:" + nf.format (x)) ◊ 33,33 Cambiar la configuración regional predeterminada: Locale.xxxxxx donde xxxxxx es el objeto que contiene información sobre la ubicación. Ejemplo: NumberFormat nf = NumberFormat.getNumberInstance (Locale.GERMANY); Formato de salida con la clase DecimalFormat (string_formatacao) Ejemplo: (. # # # # # #) DecimalFormat gl = new DecimalFormat; System.out.println ("Número de formato:" + df.format (x)); ◊ 3.333,33

Formato Con printf:

La versión 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 carácter% se sustituye por el argumento correspondiente. La conversión de caracteres que termina el especificador de formato (%) indica el tipo se está dando formato. Ejemplo: System.out.println (". Hola,% s El próximo año será el Sr.% d años 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 lógico: 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, día, año) - 03/20/2006 TY -> Los dos últimos dígitos del año - 06 tm -> Mes de dos dígitos (con ceros a la izquierda) - 03 td -> Día con dos dígitos (con ceros a la izquierda) – 20

Page 9: Curso Básico de Lenguaje Java

Como definir lãs Clases

Una clase en Java siempre se define con la palabra en la clase en minúsculas y el nombre de la clase con la primera letra en mayúscula. A continuación, por lo general miembros de la clase descrita, es decir, los elementos que definen la clase. Ejemplo: Fecha de la clase { int día / / Las primitivas de asignar espacio de memoria, int mes, / / clase no tiene esos tipos porque son referencias! int año;} 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 instanciación adecuada produce una excepción de tipo NullPointerException. Ejemplo: Fecha de hoy; hoje.dia = 5 / / ERROR! Para la creación 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 métodos en Java son subrutinas que pueden ser llamados cada vez que lo consideran necesario. calificador de tipo de retorno nombre-método (parámetro tipo_parâmetro) {...} Calificador: Estos son los especificadores de acceso que indica que tiene derecho a acceder a este método, además de la presencia o ausencia de cláusula de estática. Esta cláusula establece que el método 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 algún comentario que debe ser devuelto a través de la cláusula 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 método. 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 también 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 clasificación estática. Sólo hay una copia de cada variable de clase para todos los objetos de la clase y que residen en una dimensión diferente de los objetos.

Tipos de métodos:

Hay dos tipos de métodos en Java: Métodos de clase e instancia o estáticas -Los métodos de clase: Son con los métodos definidos calificador estático y sólo operan en las variables de clase. Estos métodos no requieren de una instancia que se invoca, ya que puede ser llamado desde dentro del nombre de la clase seguido por el método. Ejemplo: Integer.parseInt (), Math.max (), String.valueOf () -Los métodos de instancia: métodos Son los declaró sin cualificado estática y operan sobre instancias a pesar de que pueden operar en las clases. Ejemplo: clase automóvil { Clase estática contaObj int / / variable Modelo de cadena, marca, / / Las variables de instancia public void principal (String args []) / / Clase Método {Int x; ... Variable / / local} String setModelo(String modeloAux) {...}} // método Instancia

Variables y métodos de clase y de instancia: Las variables y métodos de clase (con el modificador static) ocupan distintas dimensiones de las variables y métodos de instancia y se crean sólo una vez en la creación de instancias de la primera clase del objeto.

Page 10: Curso Básico de Lenguaje Java

Ejemplo:

Fecha de la clase { static tipoCalendario int; int dia, mes, año; static void trocaTipoCalendario (new_type int) {... } void incrementaDia (int num_dias) {... }} ... Fecha de hoy = new Date (); Mañana Date = new Date ()

1) de hoy 2) mañana

-La invocación de las variables y métodos de clase y de instancia: Las variables y métodos de instancia requiere una instancia que se llama. Las variables y los métodos 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 (), ... -Métodos de acceso: Seguiendo los patrones de encapsulación de objetos orientada a programación orientada a objetos, los Miembros de las clases no deben tener acceso desde el exterior, excepto a través de los métodos. Para las variables de ESO se debe declarar con métodos de modificación Y El privadas que les dan acceso a las variables con los modificadores de modificadores públicos 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 demás variables } Manipulación 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 métodos de instancia de fecha y hora. Ejemplo: Fecha Date = new Date (); -Los métodos pero las fechas Comunes manipulacion para el hijo: data.getDate () - Devuelve el día del mes; getDay () - Devuelve el día de la semana (0 Domingo - Sábado 6); getMonth () - Devuelve el mes (0 a 11 ); getYear () - Devuelve el año (por año hasta 2000 de 3 dígitos para el año 2000 vuelve vuelve Ex 100, 101 retornos para el año 2001, ...);. data.setDate (días): Establece el día con el objeto fecha (Lo mismo ocurre con setMonth () y setYear ()). -Los métodos más comunes para la manipulación 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 más 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 métodos más comúnmente 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 después 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, ...

Page 11: Curso Básico de Lenguaje Java

Constructores Son métodos que Poseen el Mismo Nombre de la clase, tienen el tipo de retorno, y cuya finalidad es llevar a cabo las tareas básicas al crear un objeto. Sólo puede ser invocado con el constructor new. Esos métodos cuando cuando no son declarados, Java llama de forma automática 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 automática! This y escopo This dentro de una definición de método de instancia se utiliza para referirse al objeto del que se llamó al método. 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 método. Ejemplo Una de las funciones tradicionales: = mañana umaData (Fecha d); Una llamada en Java: Fecha d = new Date (); d.amanha () / / El método de mañana operan en el objeto d Ejemplo: public class Fecha { private int día, mes, año; public void Mañana () { 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 eliminación de los objetos creados se realiza de forma automática cuando el objeto pierde la referencia o no, pero está siendo usada. Esta técnica se llama recolección de basura y se produce cuando el sistema está inactivo en las referencias ya marcadas.

Page 12: Curso Básico de Lenguaje Java

Arrays Las matrices de Java son tratados como objetos, es decir, que necesitan referencias y los pasos necesarios para crear cualquier objeto en java (declaración y creación de instancias). Para diferenciar la declaración de tipos de datos primitivos con [*] después de que el nombre del vector o el tipo. Ejemplo: frase String [] o String [] frase; coordenadas int [] o int [] coordenadas; Creación de objetos de la matriz se realiza después de la declaración o en conjunción con la declaración: 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 numéricos'', para los personajes, false para booleanos matrices y nulos para los objetos. Los arreglos también se pueden crear desde el principio: Ejemplo: String nomes[] = {“João”, “Pedro”, “Mario”}; isto seria o mesmo que : String nomes[] = new String[3]; nomes[0] = “João”; nomes[1] = “Pedro”; nomes[2] = “Mario”; Las matrices siempre comienzan en cero y saber el tamaño 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 método 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 más dimensiones es similar a la anterior, sin embargo, requieren más í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 métodos 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) -> Búsqueda de un elemento v en la matriz ordenada mediante la búsqueda binaria. Devuelve el índice donde se encontró o un valor negativo indica la posición 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. Introducción al polimorfismo estático: Implementar una clase que tiene tres métodos para obtener los valores de diferentes tipos (int, float y double) e imprimirlas. Una instancia de un objeto de esta clase en el método principal y llamar a los métodos con los argumentos correspondientes. La sobrecarga o polimorfismo estático: Es un tipo de polimorfismo en varios métodos tienen el mismo nombre en una clase y sólo se diferencian por la cantidad, el tipo o el orden de los parámetros. Esta técnica impide que los métodos con características similares tienen diferentes nombres, lo que facilita la reutilización de código. Por lo tanto, los métodos con el mismo nombre se comportan de manera diferente, porque tienen códigos diferentes de acuerdo a los argumentos pasados. Ex String.valueOf (....) class Exemplo { public static void main(String args[]) {

Page 13: Curso Básico de Lenguaje Java

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 número de argumentos pasados y llamar a la zona de método () y otro que va a contener sólo el área de métodos 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 están organizados por niveles de jerarquía de clases por lo que la singularidad de Garantizar.

Page 14: Curso Básico de Lenguaje Java

La cláusula del paquete: La cláusula 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 cláusula 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 cláusula 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 común de los sistemas de ClasseUtil.class: c: \ diretorioSistemas \ system \ common \ ClasseUtil.class. Debido a que el compilador encuentra los paquetes: Para la ubicación 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 más especifica en la raíz del classpath. Los paquetes también se pueden ofrecer in Zip o. Jar donde hay dentro de la jerarquía 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 importación; class Ejemplo {... }. La búsqueda sería la siguiente: por ClasseUtil.class en el paquete estándar 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 / / ¿Dónde debo ser! para los sistemas de \ common ClassUtil.class \ en el directorio local de la clase Example El comando de importación: Cuando una clase utiliza otra acción de clase para un público que no pertenece al mismo paquete, es necesario utilizar El paquete de comando de importación 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 reutilización de código y consiste en la obtención de la clase de uña Otra heredando métodos y Sus atributos. Java ES UNA sólo es posible extender una clase. Una subclase, cuando se creó, tiende a incorporar nuevos atributos y / o métodos por lo que es más específico (especializado) de la clase original (generalización). 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 parámetro constructor de la superclase nomeDaSecretaria = ""; // debe ser el símbolo del primero en el constructor de la subclase } public void aumentaSalario ( double percentualDeAumento ) // Método 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 () método llama a la misma firma en la superclase de no repetir el código 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 compilación 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(); }

Page 15: Curso Básico de Lenguaje Java

System.out.println(); for (int i = 0; i < 3; i++) { vetEmpregado[i].aumentaSalario(5); } // Em En tiempo de ejecución vetEmpregado [0] del gerente System.out.println("Los empleados y los salarios después de que el aumento"); for (int i = 0; i < 3; i++) { vetEmpregado[i].print(); } // La clase Gerente no tiene un método de impresión y utiliza la clase Empleado System.out.println("\nLa secretaria del departamento se llama: "+mandaChuva.getNomeDaSecretaria()); } } Encapsulación Con la excepción de los modificadores static final de resumen y otros, protegidos, privados y el paquete se utilizan para controlar el acceso a las variables, métodos y clases, y son los primeros en ser declarados. Acceso estándar (Pakage): variable o método declarado de esta forma está disponible para cualquier otra clase del mismo paquete Acceso privado: las variables y métodos privados sólo son accesibles dentro de la clase donde se les informó, o por medio de clases particulares no. Ni los métodos ni las variables se pasan por herencia. Acceso público: las variables y métodos públicos están disponibles para cualquier clase. Aas las variables de clase suelen ser públicos para que puedan acceder desde cualquier lugar. El acceso protegido: métodos 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 están en diferentes paquetes y java.applet.Applet java.awt.Panel) Polimorfismo dinámico Cuando se invoca un método, 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 dinámico o el enlace en tiempo es el uso de objetos de clases diferentes, pero relacionados por la jerarquía y tienen la misma firma (lista de nombres y el parámetro), pero con códigos 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 métodos de firma del mismo vetEmpleado [1]. aumentaSalario (5) / / La selección del método se realiza para cargar en tiempo de ejecución 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 ejecución 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, según 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 Secretária: "+ ((Gerente) vetEmpleado[i]).getNombreDeSecretaria()); } else System.out.println("Nombre Empleado: "+ vetEmpleado[i].getNome()); } } Clases abstractas: Es una clase que define una jerarquía de clases de otros, pero es tan abstracta que sus métodos que acabamos de decir lo que debe ser realizado por los descendientes, sin embargo, sobre todo para poner en práctica los códigos (métodos abstractos). Estas clases se definen en el modificador resumen, no puede ser instanciada sólo directamente a través de las subclases. Además, los métodos y las variables pueden tener tangibles e incluso no tienen ningún método abstracto, sin embargo, si hay alguna clase de método abstracto debe ser declarada como abstracta. Ejercicio public abstract class PassaroCanoro

Page 16: Curso Básico de Lenguaje Java

{ private String origem; // variable concreta public abstratct void cantar() ; // método abstracto, sin aplicación public String getOrigem() { return origem; } } // método concreto public class Curio extends PassaroCanoro { public void cantar() { ... } } public class TrincaFerro extends PassaroCanoro { public void cantar() { ... } } // Proporcionar la aplicación para todos los métodos abstractos � Creando un objeto: // abstracto también 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 genérico como almacenamiento puede referirse a cualquier objeto. Esta clase también define algunos métodos útiles, como es igual a () y toString () que deben ser cancelados en otras clases personalizadas a trabajar. -Método equals (): En la clase de objetos sólo 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 método para dar una representación 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 sería un error! Por ejemplo, un método para localizar un objeto de cualquier clase en un array de objetos de cualquier clase también. public int buscar (Object [] a, Objeto b) {For (int i = 0; i <a.length; i + +) if (. a [i] es igual a (b)) vuelvo / / El método 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 métodos para trabajar con un vector como si lista enlazada, o al aumentar y disminuir el tamaño dinámicamente. -Creación: Vector veterinario = new Vector (3) Un potencial vector vacío de hasta tres elementos. Al entrar en el cuarto elemento de la doble vector de tamaño automáticamente. Para evitar el crecimiento exponencial puede pasar el tamaño del aumento en el argumento segundo del constructor. Ejemplo: nuevo vector (3,5); -Adición: El método add () y add (int index, Object obj) agregar un elemento al final del vector en la posición index o elementos móviles> index =. Ejemplo: vet.add (new Empleado ()) o vet.add (3, novoFunc); -Extracción: El método remove (int index) elimina el elemento en la posición index en Vector =. Ejemplo: vet.remove (3) / / Quita el elemento en la cuarta posición de regresar como un objeto -Conseguir el tamaño del vector: Con el método size () es posible obtener el tamaño actual del vector. Ex = int también vet.size (); -Acceso a la del vector: Con el método get (int index) se puede acceder a un elemento que es el índice de posición, pero vale la pena recordar que vendrá como un objeto. Los elementos sólo se puede acceder después de que se ha insertado elementos con el método add (). Ex Artículo x = (Artículo) vet.get (3); -Cambiar de posición: Con set (int index, Object obj) es posible cambiar el índice de posición del vector de obj contenido. También es necesario que el índice de posición ya existe en el vector. -Ajuste el tamaño: Usted puede ajustar el tamaño del vector sin necesidad de añadir 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 tamaño de capacidad 0

Page 17: Curso Básico de Lenguaje Java

v.set (0, x) / / Error! La posición 0 no existe todavía. 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 común a Sabemos que la matriz no varía en más de tamaño, 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 básico de objeto y de que todos los tipos tienen una clase básica 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 también formar objetos inmutables, es decir, no puede cambiar el valor de los objetos contenidos en estas clases. Para crear objetos a partir de tipos básicos 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! Método Add () sólo 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 () / / Método doubleValue () para recuperar el valor Otra manera de convertir la cadena en el tipo básico puede contener separadores de miles. try {x = new DecimalFormat () parse (s.trim ()) doubleValue ();..} catch (ParseException e) {x = 0;}

Page 18: Curso Básico de Lenguaje Java

La clase Class La clase representa el identificador del tipo de objeto creado en tiempo de ejecución. Así, la JVM sabe qué clase de objeto pertenece y los métodos correctos. Sin embargo, esta información puede ser obtenida mediante el método 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 múltiple, es decir, un niño hereda de más de un padre al igual que en C + +. A modo de ejemplo, supongamos que queremos escribir una clase genérica para la clasificación de cualquier tipo de objeto de Java. Empezamos con una clase abstracta que se puede ordenar tiene un método 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 método de clase (se puede ordenar a []) que toma una matriz de objetos ordenables y ordenarlos de sus métodos compareTo (). Para ello será necesario que los objetos se extienden CLASES ordenada de dejar sin efecto el método compareTo (). Ejemplo class Empregados extends Sortable { ... // La extensión puede ordenar public int compareTo( Sortable b ) // codificación método 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 ); } // método 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 genérica: Supongamos una clase que ya se extiende a otro directamente, en este caso no sería posible extender, porque se puede ordenar en una clase Java sólo 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 práctica ciertos métodos 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 ) { . . . }

Page 19: Curso Básico de Lenguaje Java

Una interfaz puede extender otro creando una cadena de interfaces y, aunque no se permite o los campos de instancia y métodos 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 múltiples interfaces de una mayor flexibilidad. Como ejemplo de una clase en la que para clonar y comparar objetos. Ejemplo: Gerente de público se extiende Empleado implementa clonable, comparable; Clases Internas: son clases definidas dentro de otras clases. La motivación para su uso son los siguientes: Los métodos 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 anónimas guardar una gran cantidad de código 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 referência do tipo TimeClock outer; public void actionPerformed(ActionEvent e) { Date now = new Date(); System.out.println(“ Agora são: “+ now); if (beep) // Variável 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 anónima Cuando se trata de la creación de una clase interna para usar sólo un objeto de esta clase, se puede crear el obj sin ni siquiera nombrar la clase que además de estar construyendo ahora viene a ser anónimo. 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 descripción { // Abrir las llaves después del paréntesis indica la presencia de la clase anónima public void actionPerformed(ActionEvent e) { Date now = new Date(); System.out.println(“ Agora são: “+ now); if (beep) // Variável da classe externa – Internamente (outer.beep) Toolkit.getDefaultTookit().beep(); } }; // Fin de la declaración de clase interna anónima Timer t = new Timer ( interval, listener); t.start(); } Significado: Crear un objeto de una clase que implementa ActionListener y es el método actionPerformed. clase anónima interna no puede ser constructores, pero si es necesario, se puede pasar a los fabricantes de los parámetros, si la clase anónima superclase es una clase y una interfaz que no se extienda.

Page 20: Curso Básico de Lenguaje Java

Interfaces gráficas con Swing El paquete Swing no es un reemplazo para el AWT (Abstract Window Toolkit), el paquete de gráficos utilizado en las primeras versiones de Java. En su lugar, la oscilación 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 gráficos de las interfaces gráficas de que la aplicación se ejecutan, los componentes Swing están escritos en Java puro. La idea de utilizar la API nativa de AWT para la creación de interfaz gráfica 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 gráfica de usuario para diferentes plataformas El enfoque derivado de Swing Foundation Classes de internet, adoptó la filosofía de mantener el control de eventos AWT de la plataforma y obtener sólo la ventana de gráficos (cuadros) y otros componentes en que son prestados por la isla de Java. Dibuja los componentes de una sola forma traído diferentes apariencias que fue anulada en Java mediante la creación de diferentes "look and feel" de las normas de Windows, Motif, y de metal. Un componente oscilación 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 aplicación 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 título setSize(300, 150); // Ajusta el tamano da la ventana (ancho x alto) en píxeles 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 aplicación para detener la ejecución, pero sólo cerrar la ventana. Para que esto suceda debe existir la pj.setDefaultCloseOperation última declaración (JFrame.EXIT_ON_CLOSE). Hay otra forma de cerrar la ventana y la aplicación y está vinculada a los posibles eventos generados a partir de una ventana. Para ello sólo tiene que importar el paquete de java.awt.event. * Y cambiar la declaración previa de la siguiente declaración, como las nuevas clases son propiedad de este paquete. Ejemplo: Pj.addWindowListener (nuevo WindowAdapter () / / Obj de la clase interna anónima que se extiende de un adaptador de la clase { public void windowClosing ( WindowEvent e) { System.exit( 0 ); } } ); Especificación de un título de la ventana: Puede especificar un título para la ventana durante la ejecución del programa mediante el método setTitle (String title) del JFrame clase. Ejemplo: MinhaVentana JFrame ventana = new (); janela.setTitle ("Texto desde mi ventana"); Configuración de un icono para la ventana de la aplicación: Se puede establecer un icono para la ventana en tiempo de ejecución con las siguientes instrucciones: Ejemplo: ImageIcon icon = new ImageIcon ("box.gif") / / La ubicación 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 método 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, patrón, minimizada o maximizada. Ejemplo: janela.setExtendedState (ICONFIED); La fijación del tamaño de una ventana: Para activar o desactivar el cambio de tamaño una ventana utiliza el método de setResizable (valor booleano) heredado de Marco. Ejemplo: janela.setResizable (false) / / evita el cambio de tamaño. Especificación de las dimensiones de una ventana: para especificar el tamaño de una ventana se utiliza para setSize (anchura, altura), por ejemplo janela.setSize (300, 200);

Page 21: Curso Básico de Lenguaje Java

/ / Un ejemplo del uso de los métodos de la clase JFrame la construcción de un defecto de la ventana import javax.swing.*; public class Janela extends JFrame{ protected int largura = 300, altura = 150; protected String titulo = "Sin título"; 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(); } } Colocación 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 cómo los componentes están 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 línea. Ejemplo: FlowLayout diseño = new FlowLayout (); tela.setLayout (diseño); Los componentes se colocan de forma predeterminada a 5 píxeles lejos de la anchura y la altura del borde de la ventana y entre ellos. Puede cambiar la alineación de los componentes que utilizan las constantes: (centro, izquierda y derecha) y la distancia a través de los nuevos valores en el constructor. Ejemplo: tela.setLayout (nuevo FlowLayout (FlowLayout.LEFT, 20, 10); Hacer la llamada al método add () de la clase Container para añadir los componentes al contenedor. Ej: JButton btn = new JButton ("Haga clic aquí"); tela.add (BTN);

Page 22: Curso Básico de Lenguaje Java

Un ejemplo del uso de una etiqueta, un botón 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(); // Obtención de un gestor de diseño layout.setAlignment(FlowLayout.LEFT); // ajuste de la posición de los componentes a la izquierda tela.setLayout(layout); // dice el contenedor a utilizar el diseño 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 botón "OK" tela.add(rotulo); tela.add(nome); // Añade los componentes creó el contenedor tela.add(btn); setSize(300, 100); // Establecer el tamaño 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 método 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 través 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 (); Introducción a la Gestión de eventos : Java proporciona una gran flexibilidad en el manejo de eventos y podemos determinar qué objeto va a responder a ese evento. La manipulación 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 envía 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 reacción ante el evento. Los eventos semánticos : son eventos que expresan lo que está haciendo como pulsar un botón, cambiar un cuadro de texto y otros. Estos eventos están representados por cuatro interfaces: ActionEvent: haga clic en el botón, la selección del menú, haga doble clic en la lista o introduzca en el cuadro de texto; AjustmentEvent: ajustar la barra de desplazamiento; ItemEvent: Selección 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 semánticos posible. Hay seis clases para representar a estos eventos: ComponentEvent: El componente ha cambiado de tamaño, mover o encubierto; KeyEvent: se presiona una tecla o puestos en libertad; MouseEvent: El botón del ratón 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 añadido o eliminado Así como hay varias clases de eventos también hay varias clases de oyentes de estos eventos. El paquete de java.awt.event eventos de base 11 proporciona interfaces para este propósito. 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 más de un método. Estas clases están diseñadas 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:

Page 23: Curso Básico de Lenguaje Java

1) Crear un objeto de origen que es un componente capaz de generar un ActionEvent como un botón 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 código a su único método actionPerformed (ActionEvent e) que recibe el objeto de evento. Ejemplo: class TrataEventos implements ActionListener // Crear la clase detector { public void actionPerformed( ActionEvent e ) { . . . // A reação ao clique do botão vem aqui ! } } TrataEventos trat = new TrataEventos( ) ; // Crear el objeto detector 3) Añadir 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("Introdução 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 tamaño de 10 JButton btn = new JButton("Exibir!"); // Crear un botón TratEventos trat = new TratEventos(); // Crear el objeto detector btn.addActionListener(trat); // Conexión de origen del objeto (botón) para el objeto detector tela.add(rotulo); tela.add(texto); // Adición 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){ // Método que trata el evento String txt = "Você digitou: " + texto.getText(); // Acceso a la variable de texto de la clase externa JOptionPane.showMessageDialog(null, txt); } } } // diálogo de tipo de mensaje Capturar el evento del objeto: El objeto de evento se pasa al método actionPerformed () es de tipo ActionEvent, y esta clase permite conocer el objeto de origen ha generado el evento por el método 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 Adición de texto y gráficos: Para la inclusión de los textos es necesario el uso de la clase JLabel. Usted puede controlar varias propiedades de la alineación del texto, fuente, tamaño, color y así sucesivamente. Una imagen también puede ser incluido en la clase ImageIcon que representa la imagen. En posesión 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 gráficos "); setSize(350,120); setLocation(50,50); // Posicionamiento en relación 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

Page 24: Curso Básico de Lenguaje Java

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 cuadrícula (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 método de setPreferredSize (preferredSize Dimensión) permite ajustar el tamaño de un componente, es decir, el área que ocupa en la ventana. La clase Dimensión encapsula la anchura y la altura de un componente. Ex label1.setPreferredSize (new Dimension (300, 200)) / / Establece el tamaño de Label1 en 300 x 200. Botones Inserción: 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); // Posición del texto sobre la imagen (por defecto y derecha) // b1.setVerticalTextPosition(AbstractButton.TOP); // Posición vertical del texto en la imagen (boton) b1.setBackground(new Color(100,180,180)); // color de fondo del botón b1.setForeground(Color.black); // Color del texto del botón b1.setFont(new Font("ScriptS",Font.BOLD,20)); // Establecer el tipo de letra de la tecla b1.setEnabled(true); // Activar / desactivar el botón b1.addActionListener(this); b1.setToolTipText("Pressione aqui para realizar uma busca"); // Pone una funcionalidad de botón de pista b1.setMnemonic(KeyEvent.VK_B); // Vamos a activar el botón con la combinación 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); }

Page 25: Curso Básico de Lenguaje Java

} Ventana.addWindowListener(x); } } Agregar cuadros de texto : Para incluir cuadros de texto que utilizan la clase JTextField también tiene varias propiedades que se pueden modificar. El siguiente ejemplo ilustra su uso con una calculadora sencilla en la que el usuario introduce dos números en JTextFields y hace clic en uno de los cuatro botones de operación. 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 diseño 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 Añade 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 sólo 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 botón de B5 { T1.setText(""); T2.setText(""); T3.setText("");

Page 26: Curso Básico de Lenguaje Java

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 contraseña que se utiliza si la clase JPasswordField sustitución de los caracteres escritos por "*" por defecto. Sin embargo, usted puede especificar el eco de los caracteres a través del método 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 método getText(),cámbiela por una mejor getPassword () String texto = new String(P1.getPassword()); if (texto == “java”) T1.setText("valida Contraseña "); else T1.setText("invalida Contraseña "); } Las listas de selección: Las listas de selección son objetos que permiten la elección de uno o más 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 declaración de un objeto JList; 2. La declaración 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 métodos principales de una lista de selección, 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; // Declaración de JList JButton bquant, bindice, bclear; DefaultListModel listModel; // Declaración 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); }

Page 27: Curso Básico de Lenguaje Java

}; Janela.addWindowListener(x); } TesteJList() { setLocation(300,100); setTitle("Uso do JList"); setSize(200,250); T1 = new JTextField(); T1.addActionListener(this); // Añade 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(); // Creación del objeto que contendrá la lista de opciones listModel.addElement("Banana"); // La adición de la lista listModel.addElement("Pera"); listModel.addElement("Maça"); listModel.addElement("Uva"); lista = new JList(listModel); // Creación 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 añade 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) // Método 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 método para controlar los cambios en la lista de selección { L1.setText("Selecionado : "+ lista.getSelectedValue()); } Ejemplo: Cuando la eliminación 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 verificación (ComboBox): Creado a partir de la clase JComboBox JList funciona casi de la misma, pero hay diferencias entre los métodos para la manipulación 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[]) {

Page 28: Curso Básico de Lenguaje Java

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) // añadir el artículo 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 artículos combo.removeAllItems(); if (e.getSource()==B6) // número 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 opción 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 más de ellos. Ejemplo: import java.awt.*;

Page 29: Curso Básico de Lenguaje Java

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 verificación 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. Podría 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) // Método de JFrame que trata el ItemEvent ocurrido { if(e.getSource()==C1) { // Comprueba si la casilla de verificación fue C1 if(e.getStateChange() == ItemEvent.SELECTED) // Podría 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 sólo 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);

Page 30: Curso Básico de Lenguaje Java

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); } }