Professional Documents
Culture Documents
Programacin procedimental.
En los primeros das de la programacin, los programas se diseaban usando diagramas de flujo y un diseo top-down. Con este tipo de diseo, un gran problema era resuelto dividindolo en pequeas tareas. Para cada una de estas pequeas tareas, se escriba un procedimiento. Un procedimiento principal y subsecuentemente fluir hasta la solucin, invocando los procedimientos deseados en el camino. A este tipo de programacin se le denominaba programacin procedimental. La programacin procedimental involucra escribir un procedimiento que desarrolla una tarea especfica. Cualquier dato que el procedimiento necesite usar es introducido al procedimiento necesite usar es introducido por medio de sus parmetros. El procedimiento puede ver y cambiar el dato recibido y opcionalmente devolver un valor al cdigo que lo invoc. Escribir un procedimiento para resolver una tarea especfica es un concepto de programacin fundamental usado tanto en lenguajes procedimentales como en
programacin orientada a objetos.Mientras disee y escriba programas en Java, los procedimientos sern un elemento esencial para resolver el problema que se tiene.
Los atributos de un objeto se convierten en campos en la clase correspondiente. Un campo dentro de una clase consiste en lo siguiente:
1. Un especificador de acceso, el cual puede ser pblico, privado, o protegido; o el especificador de acceso puede ser omitido, dando al campo el acceso default. 2. Un tipo de datos. 3. Un nombre, el cual es cualquier identificador vlido, seguido por un punto y coma. Los especificadores de acceso sern estudiados ms adelante, por lo que de momento usaremos el acceso pblico para campos y mtodos. El especificar acceso pblico permite el acceso al campo o mtodo desde cualquier otro objeto.
Instanciar un objeto.
En Java, la palabra new es usada para instanciar un objeto. El operador new crea el objeto en memoria y devuelve una referencia al objeto recin creado. Este objeto permanecer en memoria mientras el programa mantenga una referencia al objeto. Las siguientes sentencias declaran una referencia a Empleado y usa la palabra reservada new para asignar la referencia al nuevo objeto Empleado. Empleado e; e = new Empleado();
La referencia e est apuntando hacia el objeto Empleado en memoria. El operador new reserva memoria para el objeto y luego "vaca" la memoria de tal manera que ninguno de los campos del objeto contenga basura. En su lugar, todos los campos tendrn un valor inicial de cero. La tabla siguiente muestra el valor inicial que contendr un campo dependiendo de su tipo de datos.
Tipo de datos byte short int long float double char boolean Referencia de cualquier tipo
Es importante enfatizar que dos entidades estn siendo creadas en memoria: la referencia y el objeto. En las sentencias anteriores, e es declarada como una referencia a un Empleado, lo cual quiere decir que e puede referirse a cualquier objeto Empleado. En la segunda sentencia, e es asignada a un objeto new Empleado.
Empleado e1, e2, e3; String cad; Cada una de las tres referencias consume la misma cantidad de memoria y son esencialmente de tipo de datos entero. Sin embargo, las referencias e1, e2 y e3 pueden referirse slo a objetos Empleado. La referencia cad puede referirse slo a objetosString. Para ilustrar este punto, las siguientes sentencias intentan romper esta regla y no son vlidas: cad = new Empleado(); // No compila e1 = "Millonario"; // No compila Podr creer que al usar el operador cast se podra crear una salida a esta situacin: e1 = new Empleado(); // Vlido cad = e1; // No compila cad = (Empleado) e1; // No compila cad = (String) e1; // No compila Sin embargo, el compilador sabe que los objetos String y los objetos Empleado no son compatibles y generar errores de compilacin en las sentencias previas. Las referencias e1 y e2 son del mismo tipo de datos y pueden ser asignadas entre s. Por ejemplo: e1 = new Empleado(); e2 = e1; // Vlido La referencia e1 es asignada a un objeto new Empleado, y la referencia e2 es asignada a e1. Esto es vlido porque e1 y e2 son ambas referencias a Empleado y por tanto son del mismo tipo de datos. Este objeto new Empleado ahora tiene dos referencias apuntando a l (observe que slo hay un objeto Empleado en memoria porque slo usamos la palabra new una sola vez). El asignar e1 a e2 no crea un nuevo objeto. Se podra haber declarado la referencia e y luego instanciar al objeto Empleado en una sola sentencia.
Empleado e1 = new Empleado(); Esta sentencia crea dos elementos separados en memoria: la referencia e1 y el objeto Empleado. La referencia e1 no es un objeto. El objeto por s mismo no tiene un nombre de variable, y la nica forma de tener acceso y usarlo es utilizando una referencia al objeto. e3 = new Empleado(); e2 = e3; // qu sucede con el primer objeto? e1 = e2; // qu sucede con el primer objeto?
El recolector de basura.
En otros programas se puede efectuar la liberacin de memoria de forma explcita, pero en Java no existe ninguna palabra reservada u operador que pueda ser usado para eliminar un objeto de la memoria. Java fue diseado para evitar los problemas de administracin de memoria que aparecen en otros lenguajes. Una JVM tiene un hilo de bajo nivel conocido como el recolector de basura, que est ejecutndose constantemente en el fondo, buscando objetos objetos en el programa Java que ya no estn siendo usados y liberando esa memoria. El concepto de la recoleccin automtica de basura hace que los programadores se sientan excitados y nerviosos. El recolector de basura es atractivo porque los programadores no tienen que pasar horas tras horas preocupndose sobre cmo resolver problemas de administracin de memoria. Sin embargo, los programadores se sienten nerviosos porque pierden el control de ser capaces de liberar la memoria ser liberada en un programa Java solamente cuando el recolector de basura concluya que la memoria ya no est siendo usada. Un objeto es marcado para ser recogido por el recolector de basura cuando ya no es accesible en el programa. Para que esto suceda, las referencias que an se encuentran dentro del alcance de la aplicacin Java ya no deben referirse al objeto, sino que se les asigna null, se les hace que apunten hacia otro objeto o se hace que salgan de alcance. En Java no se puede liberar memoria de forma explcita. Sin embargo, hay un mtodo que se puede invocar, System.gc(), el cual hace que el recolector de basura "invierta esfuerzos para reciclar objetos que ya no se usan", como lo establece la documentacin del fabricante. El mtodo gc() es muy dependiente de la JVM, de
modo que su comportamiento es difcil de predecir. Sin embargo, es el nico mecanismo para comunicarse con el recolector de basura. public class GCDemo { public static void main(String [] argd) { Empleado e1, e2, e3; e1 = new Empleado(); // Empleado #1 e2 = new Empleado(); // Empleado #2 e3 = new Empleado(); // Emplead0 #3 e2 = e1; e3 = null; e1 = null; } } El programa GCDemo crea tres referencias y las asigna a un nuevo objeto Empleado. La nueva palabra reservada es usada tres veces, por lo que hay tres objetos en el programa. El resultado de asignar e2 a e1 hace que el empleado #2 ya no tenga una referencia a l y pueda ser enviado a la basura en cualquier punto despus de la sentencia e2 = e1. Observe que el empleado e1 ahora tiene dos referencias que apuntan a l. El asignar null a e3 hace que el empleado #3 sea inmediatamente elegible para ser enviado a la basura, porque el objeto ya no puede ser accesible. De hecho, si decide que el objeto debera ser recuperado por alguna razn, es demasiado tarde, ya que no hay manera de reubicar al objeto despus de que todas sus referencias han sido perdidas, El asignar e1 a null no causa que el empleado #1 sea enviado a la basura porque e2 sigue refirindose al objeto. La referencia e2 sale del alcance al final del mtodo main(), de modo que el objeto empleado #1 puede ser enviado a la basura inmediatamente despus de que main() finalice su ejecucin.
2.3. Mtodos.
public void enviarCheque() { System.out.println("Enviar cheque a " + nombre + "\n" + direccion); } public double calcularPago() { return salario/52; } } El programa de demostracin quedara as: public class EmpleadoDemo { public static void main(String [] args) { Empleado e1, e2; e1 = new Empleado(); e2 = new Empleado(); e1.name = "Gustavo Cerati"; e1.direccion = "Calle Principal #123 Santa Tecla"; e1.numero = 101; e1.ISSS = 111223333; e1.salario = 24000.00; System.out.println(e1.calcularPago()); e1.enviarCheque(); e2.nombre = "Jairo Varela"; e2.direccin = "Calle Principal #321 San Miguel"; e2.numero = 202;
e2.ISSS = 333221111; e2.salario = 30000.00; System.out.println(e2.nombre + " " + e2.ISSS); System.out.println(e2.calcularPago()); e2.enviarCheque(); } }
La referencia this.
Cada objeto tiene una referencia a s mismo, representada por la palabra reservada this. La referencia this es usada en los mtodos de una clase cada vez que un mtodo accede a las propiedades u otros mtodos de la clase. Por ejemplo, observe en la clase Empleado que el mtodo calcularPago() accede a la propiedad salario, como se muestra: public double calcularPago() { return salario/52; } La nica forma de acceder a una propiedad o mtodo de un objeto es tener una referencia al objeto. Pero en el mtodo calcularPago(), no se us una referencia para acceder a la propiedad salario. Simplemente se us la propiedad salario, y todo trabaj bien. La razn por la cual todo trabaj bien es porque el compilador se da cuenta que calcularPago() est accediendo a la propiedad salario, por lo que el compilador agrega la referencia. Cul referencia agrega el compilador? Bien, calcularPago() necesita una referencia a cualquier objeto que lo invoque, lo cual en cada caso es la referencia this. El mtodo calcularPago() es similar a lo siguiente:
public double calcularPago() { return this.salario/52; } Observe que la referencia this y el operador punto fueron prefijados a salario. El compilador agrega la referencia this si no la coloca de manera explcita. Puede agregar la referencia this si lo desea, o simplemente puede dejar que el compilador lo haga por usted. Por ejemplo, en la clase Empleado, el mtodo enviarCheque() accede a las propiedades nombre y direccin. En cada caso, la referencia this es usada, ya sea que la agregue al cdigo o que el compilador la agregue. El mtodo enviarCheque() es similar a lo siguiente: public void enviarCheque() { System.out.println("Enviar cheque a " + this.nombre + "\n" + this.direccion); } Observe que las propiedades nombre y direccion estn prefijados con this.
Suponga que main() invoca a un mtodo llamado encender(), y el mtodo encender() invoca a un mtodo establecerVolumen(), el cual a su vez invoca al mtodo println(). Ya que println() est en la parte superior de la pila de llamada, el flujo de control actualmente se encuentra dentro de println(). El mtodo establecerVolumen() est esperando que println() finalice, el mtodo encender() est esperando que establecerVolumen() finalice, y as sucesivamente hasta el fondo de la pila.
Invocando mtodos.
Cuando se invoca a un mtodo, Java lo coloca en la parte superior de la pila de llamada hasta que finaliza su ejecucin. Cuando un mtodo ha finalizado su ejecucin, pueden suceder tres cosas:
1. El mtodo devuelve un valor, en cuyo caso un tipo de datos primitivo o de referencia es devuelto al punto desde donde se invoc al mtodo. 2. El mtodo no devuelve ningn valor, en cuyo caso el valor de retorno es vaco. 3. El mtodo arroja una excepcin, la cual es devuelta al punto desde donde se hizo la llamada al mtodo. En cualquiera de estos casos, el flujo de control regresa al punto desde donde se invoc al mtodo.
Regreso de un mtodo.
En general, hay dos formas que causan el regreso de un mtodo:
1. Al encontrar la llave de cierre del mtodo. 2. Al ejecutar la instruccin return. En un mtodo void, se puede usar la terminacin inmediata de un mtodo empleando la instruccin return, tal como se muestra a continuacin:
System.out.println(i); } } Cuando un mtodo devuelve un valor, se usa la palabra return y el valor devuelto debe coincidir con el tipo de datos del mtodo.
Uso de parmetros.
Aunque los mtodos con un tipo void no son raros, casi todos los mtodos devolvern un valor. En realidad, la capacidad de regresar un valor es una de las caractersticas ms tiles de un mtodo. Es posible pasar uno o ms valores a un mtodo cuando este es llamado. Un valor que pasa a un mtodo es un argumento. Dentro del mtodo, la variable que recibe el argumento es un parmetro. Los parmetros se declaran dentro del parntesis que sigue al nombre del mtodo. class revisarNumero { boolean esPar(int x) { if (x%2 == 0) return true; else return false; } } El programa de demostracin quedara as: public class ParametrosDemo { public static void main(String [] args) {
revisarNumero num = new revisarNumero(); if (numero.esPar(10)) System.out.println("10 es par"); if (numero.esPar(9)) System.out.println("9 es par"); if (num.esPar(8)) System.out.println("8 es par"); } }
Introduccin.
El crecimiento de internet y world wide web cambiaron de manera fundamental la forma de la computacin. En el pasado el ciber paisaje estaba dominado por las PCs independientes y aisladas. Hoy da, casi todas las PCs estn conectadas con internet que se ha transformado por s mismo, pues al principio ofreca una manera conveniente de compartir archivos e informacin y en la actualidad se ha convertido en un universo computacional enorme y distribuido. Con estos cambios, una nueva manera de programar surgi: Java. Java es ms que un lenguaje importante de internet: revolucion la programacin cambiando la manera en la que pensamos acerca de la forma y la funcin de un programa. Hoy da, para ser un programador profesional se requiere la capacidad de programar en Java: as de importante es.
Objetivos.
1. Conocer el lenguaje de programacin java. 2. Crear un programa sencillo en modo consola utilizando el JDK. 3. Compilar un programa con el compilador java. 4. Ejecutar un programa java. 5. Reescribir el programa usando NetBeans. 6. Escribir una aplicacin sencilla en modo grfico utilizando NetBeans.
Procedimiento.
Parte 1 - Uso de JDK. 1. Inicie una sesin de MS-DOS, y utiloce el comando edit para crear un archivo llamado HolaMundo.java con edit. Por ejemplo, presione las teclas Windows + R, escriba cmd y presione enter. A continuacin vaya a la carpeta programacion3 creada recientemente, donde guartaremos los programas (por ejemplo. digite cd \programacion3 y presione enter). Deber obtener una pantalla similar a la mostrada:
. 2. Abra una sesin de edit (en la ventana cmd escriba edit HolaMundo.java y presione enter).
NOTA: Puede usar cualquier procesador de texto, teniendo cuidado de guardar el archivo en modo texto y con la extensin .java. . 3. Escriba el cdigo siguiente:
. 4. Guarde el cdigo anterior, utilizando el men File, Save (Archivo, Guardar). 5. Salga del comando Edit utilizando el men File, Exit (Archivo, Salir).
. 6. Desde la ventana del MS-DOS, compile el archivo anterior utilizando la instruccin siguiente: javac HolaMundo.java
Realice las correcciones necesarias en caso de aparecer algn error. Por ejemplo, si se modifica el programa cambiando el parmetro del mtodo main de String a string, se obtendra el error siguiente:
La lnea anterior genera un archivo ejecutable cuando ya no existe ningn error. Esto lo puede comprobar usando el comando dir.
NOTA: Observe que se genera un error si escribe solamente el nombre del archivo sin usar el comando java, como se muestra en la figura anterior (donde slo se escribi HolaMundo y se presion la tecla enter). . Parte 2 - Uso de NetBeans - Modo Consola (Texto). 1. Abra el IDE de NetBeans. Deber obtener una pantalla similar a la mostrada.
Asegrese que no exista otro proyecto abierto. Si hay algn proyecto abierto debe cerrarlo utilizando las opciones de men File, Close Project (Archivo, Cerrar Proyecto). .
2. Cree un proyecto nuevo. Para ello utilice cualquiera de las opciones siguientes:
o Haga clic sobre el botn New Project (Proyecto Nuevo) (). o En el men de NetBeans seleccione File, New Project (Archivo, Proyecto Nuevo). o Presione la combinacin de teclas Control + Shift + N.
Asegrese de tener seleccionadas las opciones Java, Java Application. . 3. Haga clic en el botn Next >. Digite Saludo como nombre del proyecto y revise que el recuadro Create Main Class no est marcada, tal como se muestra a continuacin:
. 4. Haga clic en el botn Finish (Terminar). 5. Agregue una clase al proyecto. Para ello utilice cualquiera de las opciones siguientes: Haga clic derecho sobre el nombre del proyecto. En el men de NetBeans seleccione Archivo, Archivo Nuevo. Presione la combinacin de teclas Control + N. Haga clic sobre el botn New File (Archivo Nuevo) (). Deber obtener una ventana similar a la mostrada a continuacin:
o o o o
Elija la categora Java y el tipo de archivo Java Class. . 6. Haga clic en el botn Next. Aparece la pantalla mostrada a continuacin:
Escriba HolaMundo como nombre de la clase, y Mensaje como nombre del paquete.
7. Haga clic en el botn Finish. Aparece el esqueleto de la clase, tal como se muestra a continuacin:
. 8. Compile el programa anterior. Para ello utilice cualquiera de las opciones siguientes:
o En la parte izquierda del IDE, haga clic derecho sobre el nombre del archivo y
seleccione la opcin Compile File (Compilar Archivo). o En el men de NetBeans seleccione Run, Compile File (Ejecutar, Compilar Archivo).
NOTA: Si no le aparece la ventana Output (Salida), actvela con la combinacin de teclas CTRL + 4, o desde el men de NetBeans en la opcin Window, Output (Ventana, Salida). . 9. Ejecute la aplicacin con cualquiera de las opciones siguientes:
o Haciendo clic sobre el botn Run Project (Ejecutar Proyecto) (). o Presionando la tecla F6. o En el men de NetBeans seleccione Run, Run Project (Ejecutar Proyecto).
10. La primera vez que ejecute el proyecto aparecer una pantalla similar a la mostrada a continuacin:
Haga clic en el botn OK. La corrida del programa aparece en la pantalla Output, ubicada en la ventana inferior derecha, tal como se muestra en la figura siguiente:
. Parte 3 - Uso de NetBeans - Modo Grfico. 1. Aada un nuevo paquete. Para ello haga clic derecho sobre el componente Source Packages (Paquetes Fuente) de la ventana Projects (Proyectos) y seleccione New, Java Package (Nuevo, Paquete Java).
En la ventana que aparece, utilice MensajeGrafico como nombre del proyecto, tal como se muestra a continuacin:
Haga clic en el botn Finish (Finalizar). . 2. Coloque el puntero sobre el nombre del proyecto o paquete MensajeGrafico y seleccione la opcin New, JFrame Form (Nuevo, Formulario JFrame).
Para cualquiera de las ltimas tres opciones anteriores deber seleccionar Swing GUI Forms y a continuacin JFrame Form, tal como se muestra a continuacin:
. 3. Haga clic sobre el botn siguiente y coloque el nombre HolaMundoGrafico, tal como se muestra a continuacin:
4. Haga clic en el botn Finish (Terminar). 5. Agregue un control llamado panel, el cual es un contenedor para colocar diversos controles sobre l.
. 6. Haga clic sobre la esquina inferior dererecha del jPanel1 y redimensinelo hasta abarcar el ancho y alto mximo, atendiendo la sugerencia del IDE (las lneas guas). El jPanel1 deber verse de manera similar a la imagen mostrada:
Control
Propiedad
jLabel1
Font
jLabel1
"e#t
jButton1 jButton*
"e#t "e#t
. 8. Haga clic derecho sobre el botn Haga clic en m y seleccione Events, Action, Action Performed (Eventos, Accin, Accin efectuada), como se muestra en la figura siguiente:
Para que este cdigo funcione deber agregar una librera inmediatamente antes de la lnea public class HolaMundoGrafico extends javax.swing.JFrame {:
. 9. Vuelva al modo grfico haciendo clic en el botn Design (Diseo), tal como se muestra:
. 11. Haga clic derecho sobre la clase HolaMundoGrafico y seleccione la opcin Run File (Ejecutar archivo), como se muestra en la figura siguiente:
NOTA: Tambin puede utilizar la combinacin de teclas SHIFT + F6. . 12. La ejecucin del programa (al presionar el botn Haga clic en m) genera una pantalla similar a la siguiente:
. 13. Si desea cambiar el programa de inicio, haga clic en el men Run, Set Project Configuration, Customize (Ejecutar, Establecer configuracin del proyecto, Configurar) y use el botn Browse (Navegar) que se encuentra a la derecha de la opcinMain Class (Clase Principal).
Escriba una clase en Java de nombre Herramienta, que contenga los miembros mencionados, y un programa que construya la cantidad de objetos solicitada y utilice los miembros de cada objeto.