INSTITUTO POLITÉCNICO NACIONAL · operaciones unarias o binarias excepto con instanceof; todas las...

29
INSTITUTO POLITÉCNICO NACIONAL UNIDAD PROFESIONAL INTERDISCIPLINARÍA DE INGENIERÍA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS TÍTULO DEL PROYECTO DE INVESTIGACIÓN: DESARROLLO DE UN PROTOTIPO QUE MUESTRE DE MANERA GRÁFICA LA EJECUCIÓN DE UN PROGRAMA EN LENGUAJE JAVA CON LA FINALIDAD DE MEJORAR LA ENSEÑANZA DE LA PROGRAMACIÓN. CLAVE DEL PROYECTO: 20062027 DIRECTOR DEL PROYECTO: M. EN C. RICARDO ARMANDO MACHORRO REYES.

Transcript of INSTITUTO POLITÉCNICO NACIONAL · operaciones unarias o binarias excepto con instanceof; todas las...

Page 1: INSTITUTO POLITÉCNICO NACIONAL · operaciones unarias o binarias excepto con instanceof; todas las sentencias de control (if, while, do…while, for, etc.), además de esto, se soporta

INSTITUTO POLITÉCNICO NACIONALUNIDAD PROFESIONAL INTERDISCIPLINARÍA

DE INGENIERÍA Y CIENCIAS SOCIALESY ADMINISTRATIVAS

TÍTULO DEL PROYECTO DE INVESTIGACIÓN: DESARROLLO DE UN PROTOTIPO QUE MUESTRE DE MANERA GRÁFICA LA EJECUCIÓN DE UN PROGRAMA EN LENGUAJE JAVA CON LA FINALIDAD DE MEJORAR LA ENSEÑANZA DE LA PROGRAMACIÓN.

CLAVE DEL PROYECTO: 20062027

DIRECTOR DEL PROYECTO:

M. EN C. RICARDO ARMANDO MACHORRO REYES.

Page 2: INSTITUTO POLITÉCNICO NACIONAL · operaciones unarias o binarias excepto con instanceof; todas las sentencias de control (if, while, do…while, for, etc.), además de esto, se soporta

ÍNDICE

1. RESUMEN ………………………………………………………………………… 3

2. INTRODUCCIÓN …………………………………………………………………. 3

3. MÉTODOS Y MATERIALES ……………………………………………………. 4 3.1 Diseño del sistema PrototipoJ …………………………………….......4 3.2 Clase Jeliot ………………………………………………………………….. 6 3.3 Descripción de la ventana principal (interfaz gráfica de usuario del PrototipoJ 1.0) ……………………………………………………………… 7 3.3.1 Editor de código ……………………………………………………... 7

3.3.2 Ventana de animación ……………………………………………… 93.3.3 Árbol de llamadas …………………………………………………...123.3.4 Menus ………………………………………………………………….133.3.5 Botones de la barra de herramientas ……………………………143.3.6 Editar y compilar …………………………………………………….143.3.7 Controles de animación ……………………………………………143.3.8 Ventana de salida ……………………………………………………153.3.9 Despliegue de errores ………………………………………………163.3.10 Consideraciones acerca del programa ………………………...16

3.4 DynamicJava ..…………………………………………………………….16

4. RESULTADOS …...………………………………………………………………21 4.1 Instalación ………………………………………………………………….21

5. CONCLUSIONES ……………………………………………………………….. 26 5.1 Impacto ……………………………………………………………………. 26 5.2 Productos obtenidos …………………………………………………… 27 5.3 Subproductos obtenidos ………………………………………………..28 BIBLIOGRAFÍA……………………………………………………………………...29

2

Page 3: INSTITUTO POLITÉCNICO NACIONAL · operaciones unarias o binarias excepto con instanceof; todas las sentencias de control (if, while, do…while, for, etc.), además de esto, se soporta

1. RESUMEN

El presente proyecto de investigación pretende mostrar a través de una herramienta visual de software la ejecución en modo gráfico de un programa en lenguaje Java con la finalidad de mejorar la enseñanza y el aprendizaje de los los fundamentos de la programación orientada a objetos; lo que sin duda es un tema por demás apasionante e importante para los estudiantes que cursan las carreras de computación e infomática, y que a lo largo del tiempo ha resultado un tema complicado de entender para estos. La herramienta visual nos permite ver como internamente se llaman a los métodos, variables y operaciones que se definan en el programa; así como la creación de arreglos y objetos. Permite que el estudiante siga la ejecución del mismo paso a paso; facilitando su comprensión. El software que muestra esta animación es una aplicación que requiere del kit de desarrollo de Java jdk1.5.0 o superior el cual puede bajarse de internet sin ningún costo lo cual resulta muy atractivo para que los estudiantes puedan practicar y estudiar con mayor detalle, además de también ayudar a los profesores en la impartición de sus clases.

2. INTRODUCCIÓN

La programación orientada a objetos se ha convertido en un paradigma de desarrollo fundamental en todos los campos de la Ciencia de la Computación y, por ello, es importante enseñar programación orientada a objetos desde los primeros cursos de programación. Enseñar programación orientada a objetos es más que enseñar la sintaxis y la semántica de un lenguaje de programación orientado a objetos. Dominar la programación orientada a objetos significa que el alumno debe tener conocimientos fluidos de los conceptos de orientación a objetos y ser capaz de aplicarlos efectiva y sistemáticamente cuando desarrolla programas. Conocer los conceptos de orientación a objetos no es suficiente. Los estudiantes deben ser capaces de aplicar sus conocimientos para desarrollar programas del mundo real. Los programas de ejemplo que existen en muchos libros son demasiados simples. Los estudiantes raramente encuentran programas de ejemplo en los libros de texto que usen o definan más de tres clases. Pero, en los proyectos del mundo real, los programadores deben usar muchas clases de las bibliotecas y definir muchas clases por sí mismos. Por ello, que el estudiante pueda introducirse en la programación orientada a objetos y se este en la posibilidad de empezar a programar se requiere comprender los fundamentos básicos de ésta y para clarificar dichos fundamentos se propone una herramienta visual que ayude a facilitar el proceso de enseñanza-aprendizaje de tales principios usando como lenguaje de programación a Java.

El PrototipoJ 1.0 es un programa de animación que enseña los principios introductorios de la programación. Los programas son animados automáticamente, no requieren modificaciones o anotaciones por parte de el usuario. El programa es extremadamente simple de usar lo que lo hace fácil de

3

Page 4: INSTITUTO POLITÉCNICO NACIONAL · operaciones unarias o binarias excepto con instanceof; todas las sentencias de control (if, while, do…while, for, etc.), además de esto, se soporta

aceptar por los alumnos que empiezan a programar, así como por los profesores; ya que no tienen que investigar en aprender como preparar la animación. En una animación visual son desplegados las partes del programa en Java como son los: métodos de llamado, variables, operaciones, etc., permitiendo al estudiante seguir paso a paso la ejecución del mismo. Los programas pueden ser creados desde el interior del PrototipoJ o pueden ser modificados de un programa previamente almacenado. Dicho programa será mostrado visualmente y no necesita ningún tipo de llamado adicional, toda la visualización es automáticamente generada. PrototipoJ 1.0 comprende e interpreta la mayoría de las construcciones del lenguaje Java y es capaz de animarlas. La característica clave del PrototipoJ 1.0 es la visualización semi-automática de los flujos de control y de los datos de un programa Java.El programa esta escrito en Java por portabilidad . El programa usa una versión modificada de DynamicJava (Koala, 2002) como un front-end y una animación en el fondo como interfaz gráfica.

Este programa soporta valores de tipo de dato String y todos los tipos de datos primitivos de Java, esto es: byte, short, int, long, float, double, char y boolean; arreglos unidimensionales de tipos de datos primitivos o Strings como sus componentes de tipo, todas las expresiones pueden incluir operaciones unarias o binarias excepto con instanceof; todas las sentencias de control (if, while, do…while, for, etc.), además de esto, se soporta cualquier invocación de métodos incluyendo invocaciones recursivas de los mismos.

No se encuentra implementado lo siguiente:

• Acceso a los campos super.• Arreglos de clases o de referencia de clases excepto String.• Arreglos de dos o más dimensiones.• Inicializadores de arreglo.• Expresiones condicionales (exp?exp1:exp2).• Los métodos de clases de la API del jdk1.4.0 en adelante de java no

pueden retornar objetos (excepto del tipo de dato String) o arreglos de tipo por ejemplo objeto.getClass() que retorna una instancia de tipo Class.

• Ni tampoco la parte gráfica de java con java.awt o javax.swing.

3. MÉTODOS Y MATERIALESPara la realización del sistema PrototipoJ 1.0 se siguió una metodología de desarrollo orientada a objetos (Proceso Unificado), para el modelado se utilizó UML (Lenguaje de Modelado Unificado) y como lenguaje de programación Java. El diseño del sistema se detalla a continuación:

3.1 Diseño del sistema PrototipoJPrototipoJ es una aplicación de visualización introductoria de los fundamentos básicos de la programación orientada a objetos con Java. Los programas son animados completa o semi-automáticamente, no requieren modificaciones o anotaciones a parte por parte del alumno o el instructor. El programa es simple

4

Page 5: INSTITUTO POLITÉCNICO NACIONAL · operaciones unarias o binarias excepto con instanceof; todas las sentencias de control (if, while, do…while, for, etc.), además de esto, se soporta

de usar y fácil de aceptar por los estudiantes principiantes o maestros que no quieren pasar mucho tiempo explicando la animación del programa. El programa esta escrito en Java por portabilidad . El programa usa una versión modificada de DynamicJava (Koala, 2002) ( 3.3) como un front-end y una animación en el fondo como interfaz gráfica. DynamicJava es el intérprete del código escrito en Java. Esta aplicación es código fuente abierto y puede ser libremente bajado del sitio de Internet http: //www.koala.ilog.fr/djava/. En este momento, DynamicJava es también completamente compatible con las especificaciones del lenguaje Java y soporta clases internas, así como el manejo de múltihilos. Para hacer la comunicación entre estos dos sistemas mutuamente se requiere de unir la especificación de un lenguaje intermedio y un intérprete de ese código intermedio.

El código fuente del programa se incluyen en el CD en la carpeta PrototipoJ el cual tiene la siguiente estructura:

src contiene el código fuente del programa. Se divide en los siguientes subdirectorios:

ejemplos Contiene algunos ejemplos que están disponibles para los usuarios.

images Imágenes usadas en la interface de usuario del programa

koala Contiene el código fuente modificado de Dynamic Java.

El sistema contiene varios paquetes importantes que conforman la estructura del sistema. La estructura funcional del programa se muestra en la figura 1. Un usuario interactúa con la interface de usuario y crea el código fuente del programa (1) . El código fuente es envíado al intérprete de Java y el código intermedio es extraído (2 y 3). El código intermedio es interpretado y las instrucciones son indicadas a la máquina de visualización (4 y 5). Un usuario puede controlar la animación ejecutando, pausando, reembobinando o ejecutando paso a paso la animación a través de la interface usuario (6). Además el usuario puede introducir datos, por ejemplo un dato de tipo entero o un string, para que el programa sea ejecutado por el intérprete (6, 7 y 8).

5

Page 6: INSTITUTO POLITÉCNICO NACIONAL · operaciones unarias o binarias excepto con instanceof; todas las sentencias de control (if, while, do…while, for, etc.), además de esto, se soporta

Figura 1. Estructura funcional del Sistema PrototipoJ 1.0.

Diferentes paquetes del prototipo se explican en esta sección en el mismo orden de la estructura funcional.

3.2 Clase JeliotLa clase Jeliot en el paquete jeliot es la clase principal del programa. Combina diferentes componentes del programa conjuntamente y manipula la comunicación entre diferentes componentes. Cuando el programa es arrancado la clases crea todos los componentes necesarios y le pasa los parámetros a las clases de la interface gráfica de usuario. Principalmente maneja la comunicación entre la interface (jeliot.gui) y las clases de la máquina de animación (jeliot.theater). Además de invocar los hilos o threads que manejan la interpretación de los programas de usuario a través de la clase jeliot.launcher.Launcher.

Código fuente del programa

Interpretación del código del programa realizado por DynamicJava

Código intermedio del programa de ejecución

2. 3..

Interface de usuario

Máquina de visualización

Intérpretedel código intermedio

4

1

5

7

6

Usuario

6

Page 7: INSTITUTO POLITÉCNICO NACIONAL · operaciones unarias o binarias excepto con instanceof; todas las sentencias de control (if, while, do…while, for, etc.), además de esto, se soporta

3.3 Descripción de la ventana principal (interfaz gráfica de usuario del ProtipoJ 1.0)La interfaz gráfica del programa se encuentra localizada en el paquete jeliot.gui y consta de las siguientes partes tal como se muestra en la figura 2:

Figura 2. Estructura de la interfaz gráfica de usuario del PrototipoJ.

3.3.1 Editor De CódigoEl Editor o Vista De Código es una pequeña ventana que se encuentra del lado izquíerdo que consta de una área de texto con números de línea y que se utiliza como editor de código cuando se abre o crea un nuevo archivo (estado edición). Para pasar del modo edición al modo de ejecución (animación) es necesario dar un click en la opción de Compilar. Cuando se presiona esta opción inmediatamente se remueven los iconos de la barra de menus (ToolBars) que se encuentran en la esquina superior izquíerda e inmediatamente aparece una ventana de cierre para indicar que la animación puede comenzar a verse en la ventana de animación. Después de animar y ver la ejecución del programa, puede darse click en la opción Editar para retornar al modo de edición. Durante la animación, el código del programa es animado con el sobremarcado de cada línea del programa en el editor de código y su correspondencia en la ventana de animación. Por ejemplo: Se tiene una clase llamada MiClase y en el método principal o main (figura 3) se tiene la declaración de una variable de tipo int llamada n igual con 5 y la declaración de un arreglo de tipo int llamado arr de 5 posiciones los cuales van a almacenar el resultado de multiplicar el índice del arreglo por 10, para posteriormente desplegar en pantalla la cadena “La salida es: “ y el contenido del arreglo arr(por cada salida de datos se presenta en la animación el dibujo de una manita; tal como se muestra en las figuras 4 y 5 respectivamente:

Barra De Menu

Editor ó Vista De Código

Ventana De Animación o

Vista De Errores

Panel De Control Consola De Salida

7

Page 8: INSTITUTO POLITÉCNICO NACIONAL · operaciones unarias o binarias excepto con instanceof; todas las sentencias de control (if, while, do…while, for, etc.), además de esto, se soporta

Figura 3. Ventana Principal del Sistema: PrototipoJ 1.0.

Figura 4. Salida del programa PrototipoJ 1.0.

8

Page 9: INSTITUTO POLITÉCNICO NACIONAL · operaciones unarias o binarias excepto con instanceof; todas las sentencias de control (if, while, do…while, for, etc.), además de esto, se soporta

Figura 5. Salida Final Del Programa.

3.3.2 Ventana De AnimaciónEs aquí donde se visualiza la ejecución del programa paso a paso (Teatro de animación). Mientras se este en el modo o estado Editar esta sección será cubierta por una ventana en azul. Si se presiona el botón de Compilar se pasa al estado Animar, inmediatamente la ventana de azul se parte en dos y se abre, mostrando una ventana de color café claro y además se activan los botones de Editar, Paso y Animar. Cuando se presiona el botón de Animar, comienza la animación y la ventana de animación es dividida en cuatro áreas separadas por líneas blancas punteadas; las cuales se distribuyen de izquíerda a derecha y de arriba hacia abajo de la siguiente manera: Área de los métodos, Área de evaluación de expresiones, Área de las constantes y Área de los arrays e instancias de objetos como se puede observar en la figura 6:

9

Page 10: INSTITUTO POLITÉCNICO NACIONAL · operaciones unarias o binarias excepto con instanceof; todas las sentencias de control (if, while, do…while, for, etc.), además de esto, se soporta

Figura 6. Ventana De Animación

Area de métodos: Esta parte de la ventana de animación muestra todos los métodos que sean procesados por el programa y lo hace como frames o pequeñas ventanas de activación representados por cajas que pueden contener la declaración de variables las cuales son dibujadas a través de subcajas. Los valores de retorno son dibujados con cajas largas que contienen sus respectivos valores dentro, Para las variables de tipo primitivo (byte, short, int, long, float, double, char y bolean) y String el nombre es desplegado dentro de la subcaja; a su vez otros valores son mostrados como enlaces o referencias al área de los arrays e instancias de objetos. Como se aprecia en la figura 7 a continuación:

10

Page 11: INSTITUTO POLITÉCNICO NACIONAL · operaciones unarias o binarias excepto con instanceof; todas las sentencias de control (if, while, do…while, for, etc.), además de esto, se soporta

Figura 7. Area de métodos.

Área de evaluación de expresiones: En esta sección es como su nombre lo dice donde se muestran las expresiones a evaluar. Cualquier instrucción que se requiera ejecutar es desplegada aquí, así como el resultado de evaluar la expresión, así como, las entradas por teclado del usuario (Ver la figura anterior).

Área de las constantes: Cuando en un programa se declara alguna literal en el código de este, son llevados a esta sección. Esto aplica para todas las literales, sin importar de que tipo sean.

Área de los arrays e instancias de objetos: Aquí se muestran los objetos reservados dinámicamente, así como instancias de clases y arreglos. Estos son conectados a través de enlaces a las pequeñas ventanas de activación del área de métodos.

Los objetos en la ventana de animación siguen el siguiente código de colores:

11

Page 12: INSTITUTO POLITÉCNICO NACIONAL · operaciones unarias o binarias excepto con instanceof; todas las sentencias de control (if, while, do…while, for, etc.), además de esto, se soporta

Tabla 1: Legendas De Color Por Ventanas De Animación

Objetos Colores Objetos ColoresMétodos Caja rosa con

cabecera blancaLong Verde Claro

Flotantes Púrpura Strings RojoEnteros Café Double FresaCaracteres Verde Objetos de clases Amarillo

3.3.3 Árbol de llamadas En esta sección el árbol de llamadas despliega todos los llamados de las funciones y valores de retorno que el programa en ejecución haya utilizado, de la forma NombreDeLaClase.main() siendo el nodo raíz natural. Para ver el árbol de llamados se hace dando cliclK en la pestaña o tab del Árbol de llamadas colocado arriba de la ventana de animación. Cuando se hace esto se despliega en el lugar de la animación. Para regresar otra vez de vuelta a la animación es suficiente con dar click en el tab que lleva por nombre Teatro. Se puede intercalar entre la opción del árbol de llamadas y el teatro de animación como se desee. De cualquier forma los cuadros o cajas de diálogo sólo aparecerán cuando el programa haya sido animado. Ejemplo de un árbol de llamadas se muestra en la figura 8:

Figura 8. Árbol de llamadas

12

Page 13: INSTITUTO POLITÉCNICO NACIONAL · operaciones unarias o binarias excepto con instanceof; todas las sentencias de control (if, while, do…while, for, etc.), además de esto, se soporta

3.3.4 MenusLos menus en el programa son claramente explicativos. El menu Archivo contiene las instrucciones para manejo de archivos como: Nuevo, Abrir, Guardar, Guardar como…,Imprimir código y Salir. El menu Editar contiene las funciones del portapapeles como son: Deshacer adición, Redo, Cortar, Copiar, Pegar, Seleccionar Todo, Find, Replace. Un resumen rápido de estos comandos se muestra en la tabla 2. Estos comandos también se encuentran en la barra de herramientas colocada arriba de la ventana de código.

Comando DescripciónNuevo Inserta un archivo en la ventana de código

Abrir Abre una ventana de diálogo para seleccionar un archivo que se abrirá o cargará en la ventana de código

Guardar Guarda el código que se encuentra en la ventana de códigoGuardar como

Guarda el código que se encuentra en la ventana de código con otro nombre al dado.

Salir Sale del programa(PrototipoJ 1.0)Cortar Corta el texto seleccionado de la ventana de código al

portapapelesCopiar Copia el texto seleccionado de la ventana de código al

portapapelesPegar Pone el contenido del portapapeles en la ventana de código

comenzando en la línea donde se encuentre el cursor.Seleccionar Todo

Selecciona todo lo que se encuentre en la ventana de código

Tabla 2. Operaciones de los menus Archivo y Editar.

El menu de Control contiene los comandos para editar y compilar un programa.

El menu de Animación contiene los comandos para controlar el flujo de animación. Al igual que los otros comandos de los dos primeros menús; estos pueden encontrarse abajo de la ventana de código. Ver la figura 10. El significado de estos comandos se ve en la secciones siguientes. Además estos comandos también se encuentran en la barra de herramientas. El menú de animación contiene dos importantes comandos: Pausa y Ejecutar hasta.

Pausa es una opción que detiene la animación en el momento que se seleccione.

Ejecutar hasta pide el número de línea hasta el cual se desea que ejecute el programa y coloca un breakpoint allí. Cuando la animación llega a esa línea, el programa se pausa.Nota: El menu de Animación se encuentra deshabilitado cuando se esta dentro del estado de edición; y en contra parte los menus de Archivo y Editar se deshabilitan cuando entran al estado de animación.

13

Page 14: INSTITUTO POLITÉCNICO NACIONAL · operaciones unarias o binarias excepto con instanceof; todas las sentencias de control (if, while, do…while, for, etc.), además de esto, se soporta

Por último en el menú Ayuda se puede encontrar información acerca del programa: Ayuda y Sobre el PrototipoJ 1.0. Ver la figura 9.

3.3.5 Botones De La Barra De Herramientas.Estos se encuentran activos cuando se esta en el estado de edición y se ocultan cuando se compila (opción Compilar) el programa que se encuentre en la ventana de código. Trabajan exactamente igual que los comandos de los menus Archivo y Editar. Ver la figura 9:

Figura 9. Menus y Barra De Herramientas

3.3.6 Editar y CompilarEn la barra de herramientas de la siguiente figura se muestran los botones de Editar y Compilar; dichos botones se encuentran en la esquina inferior izquíerda de la ventana de código. Con estos botones se controlan en el programa los estados de Edición o Animación. De el estado de edición se puede ejecutar la animación dando click en la opción Compilar. Además se puede retornar a editar el código en cualquier momento partiendo del estado de Animación simplemente seleccionando Editar.

Figura 10. Barra de herramientas con los botones: Editar, Compilar y Controles De Animación.

3.3.7 Controles De Animación.La animación de ejecución del programa puede ser controlada por los botones de la barra de herramientas mostrados en la figura . Estas opciones también se encuentran en el menu de Animación. Para una descripción detallada de las opciones de estos botones de la barra de herramientas se muestra en la tabla 3.

14

Page 15: INSTITUTO POLITÉCNICO NACIONAL · operaciones unarias o binarias excepto con instanceof; todas las sentencias de control (if, while, do…while, for, etc.), además de esto, se soporta

Botón FunciónPaso Procede la animación con un paso y

una velocidad de ejecución determinada.

Animar Procede a realizar la animación hasta que finaliza el programa o se da un click en el botón de pausa.

Pausa Detiene la animación del programa Rebobinar Regresa de vuelta al inicio del

programa para reiniciar la animación si se desea. Habilita los botones de Editar, Paso, Animar

Velocidad de la animación Acelera o disminuye la velocidad de ejecución de la animación del programa

Tabla 3. Comandos de animación de la barra de herramientas.

3.3.8 Ventana De SalidaLa ventana de salida esta colocada en la esquina inferior derecha. Tal como se ve en la figura 11 y esta representada por una caja de texto, que muestra los datos de salida que generé la animación del programa. Todos los valores de salida que son generados en la ventana de animación se representan con una mano que simula que los atrapa y que sale del cuadro de texto. Si dentro de la ventana de salida se presiona el botón derecho del mouse, aparece el mensaje de “Limpiar” y si se selecciona esta opción borra el contenido de dicha ventana o cuadro de texto.

Figura 11. Caja de los valores de salida.

15

Page 16: INSTITUTO POLITÉCNICO NACIONAL · operaciones unarias o binarias excepto con instanceof; todas las sentencias de control (if, while, do…while, for, etc.), además de esto, se soporta

3.3.9 Despliegue De ErroresEn caso de que haya un error en código de algún programa, en la mayoría de los casos el PrototipoJ te informa de tal error, esto sucede cuando se le da click en el botón Animar o Paso por primera vez. Si se esta intentando usar variables no inicializadas, la animación procederá normalmente hasta el punto donde se encuentre el error, lo que ocasionará que el programa se detenga y por lo tanto el correspondiente mensaje de error.

3.3.10 Consideraciones acerca del programa.Hay dos incompatibilidades en el programa(PrototipoJ) y el lenguaje Java las cuales son:

1. Todas las clases que se editen en el programa deben estar solamente dentro de un unico archivo.

2. Para las funciones de entrada y salida se recomienda importar o cargar el paquete jeliot.io.*; el cual provee los métodos: void Output.println(), int Input.readInt(), double Input.readDouble(), char Input.readChar(), String Input.readString(). La salida estándar también es soportada por el programa.

El programa usa DynamicJava (http: //koala.ilog.fr/djava/) como un front-end y acepta la mayoría de las características que se usan de manera inicial en la programación con Java, de cualquier manera, la implementación de la animación podría no animar todas las características de un programa. De tal forma debe considerarse que el programa soporta lo siguiente:

Valores de tipo de dato String, todos los tipos de datos primitivos y arreglos unidimensionales.Variables de tipo static.Todas las expresiones que incluyan operaciones unarias o binarias excepto instanceof.Todas las sentencias de control (if, while, etc).Expresiones condicionales (exp?exp1:exp2).Invocación de métodos, incluyendo invocaciones recursivasConstructores, asignación de objetos e invocación de métodos de objetos.

3.4 DynamicJava

DynamicJava consiste de 7 diferentes paquetes, donde solo cinco de ellos ejecutan la interpretación del código: classfile, classinfo, interpreter, parser y tree. Los otros dos (util y gui) son usados para ayudar a depurar el DynamicJava y proveer una agradable interface de usuario a el intérprete. Por ejemplo, el displayVisitor, incluye el paquete util, provee una salida agradable del árbol de llamadas.

Classfile contiene todas las clases de propósito general para crear clases de bytecode. La clase más importante es ClassFile que es el corazón del proceso de creación de clases.

16

Page 17: INSTITUTO POLITÉCNICO NACIONAL · operaciones unarias o binarias excepto con instanceof; todas las sentencias de control (if, while, do…while, for, etc.), además de esto, se soporta

Classinfo contiene todas las clases e interfaces que se usan como clases intérpretes. Este paquete es usado durante la compilación de las clases.

Interpreter contiene las clases para interpretar sentencias en el lenguaje Java. Este es el paquete más importante

Parser provee las clases que componen el parser de default para el lenguaje. El parser mismo es representado por la clase Parser. Este parser ha sido generado por JavaCC 1.0. Crea los nodos de el árbol para ser mostrados por el intérprete.

Tree provee clases e interfaces para producir la sintaxis de un árbol abstracto. El árbol creado consiste de nodos, la cual es la estructura de datos principal en DynamicJava. Todos los nodos tienen propiedades comunes, el segmento del código fuente donde los nodos son referidos. Subclases de estos nodos son definidas para direccionar las propiedades unicas de cada una de las diferentes sentencias y construcciones de Java. Por ejemplo un nodo para cualquier expresión binaria también consistirá de las propiedades LEFT_EXPRESSION y RIGHT_EXPRESSION.

La figura 12 muestra las relaciones entre los paquetes, los archivos a interpretar y flujo de datos principal.

Figura 12. Relaciones de paquetes.

Como se puede observar, DynamicJava lleva el código fuente a través de tres árboles temporales: NameVisitor, TypeChecker y Finalmente EvaluationVisitor.

Tree

Parser

Código Fuente

NameVisitor TypeChecker

EvaluationVisitor

Tree

TreeArboles y Clases

CompiladorTreeClass

ClassInfo ClassFile

Intérprete

17

Page 18: INSTITUTO POLITÉCNICO NACIONAL · operaciones unarias o binarias excepto con instanceof; todas las sentencias de control (if, while, do…while, for, etc.), además de esto, se soporta

También se observa como EvaluationVisitor recibirá una clase de TypeChecker, la razón para este comportamiento se explica a continuación:

El NameVisitor es un árbol que resuelve la ambigüedad de identificar la sintaxis de un árbol. Averigua ambigüedades de sintaxis.

El TypeChecker es un árbol que verifica el tipo de reglas y carga las clases, atributos y métodos. Esta clase no solo se concentra en las reglas de sintaxis. Cuando es requerida en una declaración invoca al compilador, el cual compila generando código byte.

El EvaluationVisitor es un árbol que evalúa cada nodo de acuerdo a la sintaxis. Este árbol es el unico que evalúa y ejecuta el programa. Usualmente comienza invocando el método principal de las clases compiladas.

Paquete TreeEl paquete Tree contiene una clase para cada construcción diferente del lenguaje. Estas clases construyen el árbol sintáctico del código fuente. Estas clases también son implementadas como un árbol. La raíz de este árbol es la clase Node. Cada clase hereda directa o indirectamente. Node solo define una propiedad, la localización de el nodo dentro del código fuente, ambos el nombre del archivo y su posición. El programa solo acepta programas con clases definidas en unico archivo. A continuación se muestra la estructura de tree (figura 13).

Figura 13. Varias clases del Paquete Tree.

18

Page 19: INSTITUTO POLITÉCNICO NACIONAL · operaciones unarias o binarias excepto con instanceof; todas las sentencias de control (if, while, do…while, for, etc.), además de esto, se soporta

La figura 14 muestra los diferentes nodos para declaraciones, inicializadotes y tipos. Dos tipos principales son usados en DynamicJava: tipos primitivos de datos y cadenas o String

La figura 15 muestra las clases de expresión primarias. La clase Expresión es la super clase de las expresiones binarias y unarias. Todas las propiedades son definidas por la subclase PrimaryExpression. Algunas de estas clases son implementadas por más de una interface.

Figura 14. Clases correspondientes a la expresiones primarias en el paquete tree.

La figura 15 contiene todas las sentencias posibles de Java. ReturnStatement implementa la interface ExpressionContainer porque la requiere cuando una expresión retorna un valor. Las sentencias Do, While y For implementan la interface ContinueTarget.

19

Page 20: INSTITUTO POLITÉCNICO NACIONAL · operaciones unarias o binarias excepto con instanceof; todas las sentencias de control (if, while, do…while, for, etc.), además de esto, se soporta

Figura 14. Clases correspondientes a las sentencias de Java en el paquete Tree.

Y la figura 15 que ilustra expresiones binarias y unarias. Muestra un ejemplo de sus subclases.

Figura 15. Clases correspondientes a las expresiones unarias y binarias del lenguaje Java y el paquete tree.

20

Page 21: INSTITUTO POLITÉCNICO NACIONAL · operaciones unarias o binarias excepto con instanceof; todas las sentencias de control (if, while, do…while, for, etc.), además de esto, se soporta

4. ResultadosComo resultado del diseño y la codificación de los paquetes y clases que conforman el sistema PrototipoJ 1.0 se obtuvo el ejecutable que nos permite visualizar la ejecución de un programa en Java.

4.1 InstalaciónPara poder visualizar gráficamente la ejecución de un programa en Java paso a paso se requerirá que en la computadora donde se ejecute este se tenga instalado el kit de desarrollo de Java preferentemente la versión jdk1.5.0 en adelante, así como el sistema que nos permitirá visualizar gráficamente la ejecución de un programa en Java en este caso PrototipoJ 1.0.

Para poder ejecutar el programa desde Windows de preferencia XP es necesario contar con la instalación del kit de desarrollo de Java 1.5.0 o superior; para ello puede hacerse lo siguiente:

Paso 1. Descripción de los programas

Para compilar y ejecutar Java se utiliza habitualmente Java Development Kit (kit de desarrollo de Java) o jdk, desarrollado por Sun Corporation. El jdk tiene dos familias principales: Java 2 Standard Edition o J2SE, orientado a uso personal, y Java 2 Enterprise Edition o J2EE, la edición empresarial. A su vez, cada familia tiene diferentes versiones, identificadas por una secuencia de números x.y.z. (Actualmente se encuentra en el sitio de Sun la versión del jdk1.6.0).

Paso 2. Descarga del software

Es necesario descargar el programa de su sitio web de origen:

1. Abre la página http://java.sun.com/javase/downloads/index.jsp y haz click en "Download jdk-6-windows-i586.exe" y guárdalo en disco (tardará un rato: son 53.16 MB). O bien ejecutarlo desde el CD en el que se proporciona el archivo: jdk-6-windows-i586.exe.

Paso 3.

• Hacer doble click en el programa de instalación del jdk: "jdk-6-windows-i586.exe".

En primer lugar aparece una pantalla como esta:

21

Page 22: INSTITUTO POLITÉCNICO NACIONAL · operaciones unarias o binarias excepto con instanceof; todas las sentencias de control (if, while, do…while, for, etc.), además de esto, se soporta

• Cuando aparezca el cuadro de licencia, pulsar "Accept>". • En la siguiente pantalla, no cambiar nada y pulsar "Next>". • Posteriormente aparece una pantalla que dice que se están instalando

los componentes del programa (installing)• En seguida aparece una pantalla donde se solicita la unidad donde se

instalará el kit de desarrollo pudiendo ser la unidad c:\.• Cuando termine, pulsar "Finish" y se pide reiniciar la computadora.

Paso 3. Configuración del jdk

Abrir la "Consola del Sistema", también llamada "Símbolo del Sistema" (o en inglés, "Console", "DOS Console", "Command prompt"...). Habitualmente se puede encontrar en "Menú Inicio"->Programas->Accesorios. Si no la encuentra, también puede abrirla yendo a "Menú Inicio"->Ejecutar y escribir "cmd" (o si no probar con "command").

En el símbolo del sistema, escribir:

java

Si se obtiene un mensaje similar a éste:

22

Page 23: INSTITUTO POLITÉCNICO NACIONAL · operaciones unarias o binarias excepto con instanceof; todas las sentencias de control (if, while, do…while, for, etc.), además de esto, se soporta

Entonces continuar con el paso siguiente. Sin embargo, si se obtiene un mensaje como éste:

seguir las siguientes instrucciones.

• Pulsar con el botón derecho del ratón sobre "Mi PC" y seleccionar "Propiedades".

• Seleccionar la pestaña "Opciones avanzadas" y pulsar el botón inferior "Variables de entorno".

• Tanto en el cuadro superior como el inferior, buscar una variable que se llama "Path", hacer click sobre ella y pulsar el botón "Modificar" (si aparece en los dos cuadros, hacer lo siguiente dos veces).

• En el cuadro de valor de variable, añadir al final (cuidado, SIN BORRAR NADA):

• <lo que hubiera antes>;c:\jdk1.6.0\bin.

23

Page 24: INSTITUTO POLITÉCNICO NACIONAL · operaciones unarias o binarias excepto con instanceof; todas las sentencias de control (if, while, do…while, for, etc.), además de esto, se soporta

• y pulsar "Aceptar".

1. Buscar otra vez en la lista de variables si existe "CLASSPATH". Si no existe, no pasa nada, seguir con el siguiente punto. Si existe, click sobre ella y pulsa el botón "Modificar" (si aparece en los dos cuadros, hacer lo siguiente dos veces). En el cuadro de valor de variable, añadir al final (cuidado, SIN BORRAR NADA):

2. <lo que hubiera antes>;.

(cuidado: con un PUNTO al final) y pulsar "Aceptar".

3. Cerrar el cuadro de diálogo de variables de entorno con "Aceptar" y otra vez "Aceptar" para "Propiedades del sistema".

Si se tenía abierta la consola del sistema, hay que cerrarla para que se carguen los nuevos valores.

Ábrir la consola otra vez y comprobar que al escribir javac y java se obtienen los mensajes habituales de Java. Si sigue apareciendo el mensaje

"javac" no se reconoce como un comando interno o externo, programa o archivo por lotes ejecutable.

... revisar que se han seguido todos los pasos correctamente y volver a repetir el paso 3.

24

Page 25: INSTITUTO POLITÉCNICO NACIONAL · operaciones unarias o binarias excepto con instanceof; todas las sentencias de control (if, while, do…while, for, etc.), además de esto, se soporta

Una vez instalado el kit de desarrollo de java se procede a crear una carpeta en el directorio raíz por ejemplo:

c:\PrototipoJ

y hay que copiar el archivo que se proporciona en el CD llamado PrototipoJ.jar y posteriormente presionar doble click sobre este para la ejecución del programa como se muestra a continuación:

NOTA: Si se prefiere puede ejecutarse desde el CD que se proporciona donde se encuentra el archivo ejecutable (PrototipoJ.jar) dentro de la carpeta PrototipoJ.Inmediatamente ejecuta el programa y aparece una pantalla como esta:

25

Page 26: INSTITUTO POLITÉCNICO NACIONAL · operaciones unarias o binarias excepto con instanceof; todas las sentencias de control (if, while, do…while, for, etc.), además de esto, se soporta

Y a continuación la pantalla principal del programa, tal como se muestra a continuación:

5. CONCLUSIONESDe acuerdo a mi experiencia docente, creó que la programación cualquiera que esta sea sin importar el paradigma o estilo de programación del que se enseñe simpre será mejor comprendida por el estudiante, cuando este puede verla no como algo abstracto sino como algo que puede verse; es por ello que consideró que estas herramientas de software pueden de ser de gran utilidad para que nuestros estudiantes de Computación puedan entender mejor el apasionante mundo de la programación y en especial el de la programación orientada a objetos con el lenguaje Java.

5.1 ImpactoEste software contribuye en facilitar el proceso enseñanza-aprendizaje de la programación orientada a objetos ya que es un sistema que incluye los conceptos y estructuras básicas de un lenguaje de programación como Java, además de ser un programa muy flexible y fácil de usar tanto por los estudiantes como por los profesores. Es importante mencionar que al haber sido escrito en Java le da una gran portabilidad lo que también puede verse como una ventaja.

Para la realización de este trabajo el presupuesto total se ejerció de la siguiente manera como se muestra en la siguiente tabla 4:

26

Page 27: INSTITUTO POLITÉCNICO NACIONAL · operaciones unarias o binarias excepto con instanceof; todas las sentencias de control (if, while, do…while, for, etc.), además de esto, se soporta

Presupuesto Del Proyecto

IPN-CGPI Otras Fuentes De Financiamiento

Asignado Ejercido Asignado EjercidoGasto Corriente $10,000 $10,000 - -Inversión 0 0Total $10,000 $10,000 - -

Tabla 4. Presupuesto Total Del Proyecto

5.2 Productos obtenidosSe obtuvieron los siguientes productos tal como se muestra en la tabla 5:

Número

Descripción

1 Programa ejecutable de la aplicación visual que muestra como se ejecuta un programa en lenguaje Java: PrototipoJ.jar

2 Documentación del proyecto (informe técnico final del proyecto de investigación 2006)Nombre Del Archivo: Informe Técnico Final Del Proyecto De Investigación 2006.pdf

3 Manual de usuario del prototipo de visualización de la ejecución de un programa en lenguaje Java (PrototipoJ 1.0)Nombre Del Archivo: Manual De Usuario Del PrototipoJ.pdf

4 Apuntes de programación básica con Java usando el programa ejecutable realizado en este proyecto.Nombre Del Archivo:Apuntes De Programación Básica Con Java.pdf

Tabla 5. Productos Obtenidos

NOTA: Todos los productos que resultaron de este proyecto se incluyen de manera completa en el CD que se adiciona con este trabajo; dentro de la carpeta que lleva por nombre PrototipoJ.

27

Page 28: INSTITUTO POLITÉCNICO NACIONAL · operaciones unarias o binarias excepto con instanceof; todas las sentencias de control (if, while, do…while, for, etc.), además de esto, se soporta

5.3 Subproductos obtenidosComo resultado del proyecto se obtuvieron los siguientes subproductos como se muestra en la tabla 6:

Difusión de la investigación

Tipo FechasInicioTerminación

Nombre

Congreso Nacional 25/09/2006 - 29/09/2006

Congreso Estatal De Lenguajes De Programación Orientados A Objetos Y Sus Aplicaciones En La Educación.

Lugar: SICOM / Zacatlán, Puebla.

Ponencia: “Como Aprender El Lenguaje Java A Través De Una Aplicación Visual”

Ponencia Nacional 02/10/2006 - 06/10/2006

Congreso Estatal De Lenguajes De Programación Orientados A Objetos Y Sus Aplicaciones En La Educación.

Lugar: SICOM / Zacatlán, Puebla.

Ponencia: “Diseño De Un Prototipo Para La Enseñanza Del Lenguaje Java”

Seminario Institucional 02/08/2005- 24/02/2006

Análisis, Diseño y Programación Orientada A Objetos(FNS5082005)

Duración: 150 hrs.Sede: UPIICSA

Tabla 6. Subproductos Obtenidos.

28

Page 29: INSTITUTO POLITÉCNICO NACIONAL · operaciones unarias o binarias excepto con instanceof; todas las sentencias de control (if, while, do…while, for, etc.), además de esto, se soporta

BIBLIOGRAFÍA

McConnell Steve, “Desarrollo y gestión de proyectos informáticos”, Editorial McGraw-Hill, México, 2003.

Jacobson Ivar, Booch Grady, Rumbaugh James, “El proceso unificado de desarrollo de software”, Editorial Addison Wesley, México, 2004.

Jacobson Ivar, Booch Grady, Rumbaugh James, “El lenguaje unificado de modelado”, Editorial Addison Wesley, México, 2002.

Lemay, Laura, “Aprendiendo Java 2 en 21 días”, Editorial Prentice-Hall, México, 1999.

Eckel, Bruce, “Piensa en Java 2”, Editorial McGraw-Hill, México, 2003.

Deitel & Deitel, “Programación con Java 2”, Editorial Pearson Education, México, 2003.

Ceballos Sierra, Francisco Javier, “El lenguaje de programación de Java”, Editorial Ra-Ma, México, 2001.

Froufe, A. “Java 2: Manual de usuario y tutorial (2ª Edición)”, Editorial Ra-Ma, México, 2000.

Moreno, A., Myller, N., 2004. The intermediate language specification – mcode.

Consulta en Internet:

http://java.sun.com Sun produce nuevas versiones del JDK (Kit de Desarrollo de Java), la biblioteca de clases de Java y otros productos. Si se desea información sobre el lenguaje Java, este sitio es el primer lugar que se debe visitar.

Koala, 2002. DynamicJava. http://koala.ilog.fr/djava/

29