You are on page 1of 29

PROGRAMAR EN JAVA 22 MAYO 2011 COMO PROGRAMAR EN JAVA

Unidad I: Introduccin Historia de Java Biblioteca de clases de Java Fundamentos de un entorno Java tpico Introduccin a la programacin en Java

1.1 Historia de Java Sun Microsystems reconociendo que los microprocesadores tendrn un impacto profundo en los dispositivos electrnicos de consumo inteligente financio un proyecto un proyecto de investigacin corporativo interno con el nombre en cdigo Green en 1991. un resultado del proyecto fue la creacin de un lenguaje basado en C y C++ que su creador, James Gosling, llamo Oak, inspirado por un roble (oak, en ingles) que creca afuera de su ventana en Sun. Mas tarde se descubri que ya exista un lenguaje de programacin llamado Oak. Cuando un grupo de empleados de Sun visito una cafetera local, alguien sugiri el nombre Java (como se conoce tambin en ingles al caf), y el nombre pego. No obstante el proyecto Green se vio en problemas. El mercado para dispositivos electrnicos de consumo inteligente no estaba creciendo con la rapidez que Sun haba anticipado. Peor aun, un contrato importante por el que Sun estaba concursando fue otorgado a otra compaa. El proyecto estaba en peligro de ser cancelado. En una afortunada coincidencia, la popularidad de la World Wide Web hizo explosionen 1993 y la gente de Sun detecto el potencial inmediato de Java para la creacin de paginas de Web con contenido dinmico. Sun anuncio formalmente Java en una conferencia importante en mayo de 1995. Ordinariamente, un evento de tal naturaleza no habra generado tanta atencin. Sin embargo Java hizo surgir un inters inmediato en la comunidad de los negocios en vista de la magnitud del inters comercial por la Web. Java no era un lenguaje acadmico como Pascal o un lenguaje diseado por una sola persona o grupo reducido para su propio uso local como C o C++, Java haba sido diseado con motivos comerciales y genero un inters avasallador en la comunidad de los negocios a causa de otro avance relacionado con la Internet, La World Wide Web. 1.2 Biblioteca de clases de Java Los programas en Java consisten en piezas llamadas clases y mtodos. Podemos programar cada pieza que vayamos a necesitar para formar un programa java, pero la mayora de los programadores que usan Java aprovechan las ricas colecciones de clase y mtodos que existen ya en las bibliotecas de clases de Java. El aprendizaje de java consiste en: Primero: aprender el lenguaje para poder programar clases y mtodos propios y el segundo aprender a usar las clases y mtodos de las extensas bibliotecas de clases de Java.

Programacin Orientada a Objetos TSC

PROGRAMAR EN JAVA 22 MAYO 2011 La ventaja de crear clase y mtodos propios es que se conoce con exactitud su funcionamiento y es posible examinar el cdigo Java. La desventaja es el tiempo y el esfuerzo que hay que invertir en el diseo y desarrollo de clases y mtodos nuevos. El empleo de clases y mtodos de biblioteca en lugar de versiones propias puede mejora el rendimiento de los programas por que tales clases y mtodos se han escrito cuidadosamente con el fin de que funcin eficientemente, adems de mejorar la transportabilidad de los programas porque dichas clases y mtodos se incluyen en prcticamente todas las implementaciones de Java.

1.3 Fundamentos de un entorno Java tpico Los sistemas Java generalmente constan de varias partes: Un entorno El lenguaje La interfaz de programacin de aplicaciones (API, Applications Programming Interface) de Java y diversas bibliotecas de clases. Los programas Java normalmente pasan por cinco fases antes de ejecutarse Fig. (1.1). Estas son: 1. 2. 3. 4. 5. EDITAR COMPILAR CARGAR VERIFICAR EJECUTAR

La fase 1 consiste en editar un archivo. Esto se hace con un programa editor, almacenndolo en un dispositivo de almacenamiento secundario como un disco. Los nombres de archivo de los programa en Java terminan con extensin .java. dos editores que se utilizan mucho en los sistemas UNS son vi y emacs. En Windows 95 y NT son suficientes programas de edicin sencillos como el comando EDIT del DOS y el programa Notepad de Windows. En la fase 2, el programador emite el comando javac para compilar el programa. El compilador de java traduce el programa java a cdigos de bytes, que es el lenguaje que entiende el interprete de Java. Si se desea compilar un programa llamado Welcome.java teclee: javac Welcome.java Si el programa se compila correctamente, se producir un archivo llamado Welcome.class siendo este el archivo que contiene los cdigos de bytes que sern interpretados durante la fase de ejecucin. La fase 3 se llama carga. Antes de que el programa pueda ejecutarse, es necesario colocarlo en la memoria. Esto lo hace un cargador de clases que toma el archivo (o archivos) .class que

Programacin Orientada a Objetos TSC

PROGRAMAR EN JAVA 22 MAYO 2011 contiene los cdigos de bytes y los transfiere a la memoria. El archivo .class puede cargarse de un disco de su sistema o a travs de una red. El cargador de clases comienza a cargar archivos .class en dos situaciones. Por ejemplo, el comando: java Welcome invoca el interprete java para el programa Welcome y hace que el cargador de clases cargue la informacin empleada en el programa Welcome. Llamamos al programa Welcome una aplicacin. Las aplicaciones son programas que son ejecutados por el interprete de Java. El cargador de clases tambin se ejecuta cuando una applet de Java se carga en un navegador de la WWW, como Navigator de Netscape o HotJava de Sun. Las applets (la terminacin let en ingles denota un diminutivo, por lo que el termino applet significa aplicacioncita) son programas de Java que normalmente se cargan de la Internet mediante un navegador. Se cargan cuando el usuario curiosea un documento en HTML (Hypertext Markup Language: Lenguaje de marcado de hipertexto) que contiene a la applet. tambin pueden ejecutarse desde la lnea de comando utilizando el comando appletviewer incluido en Java Developers Kit (JDK): un conjunto de herramientas que incluye al compilador (javac), al interprete (java), a appletviewer y a otras herramientas empleadas por los programadores de Java. Al igual que Nestcape Navegator y HotJava, appletviewer requiere de un documento HTML para invocar una applet. Por ejemplo si el archivo Welcome.html hace referencia a la applet Welcome, el comando appletviewer se usa as: Appletviewer Welcome.html Esto hace que el cargador de clases cargue la informacin utilizada en la applet Welcome. Appletviewer es como el navegador o browser mnimo, pues solo sabe como interpretar las applets. Antes de que el interprete o appletviewer pueda ejecutar los cdigos de bytes, estos son verificados por el verificador de cdigos de bytes en la fase 4. Esto asegura que los cdigos de bytes son validos y que no violan las restricciones de seguridad de Java. Ya que los programas Java que llegan por la red podran causar daos a los archivos y al sistema de usuario. En la fase 5 la computadora controlada por el CPU, interpreta el programa un cdigo de byte a la vez.

Programacin Orientada a Objetos TSC

PROGRAMAR EN JAVA 22 MAYO 2011 Fig 1.1 Un entorno de Java tpico Editor Disco

El programa se crea en el editor y se Almacena en el disco. El compilador crea cdigos de bytes y los almacena en disco.

Compilador

Disco Memoria primaria

Cargador de clases El cargador de clases coloca cdigo de Bytes en la memoria. Disco

Memoria primaria Verificador de cdigos de bytes El verificador de cdigos de bytes Confirma que todos los cdigos sean Validos y que no se violen las restricciones De seguridad de Java.

Memoria primaria Interprete El interprete lee cdigos de bytes y los traduce a un lenguaje que la computadora pueda entender, tal vez almacenando valores de datos conforme los ejecuta el programa.

Programacin Orientada a Objetos TSC

PROGRAMAR EN JAVA 22 MAYO 2011 1.4 Introduccin a la programacin en Java El lenguaje Java facilita un enfoque disciplinado del diseo de programas para computadora. Comenzaremos por considerar un applet sencilla que exhibe una lnea de texto 1 //Un primer programa en Java 2 import java.applet.Applet; //importar la clase Applet 3 import java.awt.Graphics; //importar la clase Graphics 4 5 public class Welcome extends Applet { 6 public void paint(Graphics g) 7 { 8 g.drawString( "Bienvenidos a la programacin en JAVA", 25, 25 ); 9 } 10 } Cuando guardamos una applet en un archivo, usamos el nombre de clase de la applet como parte del nombre de archivo. En nuestro caso, el nombre del archivo seria: Welcome.java 1 // indica que el resto de la lnea es un comentario. 2 Java contiene muchos componente predefinidos llamados clases que se agrupan mediante directorios de disco en categoras de clases relacionadas entre si llamadas paquetes. Llamamos a los paquetes bibliotecas de clase de java o interfaz de programacin de aplicaciones de Java (Java API). Las lneas: 2 import java.applet.Applet; 3 import java.awt.Graphics; //importar la clase Applet //importar la clase Graphics

son enunciados import, que cargan las clases necesaria para compilar un programa de Java. Estas lneas le dicen al compilador que debe cargar la clase Applet del paquete java.applet y la clase Graphics del paquete java.awt. Para crear una applet en java es necesario importar la clase Applet. Importamos la clase Graphics para que el programa pueda exhibir informacin en la pantalla. 3 La lnea public class Welcome extends Applet { inicia una definicin class de applet para la clase Welcome. La palabra clave class (clase) introduce una definicin de clase en java y va seguida inmediatamente por el nombre de la clase (Welcome). Todo programa en java debe tener por lo menos una definicin de clase. Cuando creamos una definicin de clase, siempre utilizamos partes de una definicin de clase ya existente. Java proporciona un mecanismo llamado herencia para crear clases nuevas que utilizan parte de definiciones de clase ya existentes. La palabra clave extends (extiende) seguida de un nombre de clase indica

Programacin Orientada a Objetos TSC

PROGRAMAR EN JAVA 22 MAYO 2011 la clase de la cual nuestra nueva clase heredara algunas partes. Todas la applets de java deben heredar de la clase Applet, en la relacin de herencia Applet es la superclase o clase base y Welcome es la subclase o clase derivada. Las clases sirven para ejemplarizar ( o crear) objetos en la memoria que se usaran en un programa. Un objeto es una regin de la memoria de la computadora en la que se almacena informacin para ser utilizada por el programa. Nuestra clase Welcome sirve para crear un objeto que ejecuta la applet. El navegador en el que ejecutamos la applet es el que se encarga realmente de crear un ejemplar de la clase Welcome para nosotros. La palabra clave public (publica) permite al navegador crear y ejecutar nuestra applet. En Java la clase principal de applets ( la que hereda de Applet) siempre es una clase publica. La llave izquierda { inicia el cuerpo de toda definicin de clase. Una llave derecha } correspondiente debe terminar toda definicin de clase. 4 La lnea public void paint(Graphics g) Introduce un bloque de construccin de programa llamado mtodo. Los programas java contienen por lo menos un mtodo que realiza tareas durante la ejecucin de la applet. Este programa contiene el mtodo paint (pintar) el cual es invocado automticamente durante la ejecucin de la applet y sirve para exhibir informacin en la pantalla. Los mtodos pueden realizar tareas y devolver informacin cuando completan sus tareas. La palabra clave void (vaci) indica que este mtodo realiza una tarea, pero que no devuelve ninguna informacin al terminarla. El juego de parntesis despus de paint define la lista de parmetros del mtodo. La lista de parmetros sirve para que el mtodo reciba la informacin que necesita para llevar a cabo sus tareas. La lista de parmetros indica que requiere un objeto Graphics (que se llama g) para realizar su tarea. La palabra clave public es necesaria para que el navegador pueda invocar automticamente el mtodo paint. La llave { inicia el cuerpo de la definicin del mtodo. La llave } debe terminar el mtodo. La lnea: g.drawString( "Bienvenidos a la programacin en JAVA", 25, 25 ); Ordena a la computadora realizar una accin, a saber, usar el mtodo drawString (dibujar cadena) del objeto Graphics g para dibujar la cadena de caracteres contenida entre el par de comillas. La lnea completa es un enunciado. Todo enunciado debe terminar con un punto y coma (;) . Al ejecutarse el enunciado anterior, se exhibe el mensaje Bienvenidos a la programacin en JAVA en las coordenadas 25 y 25.

Programacin Orientada a Objetos TSC

PROGRAMAR EN JAVA 22 MAYO 2011 Las coordenadas se miden a partir de la esquina superior izquierda de la applet en pixeles. Un pxel (o elemento de imagen) es la unidad de exhibicin en la pantalla de una computadora. En una pantalla a color un pxel aparece como un punto colorido. Por ejemplo muchas computadoras personales tienen pantallas con una anchura de 640 pixeles y una altura de 480 pixeles, para un total de 640 x 480 = 307,200 elementos de imagen exhibibles. Cuan mayor es la definicin de la pantalla, mas pequea se vera la applet en la pantalla. La primera coordenada siempre es la coordenada x y la segunda es la coordenada y. Despus de compilar el programa es necesario crear un archivo HTML (Hypertext Markup Language, Lenguaje de marcado de hipertexto) para cargar la applet en un navegador y ejecutarla. Los navegadores leen archivos de texto. Archivo Welcome.html que carga la clase applet Welcome 1 <html> 2 <applet code = Welcome.class width=275 height=35> 3 </applet> 4 </html> Las lneas 1 y 4 indican el principio y final de las condiciones HTML. Las lneas 2 y 3 son etiquetas HTML especiales para las applets de Java; le indican al navegador que deben cargar una applet especfica y definen el tamao de la applet en el navegador. La primera parte ( code= Welcome.class) indica el archivo que contiene la clase de applet compilada que hemos definido. Cuando compilamos un programa en Java, cada clase se compila en un archivo individual que tiene el mismo nombre que la clase y termina con la e extensin .class. La segunda y tercera parte indican la anchura (width) y la altura (height) de la applet en pixeles. La esquina superior izquierda de la applet siempre esta en la coordenada x 0 y en la coordenada y 0. Para demostrar nuestra applet, usamos el comando appletviewer del Java Developers Kit (JDK). Es un programa que prueba applets de Java; solo entiende la etiqueta HTML applet, por lo que tambin se conoce como el navegador mnimo. Invocamos appletviewer para la applet Welcome desde la lnea de comando de nuestra computadora. Appletviewer Welcome.html El mensaje Bienvenidos a la programacin en Java se puede imprimir de varias formas. Dos enunciados drawString en el mtodo paint pueden imprimir mltiples lneas: 1 2 3 4 5 6 7 //Un primer programa en Java import java.applet.Applet; import java.awt.Graphics;

//importar la clase Applet //importar la clase Graphics

public class Welcome extends Applet { public void paint(Graphics g) {

Programacin Orientada a Objetos TSC

PROGRAMAR EN JAVA 22 MAYO 2011 8 9 10 11 } g.drawString( "Bienvenidos a ", 25, 25 ); g.drawString(la programacin en JAVA, 25, 40); }

Otro programa en Java: Suma de enteros Nuestro siguiente programa toma enteros que el usuario digita en el teclado, calcula la suma de estos valores y exhibe el resultado. Cuando el usuario teclea un entero y presiona Enter, el programa lee el entero y lo suma al total. Este programa emplea algunos componentes de interfaz grafica con el usuario (GUI) de la Java API. Los componentes de GUI son piezas que facilitan la introduccin de datos por parte del usuario del programa y la salida de datos por parte del programa. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 // Programa de suma import java.awt.*; //importar el paquete java.awt import java.applet.Applet; public class Addition extends Applet { Label prompt; //solicitar entrada al usuario TextField input; //introducir valores aqu int number; //almacenar valor introducido int sum; //almacenar suma de enteros //preparar componentes de interfaz grafica de usuario // e inicializar variables public void init() { prompt = new Label ("Teclee un entero y pulse Enter:"); input = new Textfield(10); add( prompt ); //poner prompt (solicitud) en la applet add( input ); //poner input (entrada) en la applet sum = 0; //hacer sum igual a cero } //procesar la accin del usuario en el campo de texto de entrada public boolean action( Event e, Object o ) { number = Integer.parseInt( o.toString() ); //obtener numero input.setText( "" ); //despejar campo de entrada de datos sum = sum + number; //suma number a sum showStatus( Integer.toString( sum ) ); //mostrar resultado return true; //indica que la accin del usuario se proceso } }

Programacin Orientada a Objetos TSC

PROGRAMAR EN JAVA 22 MAYO 2011 Import java.awt.*; Importa el paquete java.awt con todas las clases del paquete para la compilacin. Aqu se usaran las clases TextField y Label del paquete java.awt. Cuando importamos un paquete completo, el compilador solo importa las clases que se usan en el programa. Label y TextField son objetos con informacin que el programa usa. Las variables y los objetos son similares solo que un objeto se define mediante una definicin de clase que puede contener tanto informacin como mtodos, una variable se define mediante un tipo de datos primitivos (o integrado) . Cada elemento de datos en un programa Java es un objeto, con excepcin de las variables de tipo primitivo. TextField (campo de texto) sirven para obtener informacin que el usuario introduce mediante el teclado, o para exhibir informacin en la pantalla. Label (rotulo) contiene una literal de cadena que se exhibe en la pantalla. Normalmente cada rotulo esta asociado a otro elemento de la interfaz grafica en la pantalla ( como el campo de texto en este programa). Una variable debe de ser declarada antes de ser utilizada y termina con un punto y coma (;). Un nombre de variable o de referencia es cualquier identificador valido . Un identificador es una serie de caracteres que consiste en letras, dgitos, subrayados (_) y signos de dlar ($) que no comienzan con un digito. Permite identificadores de cualquier longitud y es sensible a maysculas y minsculas. Es posible colocar declaraciones en una definicin de mtodo pero debe aparecer antes que se use dicha variable. Esta applet contiene dos mtodos init y action. El mtodo init se incluye en una applet para inicializar las variables y referencias que se usan en la applet, se invoca automticamente cuando la applet comienza su ejecucin, y se garantiza que ser el primer mtodo invocado. De hecho las applets siempre comienzan con una serie de tres llamadas a mtodos: init, start y paint . Si no definimos cualquiera de estos tres mtodos, obtendremos de la clase Applet una versin gratuita del mtodo, el cual no har nada. Esta es una de las razones por las que heredamos todas las applets de la clase Applet. El mtodo action (accin) procesa interacciones entre el usuario y los componentes de interfaz grafica con el usuario (GUI) de la applet. Una iteracin entre un usuario y un componente GUI genera un evento. Los eventos indican a la applet que el usuario esta interactuando con uno de los componentes de GUI de la applet. Por ejemplo cuando introducimos un valor en el campo de texto y pulsamos ENTER, se enva un evento ( que es un objeto de la clase Event del paquete java.awt) a la applet, indicando que el usuario pulso la tecla enter en el campo de texto. Esto hace que se ejecute de inmediato el mtodo action. Este procesamiento de interacciones del usuario con componentes GUI se conoce como programacin controlada por eventos.

Programacin Orientada a Objetos TSC

PROGRAMAR EN JAVA 22 MAYO 2011 La lnea: prompt = new Label ("Teclee un entero y pulse Enter:"); crea un objeto Label que se inicializa con la literal Teclee un entero y pulse Enter:" Usamos esta cadena para rotular el campo de texto input en la applet. El operador new crea un objeto durante la ejecucin del programa pidindole a la computadora suficiente memoria para almacenar un objeto del tipo que se especifica a la derecha de new. El valor entre parntesis se usa para inicializar el objeto creado. La lnea input = new Textfield(10);

Crea un objeto TextField empleando el operador new y asigna el resultado a input. El numero 10 especifica el tamao en caracteres del campo de texto en la pantalla. Las lneas: add( prompt ); add( input ); colocan los componentes label y TextField en la applet para que el usuario pueda interactuar con ellos. El mtodo add es uno de los muchos mtodos de la clase Applet que heredamos cuando definimos la clase Addition. La lnea: public boolean action( Event e, Object o )

Recibe dos argumentos: un Event (evento) y un Object (objeto). El argumento Event sirve para determinar que evento ocurri. Object contiene informacin especifica para el evento. En el programa contiene el texto que estaba en el campo de texto. Object puede ser un objeto de cualquier tipo (excepto variable); es el tipo mas genrico en el lenguaje de Java. El mtodo toString permite convertir cualquier objeto de cualquier tipo de clase en un String (cadena). La lnea number = Integer.parseInt( o.toString() );

Asigna a number el resultado del mtodo Integer.parseInt que convierte su argumento String en un entero. La cadena que se convierte aqu es el resultado del mtodo o.toString() que convierte el Object llamado o en un String. Cualquier referencia a number en el programa utilizara este mismo valor entero. La lnea input.setText( "" );

Utiliza el mtodo SetText de la clase TextField para asignar la cadena vaca al campo de texto input, borrando el texto que el usuario haya dejado en el campo de texto.

Programacin Orientada a Objetos TSC

10

PROGRAMAR EN JAVA 22 MAYO 2011 Despus de realizar el calculo, exhibimos el resultado en la barra de estado que esta en la parte inferior de la ventana de appletviewer ( o del navegador). La lnea showStatus( Integer.toString( sum ) );

Utiliza el mtodo showStatus de la clase Applet para colocar un String en la barra de estado. El String que se exhibe es el resultado del mtodo Integer.toString(sum) que toma el entero sum y lo convierte en un String. La lnea return true;

Le indica a action que devuelva el valor true a la applet cuando haya terminado su tarea. Esto le dice a la applet que ya se proceso la accin del usuario que causo el evento. Como mostrar texto en un cuadro de dialogo. La clase JOptionPane de Java proporciona cuadros de dilogos previamente empaquetados, los cuales permiten a los programas mostrar ventanas que contengan mensajes para los usuarios, en vez de mostrarlos en la ventana de comando. Ejm: // Imprimir varias lneas de texto en un cuadro de dialogo // Paquetes de Java import javax.swing.JOptionPane;

/* El programa usa clase JoptionPane del paquete javax.swing */

public class Welcome { // el mtodo main empieza la ejecucin de la aplicacin en Java public static void main ( String args[] ) { JOptionPane.showMessageDialog ( null, Bienvenido\na\nla programacion\nen Java ); System.exit( 0 ); } } //terminar la aplicacin con la ventana

//Fin del mtodo main

//Fin de la clase Welcome

El paquete javax.swin contiene muchas clases que ayudan a los programadores en Java a crear Interfaces Graficas de Usuario (GUI) para las aplicaciones. El mtodo showMessageDialog de la clase JOptionPane muestra un cuadro de dialogo para mandar el mensaje. Este mtodo requiere dos argumentos, por el momento el primero ser

Programacin Orientada a Objetos TSC

11

PROGRAMAR EN JAVA 22 MAYO 2011 null y el segundo el mensaje. El primer argumento ayuda a la aplicacin den Java a determinar en donde se va a colocar el cuadro de dialogo, cuando es null aparece en el centro de la pantalla. System.exit(0); Se requiere para terminar cualquier aplicacin que muestre una interfaz grafica de usuario. (La clase siempre va en letra mayscula, el mtodo no). La clase System es parte del paquete java.lang, que no fue importada en el programa, ya que se importa en todos los programas de manera predeterminada, siendo el nico paquete que no requiere una declaracin import. El argumento ( 0 ) indica que el programa termino correctamente(un valor distinto indica error). Ejm 2: Suma de enteros // Programa que muestra la suma de dos nmeros // Paquetes de Java import javax.swing.JOption.Pane; public class Suma{ // el mtodo empieza la ejecucin de la aplicacin en Java public static void main( String args[] ) { String pNumero; // primera cadena introducida por el usuario String sNumero; // segunda cadena introducida por el usuario int n1; int n2; int suma; // primer numero a sumar // segundo numero a sumar

// leer el primer numero como una cadena pNumero = JOption.Pane .showInputDialog ( Escriba el primer entero ); // leer el segundo numero sNumero = JOption.Pane .showInputDialog ( Escriba el segundo entero ); // Convertir los nmeros de tipo String a tipo int n1=Integer.parseInt( pNumero ); n2=Integer.parseInt( sNumero ); // Sumar los nmeros suma = n1 + n2; // mostrar el resultado JOptionPane.showMessageDialog ( null, La suma es + suma, Resultados, JOptionPane.PLAIN_MESSAGE );

Programacin Orientada a Objetos TSC

12

PROGRAMAR EN JAVA 22 MAYO 2011 system.exit( 0 ); } // Fin del mtodo main // Fin de la clase suma

El tercer argumento de JOptionPane.showMessageDialog Resultados se coloca en la barra de titulo del cuadro de dialogo. JOptionPane.PLAIN_MESSAGE es el tipo de cuadro de dialogo. Los tipos de cuadros de dilogos se muestran a continuacin:
Tipo de cuadro de dialogo de mensaje Icono

JOptionPane.ERROR_MESSAGE JOptionPane.INFORMATION_MESSAGE

JOptionPane.WARNING_MESSAGE JOptionPane.QUESTION_MESSAGE

Descripcin Muestra un cuadro de dialogo que indica un error al usuario Muestra un cuadro de dialogo con un mensaje informativo para el usuario. Este puede simplemente descartar el cuadro de dialogo. Muestra un cuadro de dialogo que advierte al usuario de un problema potencial Muestra un cuadro de dialogo con un signo de interrogacin para el usuario. Este cuadro de dialogo generalmente requiere una respuesta, como hacer clic en un botn SI o NO

JOptionPane.PLAIN_MESSAGE

Muestra un cuadro de dialogo que simplemente contiene un mensaje, sin icono.

Unidad II: Operadores y Tipos de datos 2.1 Operadores Aritmticos Operacin de Java Suma Resta Multiplicacin Divisin Residuo Operador aritmtico Expresin algebraica + f+7 p-c * bm / x/y % r mod s Expresin en Java f+7 p-c b*m x/y r%s

2.2 Operadores de igualdad y relacionales Operadores algebraicos Operadores en Java Operadores de igualdad = == != Operadores relacionales > > < < >= <=

Ejemplo en Java x==y x != y x>y x<y x >= y x <= y

Programacin Orientada a Objetos TSC

13

PROGRAMAR EN JAVA 22 MAYO 2011

2.3 Operadores de incremento y decremento Operador Llamado Preincremento Posincremento Predecremento posdecremento 2.4 Operadores de Asignacin Operador de Asignacin += -= *= /= %= Expresin de muestra c += 7 d -= 4 e *= 5 f /= 3 g %= 9 Explicacin c=c+7 d=d4 e=e*5 f=f/3 g=g%9
Expresin de muestra

Explicacin
Incrementa a en 1 y luego usa el nuevo valor de a en la expresin en la que a reside Usar el valor actual de a en la expresin en la que reside y luego incrementar a en 1 Decrementar b en 1 y luego usar el nuevo valor de b en la expresin en la que b reside Usar el valor de b en la expresin en la que reside y luego decrementar b en 1

++a a++ --b b--

2.5 Operador condicional (?:). Es el nico operador ternario de Java: requiere tres operndoos. El primer operando es una expresin bolean, el segundo la expresin si la condicin es verdadera y el tercero la expresin si la condicin es falsa. condicin ? expresin V: expresin F System.out.println( calif >= 60 ? Aprobado : Reprobado);

Precedencia de los operadores Operadores () ++ -+ * / % + - (aditivo) < <= > == != ? : condicional = += -=

(unario)

>=

*=

/=

%=

Programacin Orientada a Objetos TSC

14

PROGRAMAR EN JAVA 22 MAYO 2011 2.6 Tipos de datos primitivos Tipo Bolean Char Byte Short Int Long Float Double Tamao en bits 1 16 8 16 32 64 32 64 Valores True o false \u0000 a \uFFFF -128 a +127 -32,768 a 32,767 -2,147,483,648 a +2,147,483,647 -9,223,372,036,854,775,808 a +9,223,372,036,854,775,807 -3.40292347E+38 a +3.40292347E+38 -1.79769313486231570E+308 a +1.79769313486231570E+308

2.7 Secuencias comunes de escape Secuencia \n \t \r \\ \ \ Descripcin Nueva lnea. Coloca el cursor al principio de la siguiente lnea Tabulacin horizontal Retorno de carro. Coloca el cursor al principio de la lnea actual; no avanza a la siguiente lnea Imprime el carcter de diagonal invertida Imprime un carcter de apostrofo Imprime un carcter de comillas Unidad III: Estructuras de Control 3.1 Estructura if if (condicin) enunciado; Ejm: if (calif >= 60) System.out.println( Aprobado);

3.2 Estructura if / else

if (condicin) enunciado V; else Programacin Orientada a Objetos TSC 15

PROGRAMAR EN JAVA 22 MAYO 2011 enunciado F; Ejm: if (calif >= 60) System.out.println( Aprobado); else System.out.println( Reprobado);

3.3 Estructura if / else anidadas if (condicin 1) enunciado 1; else if (condicin 2) enunciado 2; else if (concisin 3) enunciado 3; else enunciado;

Ejm: if (calif >= 90) System.out.println( A ); else if (calif >= 80) System.out.println( B ); else if (calif >= 70) System.out.println( C ); else if (calif >= 60) System.out.println( D ); else System.out.println( F ); Hay que tener cuidado con la interpretacin del compilador, por ejemplo: la siguiente estructura: if ( x > 5 ) if ( y > 5 ) System.out.println( x y y son > 5 ); else System.out.println( x es <= 5 ); pareciera que si x es menor o igual a 5 se imprimira el mensaje x es >= 5, pero el compilador la interpreta de la siguiente manera:

Programacin Orientada a Objetos TSC

16

PROGRAMAR EN JAVA 22 MAYO 2011 if ( x > 5 ) if ( y > 5 ) System.out.println( x y y son > 5 ); else System.out.println( x es <= 5 );

Es decir que si x es mayor que 5 entra a la segunda condicin y el mensaje x es <=5 se imprimir si la segunda condicin es falsa. Para imprimir correctamente se deber aadir llaves. Ejm: if ( x > 5 ) { if ( y > 5 ) System.out.println( x y y son > 5 ); } else System.out.println( x es <= 5 ); Si se desean incluir varios enunciados en el cuerpo de un if, debemos encerrarlos entre llaves . Un grupo de enunciados contenidos dentro de un par de llaves es un enunciado compuesto. Ejm: if ( calif >= 60 ) System.out.println( Aprobado ); Else { System.out.println( Reprobado ); System.out.println( Debe cursar otra vez la materia ); } 3.4 Estructura de repeticin while while (condicin) sentencia; o while (condicin) { sentencia 1; sentencia 2; sentencia N; } 3.5 Estructura de repeticin for for ( inicializacin de la variable contadora; condicin; incremento de la variable contadora) enunciado; for( int j=2; j <= 8; j++) { g.drawString( integer.toString( j ), 25, yPos); yPos += 15;

Programacin Orientada a Objetos TSC

17

PROGRAMAR EN JAVA 22 MAYO 2011 } for( int i = 7, i>= 2; i--)

3.6 Estructura de repeticin do / while do{ enunciado } while (condicin);

3.7 estructura de seleccin mltiple switch switch (expresin) { case valor1: sentencia; break; case valor2: case valor3: sentencia; break; default: sentencia; break; } 3.8 Enunciados break y continue rotulados break solo puede causar la salida de la estructura while, for, do/while o switch que lo encierra directamente. Si queremos salir de una serie de estructuras anidadas o cclicas, podemos usar break rotulado, utilizando break stop; continue continua con la siguiente iteracin de la estructura while, for o do/while

Unidad IV: Mtodos 4.1 Mdulos de programas en Java

Programacin Orientada a Objetos TSC

18

PROGRAMAR EN JAVA 22 MAYO 2011 Hay dos tipos de mdulos en Java: mtodos y clases. La API de java proporciona una vasta coleccin de clases que contienen mtodos para realizar clculos matemticos, manipulaciones de cadenas, manipulaciones de caracteres, operaciones de entrada / salida, comprobacin de errores y muchas otras operaciones tiles. Las clases de la API de Java forman parte del Kit de desarrollo de software para Java 2 (J2SDK), el cual contiene miles de clases preempacadas. Los mtodos tambin conocidos como funciones o procedimientos permiten al programador dividir un programa en mdulos, por medio de la separacin de sus tareas en unidades autnomas, tambin conocidas como mtodos declarados por el programador. Las instrucciones que implementan los mtodos se escriben solo una vez y estn ocultas de otros mtodos. Entre las razones para crear un programa en mdulos por medio de los mtodos es la metodologa divide y vencers hace que el desarrollo de programas sea mas fcil de administrar. Otra razn es la reutilizacin de software (usar los mtodos existentes como bloques de construccin para crear nuevos programas). Un mtodo se invoca o se llama mediante la llamada a un mtodo, especificando el nombre del mtodo y proporcionando informacin (argumentos) que el mtodo llamado requiere para realizar su tarea. Una vez que se ha completado la llamada, el mtodo devuelve el resultado al solicitante ( o mtodo que hizo la llamada) o simplemente le devuelve el control. 4.2 Mtodos de la clase Math Permite realizar clculos comunes. Para llamar a un mtodo se escribe su nombre seguido de un parntesis de apertura, despus su argumento ( o una lista de argumentos separados por comas) y al final un parntesis de cierre. Ejm: 1. Math.sqrt (900.00 ) Raz cuadrada de 900.00

2. System.out.println( Math.sqrt( 900.00)); No es necesario importar la clase Math para utilizar sus mtodos. Math es parte del paquete java.lang, el cual se importa automticamente por el compilador. Los argumentos pueden ser constantes, variables o expresiones. Ejm: 3. System.out.println( Math.sqrt( c + d * f ); mtodo abs( x ) ceil( x ) cos( x ) Ejemplo abs( 23.7 ) es 23.7 abs( -23.7 ) es 23.7 Redondear x al entero mas pequeo que no sea ceil( 9.2 ) es 10.0 menor de x ceil( -9.8) es -9.0 Coseno trigonomtrico de x (x esta en radianes) cos( 0.0 ) es 1.0
Valor absoluto de x (float, int, long)

Descripcin

Programacin Orientada a Objetos TSC

19

PROGRAMAR EN JAVA 22 MAYO 2011 exp( x ) floor( x ) log( x )


mtodo exponencial ex

max( x, y ) min( x, y ) pow( x, y ) sin( x ) sqrt( x ) tan( x )

exp( 1.0 ) es 2.71828 exp(2.0 ) es 7.38906 Redondea x al entero mas grande que no sea floor( 9.2 ) es 9.0 mayor de x floor( -9.8 ) es -10.0 Logaritmo natural de x (base e) log( Math.E) es 1.0 log(Math.E * Math.E ) es 2.3 El valor mas grande de x y y (float, int, long) max( 2.3, 12.7 ) es 12.7 max(-2.3, -12.7) es -2.3 El valor mas pequeo de x y y (float, int, long) min( 2.3, 12.7 ) es 2.3 min(-2.3, -12.7) es -12.7 X elevado a la potencia de y (xy) pow( 2.0, 7.0 ) es 128.0 pow( 9.0, 0.0 ) es 3.0 Seno trigonomtrico de x ( x esta en radianes) sin( 0.0 ) es 0.0 Raz cuadrada de x sqrt( 900.00 ) es 30.0 sqrt( 9.0 ) es 3.0 Tangente trigonometrica de x ( x esta en tan( 0.0) es 0.0
radianes)

Constante (3.14159265358979323846) Math.PI Constante (2.7182818284590452354) Math.E 4.3 Formato general de la declaracin de un mtodo definido por el usuario

Tipo-de-valor-de-retorno nombre-del-mtodo (parametro1,parametro2, , parametroN) { Declaraciones e instrucciones; [ return expresin;] } Los mtodos pueden devolver como mximo un valor. Los parmetros se declaran en una lista separada por comas, encerrada entre parntesis, que declara el tipo y nombre de cada uno de los parmetros. Debe haber un argumento en la llamada al mtodo para cada parmetro en la declaracin del mtodo, cada argumento debe ser compatible con el tipo del parmetro correspondiente. Se han visto tres maneras de llamar a un mtodo: 1. El nombre del mtodo por si solo cuadrado (contador) 2. la referencia a un objeto seguido de un punto y el nombre del objeto g.drawLine(15,10,20,10) 3. El nombre de la clase calificando al nombre de un mtodo Integer.parseInt(pnumero)

Programacin Orientada a Objetos TSC

20

PROGRAMAR EN JAVA 22 MAYO 2011 4.4 Promocin de argumentos La promocin o coercin de argumentos es forzar a que se pasen argumentos del tipo apropiado a un mtodo. Las reglas de promocin se aplican a las expresiones que contienen valores de dos o mas tipos primitivos y a los valores de tipos primitivos que se pasan como argumentos a los mtodos. El tipo de cada valor en una expresin se promueve al tipo mas alto en la expresin. Promociones permitidas para los tipos primitivos Tipo double Float long int char short byte boolean promocin valida Ninguna Doubl Flota o doubl long, float, o double int, long, flota o double int, long, float o double short, int, long, float o double Ninguno Unidad V: Arreglos

5.1

Introduccin

Los arreglos son estructuras de datos que consisten de elementos de datos relacionados, del mismo tipo. Son entidades de longitud fija, conservan siempre la misma longitud una vez creados. En Java los tipos de datos se dividen en dos categoras tipos primitivos y tipos de referencia. Los arreglos en Java son objetos, por lo que se consideran como tipos de referencia. Para hacer referencia a un elemento especifico en un arreglo, debemos especificar el nombre de la referencia al arreglo y el numero de la posicin del elemento especifico en el arreglo. El numero de la posicin del elemento se conoce formalmente como el ndice o subndice del elemento. El primer elemento en cualquier arreglo tiene el ndice cero. Un ndice debe ser un entero positivo o una expresin entera que pueda promoverse a un int. Ejm: c[ 5 ] = 3; c[ a + b ] += 2;

5.2

Declaracin y creacin de arreglos

Los objetos arreglo ocupan espacio en memoria. Todos los objetos en Java deben crearse con la palabra clave new. El programador especifica el tipo de cada elemento y el numero de

Programacin Orientada a Objetos TSC

21

PROGRAMAR EN JAVA 22 MAYO 2011 elementos que se requieren para el arreglo, como parte de una expresin para crear un arreglo que utiliza la palabra clave new. Ejm: int c[] = new int [ 12 ]; int c[]; c = new int [ 12 ]; Un programa puede crear varios arreglos en una sola declaracin: String b [] = new String[ 100 ], x [] = new String [ 27 ]; Al declarar un arreglo, su tipo y los corchetes pueden combinarse al principio de la declaracin para indicar que todos los identificadores en la declaracin son referencias a arreglos. double[] arrego1, arreglo2; Al crear un arreglo cada uno de sus elementos recibe un valor predeterminado: cero para los elementos numricos de tipos primitivos. false para los elementos bolean y null para las referencias (cualquier tipo de primitivo). 5.3 Como pasar arreglos a los mtodos Para pasar un arreglo como argumento a un mtodo, se especifica el nombre del arreglo sin corchetes. Ejemplo: int temperatura[] = new int[ 24 ]; llamada al mtodo modificarArreglo(temperatura); aunque los arreglos completos se pasan por referencia, los elementos individuales de los arreglos de tipos primitivos se pasan por valor, de la misma forma que se pasan las variables simples. Para que un mtodo reciba un arreglo mediante una llamada: void modificarArreglo( int b[] ) o

5.4 Arreglos Multidimensionales Constan de informacin ordenada en filas y columnas. Para identificar un elemento especifico de una tabla, se deben identificar dos ndices [fila, columna].

Programacin Orientada a Objetos TSC

22

PROGRAMAR EN JAVA 22 MAYO 2011 Creacin de un array bidimensional int b[]; b = new int [3][4]; al igual que los array unidimensionales , los bididimensionales pueden tambin ser inicializados en la declaracin: int b[]= { { 1, 2 }, { 3, 4 } }; b[0][0]=1 b[0]1 ]=2 b[1][0]=3 b[1][1]=4 En Java, los arrays multidimensionales se mantienen como arrays de arrays unidimensionales. Por lo tanto el array b en la declaracin anterior en realidad esta compuesto de 3 arrays unidimensionales separados. El array b en si es un array unidimensional que contiene dos elementos. Cada elemento es una referencia a un array unidimensional de variables int. Arrays bidimensionales con filas de distintas longitudes Las longitudes de las filas en un array no tienen que ser iguales. Ejm: int b[]= { { 1, 2 }, { 3, 4, 5 } }; crea el array entero b con 2 elementos (los cuales se determinan segn el numero de inicializadotes de arrays anidados) que representan las filas del array bidimensional. Cada elemento de b es una referencia a un array unidimensional de variables int. El array int de la fila 0 es un array unidimensional de 2 elementos (1 y 2), y el array int de la fila 1 es un array unidimensional con 3 elementos (3, 4 y 5). Un array bidimensional en que cada fila tiene un numero distinto de columnas, puede crearse de la siguiente manera: int b[]; b = new int [2][ ]; // crea dos filas b[0] = new int[ 5 ]; //crea 5 columnas para la fila 0 b[1] = new int[ 33]; //crea 5 columnas para la fila 1

Programacin Orientada a Objetos TSC

23

PROGRAMAR EN JAVA 22 MAYO 2011 Unidad VI: Programacin basada en Objetos

6.1 Introduccin En los lenguajes de programacin por procedimientos ( como C ) la programacin tiende a ser orientada a la accin, siendo la unidad de programacin la funcin. Sin embargo la programacin en Java esta orientada a objetos, siendo la unidad de programacin la clase. Los objetos eventualmente se instancian ( es decir se crean) a partir de estas clases, y los atributos y comportamientos estn encapsulados dentro de los limites de las clases, en forma de campos y mtodos. Los programadores en Java se concentran en la creacin de sus propios tipos de referencia, mejor conocidos como clases. Cada clase contiene como sus miembros a un conjunto de campos (variables) y mtodos que manipulan esos campos. 6.2 Anlisis de la clase Tiempo1 Los programas en Java utilizan la herencia para crear clases a partir de clases existentes. public class Tiempo1 extends Object // paquete java.lang

Cualquier informacin que coloquemos en el cuerpo se dice que esta encapsulada. Esta clase contiene 3 variables enteras privadas que representan la hora en formato de hora universal (formato de reloj de 24 horas). Anteriormente nos referamos a las variables declaradas en la declaracin de una clase, pero no dentro de las declaracin de un mtodo, como campos. Las variables declaradas private solo pueden ser utilizadas por los mtodos de la clase en la que estn declarados. (ocultamiento de los datos). Cuando un programa crea (instancia) un objeto de la clase Tiempo1, dichas variables se encapsulan en el objeto y pueden utilizarse solo mediante mtodos de la clase de ese objeto (comnmente a travs de los mtodos public de la clase). Por lo general los campos se declaran como private y los mtodos como public. La clase Tiempo1 contiene el constructor Tiempo1 y los mtodos establecerHora, aStringUniversal, aStringEstandar. Estos son los mtodos public (conocidos como servicios public o interfaces public) de la clase. Los clientes de la clase Tiempo1 como la clase PruebaTiempo1 utilizan los mtodos public para manipular los datos almacenados en objetos Tiempo1 o para hacer que la clase Tiempo1 realice algn servicio. Los clientes de una clase utilizan referencias para interactuar con un objeto de la clase. Por ejemplo el mtodo paint de Graphics utiliza su argumentos (Graphics g) para dibujar el applet, llamando a los mtodos que son servicios public de la clase Graphics (drawString, drawLine, drawOval).

Programacin Orientada a Objetos TSC

24

PROGRAMAR EN JAVA 22 MAYO 2011 Un constructor inicializa los objetos de una clase. Cuando un programa crea un objeto de la clase Tiempo1, la instruccin new asigna memoria para el objeto y llama al constructor para que inicialice a ese objeto. El constructor de la clase Tiempo1 llama al mtodo establecerHora para inicializar las variables de instancia hora, minuto y segundo como 0 (representando la medianoche) (una diferencia importante entre los constructores y los mtodos es que los constructores no pueden especificar un tipo de valor de retorno (ni siquiera void). El nombre del constructor debe ser el mismo que el de la clase. Y por lo general se declaran como public. Como utilizar la clase Tiempo1 Despus de declara la clase, podemos utilizarla como un tipo en las declaraciones como: Tiempo1 puestaDeSol; // referencia a un objeto Tiempo1

El nombre del la clase (Tiempo1) es un nombre de tipo. Una clase puede producir muchos objetos, de igual forma que un tipo primitivo, como int. Puede producir muchas variables. El mtodo main de la clase PruebaTiempo1 declara y crea una instancia de la clase Tiempo1 llamada tiempo. Al instanciar el objeto, new asigna la memoria en la que el objeto Tiempo1 se almacenara, despus llama al constructor de Tiempo1 para inicializar las variables de instancia del nuevo objeto Tiempo1. El constructor invoca el mtodo establecerHora para inicializar cada variable de instancia explcitamente con 0. Despus new regresa una referencia al nuevo objeto y esa referencia se asigna a tiempo. De manera similar se utiliza new para crear objetos DecimalFormat y pasar el argumento 00 al constructor de cada objeto para indicar el patrn utilizado para dar formato. Observe que el archivo PruebaTiempo1.java no importa la clase Tiempo1. Si una clase se encuentra en el mismo paquete que la clase que la va a utilizar, la declaracin import no se requiere. Toda clase en Java es parte de un paquete. Si un programador no especifica un paquete para una clase, esta se coloca en un paquete predeterminado sin nombre, el cual incluye a todas las clases compiladas en el directorio actual, que no se hayan colocado explcitamente en un paquete. La clase Tiempo1 es nuestro primer ejemplo de una clase que no es un applet, y que no contiene un mtodo main. La clase PruebaTiempo1 declara al mtodo main, por lo que PruebaTiempo1 puede utilizarse para iniciar la ejecucin del programa. El mtodo main se conoce como el punto de entrada en el programa. Una clase que contiene a main se conoce como una clase de aplicacin o clase ejecutable. Los mtodos aStringUniversal y aStrinEstandar no toman argumentos. Estos mtodos pertenecen a la misma clase que las variables de instancia hora, minuto y segundo, por lo tanto tienen, en forma implcita, acceso a las variables de instancia del objeto Tiempo1 especifico en el que se invoquen.

Programacin Orientada a Objetos TSC

25

PROGRAMAR EN JAVA 22 MAYO 2011 El siguiente ejemplo consiste de dos clases: Tiempo1 y PruebaTiempo1 La clase Tiempo1 se utiliza para crear objetos que representan la hora. La clase PruebaTiempo1 es una clase de aplicacin, en la cual el metodo main crea un objeto de una clase Tiempo1 e invoca a sus metodos. Estas clases deben declararse en archivos separados, ya que ambas son clases publicas.
// Tiempo1.java // Declaracion de la clase Tiempo1 que mantiene la hora en formato de 24 horas. import java.text.DecimalFormat; public class Tiempo1 extends Object { private int hora; // 0 - 23 private int minuto; // 0 - 59 private int segundo; // 0 - 59 /* El constructor de Tiempo1 inicializa cada variable de instanciaen cero;se asegura de que cada objeto Tiempo1 inicie en un estado consistente */ public Tiempo1() { establecerHora( 0, 0, 0 ); } /* Establecer un nuevo valor de tiempo utilizando hora universal; realizar comprobaciones de validez en los datos; establecer valores invalidos en cero */ public void establecerHora( int h, int m, int s ) { hora = ( ( h >= 0 && h < 24 ) ? h : 0 ); minuto = ( ( m >= 0 && m < 60 ) ? m : 0 ); segundo = ( ( s >= 0 && s < 60 ) ? s : 0 ); } // convertir a String en formtato de hora universal public String aStringUniversal() { DecimalFormat dosDigitos = new DecimalFormat( "00" ); return dosDigitos.format( hora ) + ":" + dosDigitos.format( minuto ) + ":" + dosDigitos.format( ssegundo ); } // convertir a String en formato de hora estandar public String aStringEstandar() { DecimalFormat dosDigitos = new DecimalFormat( "00" ); return ( (hora == 12 || hora == 0) ? 12 : hora % 12 ) + ":" + dosDigitos.format( minuto ) + ":" + dosDigitos.format( segundo ) + ( hora < 12 ? " AM" : " PM" ); } } // fin Tiempo1

Programacin Orientada a Objetos TSC

26

PROGRAMAR EN JAVA 22 MAYO 2011

// PruebaTiempo1.java // Calse PruebaTiempo1 que utiliza la clase Tiempo1 import javax.swing.JOptionPane; public class PruebaTiempo1 { public static void main( String args[] ) { Tiempo1 tiempo = new Tiempo1(); // llamar al constructor de Tiempo1 // anexar version String de tiempo a salida String String salida = "La hora universal inicial es: " + tiempo.aStringUniversal() + "\nLa hora estandar inicial es" + time.aStringEstandar(); // cambiar tiempo y anexar hora actualizada a salida tiempo.establecerHora ( 13, 27, 6 ); salida += "\n\nLa hora universal despus de establecerHora es: " + tiempo.aStringUniversal() + "\nLa hora estandar despus de establecer hora es" + tiempo.aStringEstandar(); // establecer tiempo con valores invalidos; anexar tiempo actualizado // a salida Tiempo.establecerHora( 99, 99, 99 ); salida += "\n\nDespues de intentar ajustes invalidos: " + "\nHora universal: " + tiempo.aStringUniversal() + "\nTiempo estandar: " + tiempo.aStringEstandar(); JOptionPane.showMessageDialog( null, salida, "Prueba de la clase Tiempo1", JOptionPane.INFORMATION_MESSAGE ); System.exit( 0 ); } // end main } // end class PruebaTiempo1 6.3 REFERENCIAS A LOS MIEMBROS DEL OBJETO ACTUAL MEDIANTE THIS Todo objeto puede hacer referencia a si mismo, mediante la palabra clave this ( lo que se conoce como una referencia this). En un mtodo esta referencia puede usarse en forma implcita y explicita para hacer referencia a las variables de instancias y otros mtodos del objeto en el cual se haya llamado el mtodo. Si un mtodo contiene una variable local como el mismo nombre que un campo de esa clase, ese mtodo se referir a la variable local, en vez de referirse al campo. En este caso, la variable local sombrea al campo en el alcance de ese mtodo. Sin embargo el mtodo puede utilizar a this para hacer referencia al campo sombreado en forma explicita ( como se muestra en las lneas 31 a 33). El mtodo crearCadena( lnea 37 a 41) devuelve un String creando por una instruccin que utiliza la referencia this en forma explicita e implcita. En la lnea 39 se utiliza this explcitamente para llamar al mtodo aStringEstandar. Sin embargo en la lnea 40 se utiliza a this en forma implcita para llamar al mismo mtodo. Ambas lneas realizan la misma tarea. Por lo tanto generalmente no se utiliza this en forma explicita para hacer referencia a los mtodos dentro del objeto actual.

Programacin Orientada a Objetos TSC

27

PROGRAMAR EN JAVA 22 MAYO 2011


Para un mtodo en el cual un parmetro o variable local tengan el mismo nombre que un campo de clase, debe usar la referencia this si desea tener acceso al campo de la clave, de no ser as, estar haciendo referencia al parmetro o variable local del mtodo. Evitar los nombres de parmetros o variables locales en los mtodos que tengan conflicto con los nombres de los campos, ayuda a prevenir errores sutiles , difciles de localizar. // PruebaThis.java // Uso de la referencia this para hacer referencia a los campos y metodos. import javax.swing.*; import java.text.DecimalFormat; public class PruebaThis { public static void main( String args[] ) { HoraSimple hora = new Horasimple( 12, 30, 19 ); JOptionPane.showMessageDialog( null, hora.crearCadena(), "Demostracin de la referencia \"this\" ", JOptionPane.INFORMATION_MESSAGE ); System.exit( 0 ); } } // fin de la calse PruebaThis

Programacin Orientada a Objetos TSC

28

PROGRAMAR EN JAVA 22 MAYO 2011


// la clase HoraSimple muestra el uso class HoraSimple { private int hora; private int minuto; private int segundo; de la referencia "this"

/* el constructor utiliza nombres de parmetros identicos a los nombres de la variable de instancia; se requiere la referencia this para diferencia entre los nombres */ public Horasimple( int hora, int minuto, int segundo ) { this.hora = hora; // establecer hora del objeto "this" this.minuto = minuto; // establecer minuto del objeto "this" this.segundo = segundo; // establecer segundo del objeto "this" } /* usar this explicito e implicito para llamar al metopdo aStringEstandar */ public String crearCadena() { return "this.aStringEstandar(): " + this.aStringEstandar() + "\naStringEstandar(): " + aStringEstandar(); } // devolver la representacin String de HoraSimple public String aStringEstandar() { DecimalFormat dosDigitos = new DecimalFormat( "00" ); /* "this" no se requiere aqu, ya que el metodo no tiene variables locales con los mismos nombres que las variables de instancia */ return dosDigitos.format( this.hora ) + ":" + dosDigitos.format ( this.minuto ) + ":" + dosDigitos.format( this.segundo ); } } // fin de la clase Horasimple

Programacin Orientada a Objetos TSC

29

You might also like