Sunteți pe pagina 1din 9

See discussions, stats, and author profiles for this publication at: https://www.researchgate.

net/publication/228542511

Aprendizaje de técnicas avanzadas de Programación Orientada a Objetos


mediante programación de juegos

Article · January 2006

CITATIONS READS

0 871

4 authors, including:

Juan A. Recio-García Baltasar Fernández-Manjón


Complutense University of Madrid Complutense University of Madrid
67 PUBLICATIONS   846 CITATIONS    279 PUBLICATIONS   3,375 CITATIONS   

SEE PROFILE SEE PROFILE

Marco Antonio Gómez-Martín


Complutense University of Madrid
54 PUBLICATIONS   330 CITATIONS   

SEE PROFILE

Some of the authors of this publication are also working on these related projects:

SErious GAmes Network - SEGAN View project

H2020 RAGE View project

All content following this page was uploaded by Baltasar Fernández-Manjón on 01 June 2014.

The user has requested enhancement of the downloaded file.


Aprendizaje de técnicas avanzadas de Programación Orientada
a Objetos mediante programación de juegos

Juan A. Recio García, Baltasar Fernández Manjón, Marco Antonio Gómez Martín
Dpto. Sistemas Informáticos y Programación
Universidad Complutense de Madrid
jareciog@fdi.ucm.es, balta@sip.ucm.es, marcoa@fdi.ucm.es

Resumen La dinámica de la asignatura es la siguiente:


se inicia con el desarrollo una serie de pequeñas
Los juegos constituyen un área muy adecuada aplicaciones de consola, que exponen los pilares
para la elaboración de prácticas de programación. fundamentales del lenguaje de programación, para
En muchos casos, permiten la aplicación directa después pasar a explicar los mecanismos de dise-
de los contenidos teóricos impartidos en otras ño de interfaces gráficas. Durante el año, preten-
asignaturas teóricas, como las relacionadas con demos que los estudiantes capten la filosofía de
estructuras de datos y algoritmia. Además, al ser Java, a saber, la independencia de la plataforma.
prácticas que se alejan de los típicos “problemas Queremos que al finalizar el curso entiendan el
de juguete”, permiten introducir nuevas técnicas o lema o slogan inicial de sus creadores, “Write
tecnologías con demanda en el mundo laboral. En Once, Run Anywhere”, que ha provocado su popu-
este artículo presentamos la experiencia realizada laridad.
en un curso de Laboratorio de Programación III, Sin embargo, la asignatura no debe quedarse
en la que hemos propuesto la implementación de en la descripción y puesta en práctica del lenguaje
Sudokus en Java. Como veremos, el problema nos de programación y sus librerías, sino que debe
ha permitido poner en práctica conceptos de es- también aplicar los conceptos explicados en las
tructuras de datos y algoritmia, así como patrones asignaturas cursadas en los años anteriores y en
de diseño y programación de dispositivos móviles. las que están siendo cursadas en ese momento. En
particular, es deseable que el laboratorio proponga
1. Introducción prácticas en la que se utilicen distintas estructuras
de datos, así como la implementación de algorit-
La asignatura descrita, Laboratorio de Programa-
mos vistos en Metodología y Tecnología de la
ción III, tiene lugar en el tercer año del plan de
Programación. También es fundamental poner en
estudios de la Ingeniería en Informática. En ese
práctica todos los conceptos que están siendo
momento, los alumnos ya han cursado dos años de
explicados en la asignatura de Programación
laboratorio de programación, así como dos asigna-
Orientada a Objetos. Finalmente, hay que destacar
turas teóricas: una de introducción a la programa-
que ésta constituye la última asignatura de labora-
ción y otra de estructuras de datos. Durante ese
torio a la que se enfrentarán los alumnos durante
año, además, muchos de ellos están cursando
sus estudios. Por lo tanto, es la última oportunidad
Metodología y Tecnología de la Programación, en
para explicar los contenidos de carácter práctico.
la que se presentan diversas técnicas algorítmicas
El año siguiente, nuestros alumnos cursarán Inge-
para resolver problemas. Por último, es muy
niería del Software, en la que el esfuerzo del uso
posible que cursen también una asignatura en la
de cualquier tecnología en la implementación del
que se dan a conocer los conceptos teóricos de
proyecto (programación de dispositivos móviles,
Programación Orientada a Objetos (POO).
aplicaciones Web, etc.), debe ser asumida por el
En este contexto, nuestra asignatura, eminen-
alumno [2], por lo que queríamos enseñar algunas
temente práctica, debe proponer la implementa-
de estas tecnologías para su uso en el proyecto del
ción de aplicaciones interactivas que impliquen el
año siguiente.
uso de esquemas algorítmicos. Después de un año
Está claro que todos estos objetivos hacen que
con Pascal y otro con C/C++, este laboratorio
el diseño de las prácticas a realizar durante el año
utiliza Java [1].
es complicada. Además, los alumnos pueden verse
desbordados por la cantidad de materia a apren-
2 Área Temática (no escribir nada aquí)

adaptación para dispositivos móviles utilizando la


arquitectura J2ME. Este último aspecto, además,
nos ha permitido introducir una tecnología nueva
que, muy posiblemente, aprovecharán al año
siguiente en el desarrollo del proyecto de Ingenie-
ría del Software.
En el siguiente apartado detallamos las nor-
mas del juego elegido, así como la justificación de
su elección. La Sección 3 describe qué conceptos
sobre algoritmia se ponen en práctica con el Su-
doku. La Sección 4 introduce los patrones de
diseño y su importancia en el desarrollo de soft-
ware. Posteriormente, la Sección 5 explica la
arquitectura planteada a los alumnos para la reali-
zación del Sudoku, mientras que la Sección 6
muestra el proceso de adaptación a dispositivos
móviles. Para terminar, la Sección 7 presenta las
conclusiones de la experiencia.
Figura 1. Ejemplo de rompecabezas Sudoku

der. Para tratar de contrarrestarlo, era primordial 2. Sudoku


diseñar prácticas que consigan un alto grado de Sudoku [5] es un rompecabezas matemático de
motivación. colocación que se popularizó en Japón en 1986 y
Para esto último, parece que los juegos favo- se dio a conocer en el ámbito internacional en
recen la aceptación por parte de los estudiantes de 2005. El objetivo es rellenar una cuadrícula de
las prácticas [3]. La implementación de un juego 9×9 celdas (81 casillas) dividida en subcuadrícu-
ampliamente extendido hace que muchos alumnos las de 3×3 (también llamadas "cajas" o "regio-
vean en la aplicación final una meta atrayente, y nes") con las cifras del 1 al 9 partiendo de algunos
no un mero fin para aprobar una asignatura. números ya dispuestos en algunas de las celdas.
En este artículo describimos una serie de prác- No se debe repetir ninguna cifra en una misma
ticas propuestas durante el curso 2005-2006. En fila, columna o subcuadrícula. Un sudoku está
particular, se trata de la implementación de varias bien planteado si la solución es única. La Figura 1
versiones de una aplicación para resolver Sudo- muestra un rompecabezas Sudoku. La resolución
kus, que permite tanto la resolución manual por manual del problema requiere paciencia y ciertas
parte del usuario, como la automática por parte de dotes lógicas. La resolución de Sudokus por orde-
la máquina. nador abordable en el nivel en el que se imparte la
Como veremos en los apartados siguientes, las asignatura es el uso de Vuelta-Atrás.
prácticas nos ha permitido cubrir muchos de los Existen muchos juegos que podrían haberse
objetivos citados previamente. En particular, el elegido como práctica para este laboratorio. Las
desarrollo fuerza el uso de metodologías avanza- razones que llevaron a utilizar los Sudokus fueron:
das de diseño de clases, aplicando patrones de
diseño [4]. Los patrones no solo los han tenido
• El juego se ha vuelto muy popular a partir del
que utilizar como usuarios de las clases involucra-
año 2005. La mayoría de los periódicos publi-
das al programar con frameworks como Swing,
can Sudokus en su sección de pasatiempos,
sino también en el momento de diseñar la jerar-
por lo que es muy probable que sus reglas
quía de clases de las aplicaciones. También hemos
sean familiares para los alumnos.
impulsado la reutilización de código y la idea de
• El modelo Orientado a Objetos de los proble-
lenguaje multiplataforma, pues la práctica debía
mas Sudokus es muy intuitivo y fácil de im-
ser implementada para PC, utilizando un interfaz
plementar ya que el juego se compone de un
de consola, para después utilizar la librería de
tablero, bloques, celdas, etc.
componentes Swing de Java, y por último su
XII Jornadas de Enseñanza Universitaria de la Informática 3

Figura 2. Diferentes vistas del Sudoku


• La resolución de los Sudokus permite utilizar solución introducida manualmente por el usuario
distintos algoritmos de búsqueda estudiados es correcta.
desde el punto de vista teórico en otras asigna-
turas. 3. Algoritmos
• La interfaz de usuario es relativamente simple,
lo que nos permite implementarla tanto en La elección del Sudoku permite que los alumnos
modo texto/consola, con ventanas y botones apliquen los algoritmos estudiados en las asigna-
(GUI Swing), utilizando tecnologías Web turas de Estructura de Datos y de la Información
(Applets, JSP, Servlets) o tecnologías móviles y Metodología y Tecnología de la Programación.
(J2ME). En estas asignaturas se estudian diferentes algo-
ritmos de búsqueda aplicables a la resolución de
El amplio conjunto de tecnologías Java que pue- Sudokus.
den aplicarse para implementar un resolutor de Además de llevar a la práctica los conceptos
Sudokus permite plantear prácticas de dificultad teóricos, el sistema permite que los alumnos expe-
incremental que vayan introduciendo nuevos rimenten por ellos mismos la importancia de la
conceptos. De esta forma, se ahorra el tiempo complejidad computacional. Esta materia (expli-
necesario para crear una nueva práctica desde cada en las dos asignaturas citadas) estudia los
cero, se aprende a reutilizar código y se trabaja distintos grados de complejidad de los algoritmos.
con prácticas de un tamaño mayor. Por ejemplo, si Sin embargo, en muchos casos su estudio se reali-
hemos desarrollado el Sudoku en modo texto za sólo en el campo teórico. Cuando los alumnos
podemos reutilizar toda la lógica a la hora de implementan los algoritmos de resolución de
implementarlo utilizando una interfaz gráfica. Sudokus ven de primera mano las consecuencias
Las aplicaciones planteadas a los alumnos in- de las complejidades algorítmicas de las estrate-
cluyen tanto la creación de problemas Sudoku gias implementadas [6]. Por ejemplo, al imple-
como su resolución utilizando distintos algorit- mentar la estrategia de fuerza bruta (sin poda)
mos. Además, el sistema permitirá conocer si la observan que la búsqueda nunca termina por muy
potente que sea la máquina en la que ejecutan la
4 Área Temática (no escribir nada aquí)

estrategia. Obviamente, esto se debe a que una la eficiencia es determinante. Al optimizar las
búsqueda en un espacio de estados con 981 posibi- estrategias implementadas observan las mejoras
lidades plantea una complejidad inalcanzable de rendimiento producidas por la modificación de
actualmente. Esta observación se complementa los distintos elementos estudiados en teoría:
cuando los alumnos implementan los algoritmos estructuras de datos inapropiadas, estructuras de
de búsqueda con podas. Al realizarlos, observan control mal definidas, etc.
que estas estrategias sí que terminan en un tiempo
apropiado. 4. Patrones de diseño
Aunque queda fuera del alcance de los alum-
nos que cursan esta asignatura, la práctica de Los Patrones de diseño [4] son un conjunto de
Sudoku puede ser utilizada para probar otros técnicas o diseños software que permiten escribir
algoritmos estudiados en asignaturas de cursos aplicaciones extensibles y reutilizables. La popu-
posteriores. Es el caso de técnicas de búsquedas laridad de los patrones se ha incrementado noto-
informadas o heurísticas explicadas en asignaturas riamente en los últimos años al utilizarse para la
de Inteligencia Artificial del ciclo superior de la creación de grandes aplicaciones, armazones o
Ingeniería. Siguiendo las ideas descritas en [7], se incluso el propio Java. Según ha aumentado su
podría implementar el resolutor de Sudokus utili- importancia, ha crecido la demanda de profesiona-
zando un sistema de reglas. les con conocimientos sobre patrones en el mundo
En relación con las posibles implementaciones laboral. Sin embargo, los patrones no tienen un
de los algoritmos tenemos que adelantar aquí una lugar específico dentro de ninguna asignatura de
de las características del entorno de desarrollo la carrera de Informática, ofreciéndose en algunos
J2ME. Este entorno cuenta con un sistema emula- casos como asignatura optativa, seminario o de-
dor de dispositivos móviles que tiene la caracterís- ntro del temario de Ingeniería del Software.
tica de poder simular la velocidad real de los Debido a la importancia actual de estas técni-
dispositivos emulados. De esta forma podemos cas hemos querido diseñar nuestro Sudoku apli-
establecer una velocidad de ejecución fija inde- cando algunas de ellas (la más importantes) y de
pendiente de la potencia del PC donde se ejecuta esta forma brindar a los alumnos la posibilidad de
el emulador. Esta característica permite medir la utilizarlas en un ejemplo claro, práctico e intuitivo
eficiencia de los algoritmos independientemente [8].
de la máquina donde se ejecuten. Para motivar a Entre los patrones de diseño destaca la arqui-
los alumnos, les ofrecemos en la última parte que tectura Modelo-Vista-Controlador (MVC). Esta
intenten mejorar los tiempos de respuesta de la arquitectura permite intercambiar fácilmente las
implementación de ejemplo realizada por noso- interfaces de usuario de los programas. Esta carac-
tros. terística es muy importante en los desarrollos
Esta característica también tiene otra ventaja software actuales. Por ejemplo, cualquier aplica-
de cara a la experiencia docente: permite ejempli- ción que se realice con ventanas tiene que estar
ficar a los alumnos que en determinados escena- preparada para su integración en la Web. Aunque
rios no es posible programar suponiendo una gran la lógica no varía, el modo de presentar los datos
disponibilidad de recursos. Los alumnos tienden a al usuario cambiará sustancialmente de una tecno-
adoptar la opinión de que no es necesario optimi- logía a otra.
zar los algoritmos ni intentar minimizar los recur- Los diseños MVC consisten en tres tipos de
sos, al dar por hecho que la máquina será siempre objetos: El Modelo implementa la lógica del
tan potente como para ejecutar su código sin programa, la Vista implementa la interfaz que
ningún problema de eficiencia. Hemos notado esta muestra los datos al usuario, mientras que el
suposición al revisar las distintas implementacio- Controlador define cómo se reacciona ante la
nes de los alumnos en las estrategias de búsqueda. entrada del usuario (se encarga de orquestar el
Cuando después se les pide que ejecuten su códi- flujo de datos entre el Modelo y la Vista). Si no se
go con limitaciones de velocidad y memoria (en el utiliza MVC las aplicaciones suelen mezclar la
emulador de dispositivos móviles) se dan cuenta lógica y presentación de la aplicación, acoplando
de que la disponibilidad ilimitada de recursos no el código y dificultando su reutilización. MVC
siempre es cierta y que en determinados entornos desacopla la presentación y la lógica establecien-
XII Jornadas de Enseñanza Universitaria de la Informática 5

do un protocolo de suscripción y notificación 5. Arquitectura


entre ellos. Una vista deberá reflejar el estado del
modelo y cuando éste cambie será notificada para El diseño de nuestro sistema implementa fielmen-
actualizarse. te la arquitectura MVC. Para ello se divide la
Este mecanismo permite enlazar varias vistas aplicación en dos paquetes: modelo y vista. La
con el mismo modelo o intercambiarlas fácilmen- Figura 3 muestra la organización de código plan-
te. Por ejemplo, la primera práctica sobre el Sudo- teada a los alumnos. Esta figura ilustra la estructu-
ku propone el desarrollo del juego con una inter- ra de paquetes del código, donde se aprecia la
faz textual (consola). En las sucesivas prácticas se existencia de un paquete para el modelo y dos
añadirá la interfaz gráfica con Swing y la interfaz para las vistas (consola y swing). En el paquete de
para dispositivos móviles con MIDP. Aunque clases del modelo aparecen las clases que almace-
nosotros, por limitación temporal, no proponemos nan la estructura de datos del tablero. Además,
el desarrollo de una interfaz Web, el diseño plan- existe un subpaquete donde se implementan las
teado posibilita una fácil adaptación en caso de distintas estrategias de resolución de Sudokus.
incluir estas materias en el temario del curso. En la primera aproximación, no incluimos el
La Figura 2 muestra el diseño MVC utilizado objeto controlador dentro del diseño para que los
por nuestra aplicación Sudoku. El modelo se alumnos comprendan progresivamente el funcio-
comparte por las tres vistas permitiendo su inter- namiento del MVC. De esta forma empezamos
cambio de forma sencilla y organizada. implementando un sistema más cercano al patrón
Para implementar el mecanismo de suscrip- Observer o Model-Delegate. Una vez que los
ción/notificación de eventos del MVC utilizare- alumnos asimilan su funcionamiento ampliamos la
mos el patrón de diseño Observer. Además la aplicación para implementar el patrón MVC com-
aplicación debe permitir la utilización de distintas pleto.
estrategias de resolución de Sudokus. Para imple- Para desarrollar toda esta arquitectura de for-
mentar dicha funcionalidad existe una solución ma progresiva y coherente hemos divido las prác-
muy elegante basada en los patrones de diseño ticas en tres etapas:
Factoría Abstracta y Estrategia.
Aunque nos centremos en la utilización de pa- 1. La primera etapa explica cómo desarrollar
trones para la creación de una aplicación debemos aplicaciones donde la lógica está separada de
resaltar que este tipo de diseños se utilizan exten- la interfaz al usuario, cómo estructurar el có-
sivamente en muchas librerías y armazones. Entre digo para poder aplicar diversas estrategias de
ellas encontramos los paquetes Swing para el resolución en un mismo problema, y por últi-
desarrollo de interfaces gráficas en PCs y el pa- mo cómo elegir de forma elegante el tipo de
quete MIDP para la creación de interfaces gráficas estrategia.
en dispositivos móviles. El dominio de estos
paquetes, especialmente Swing, es uno de los 2. La segunda parte de la práctica de Sudoku pi-
objetivos de nuestro Laboratorio de Programación de implementar la interfaz gráfica. Las carac-
así como de la mayoría de cursos avanzados de terísticas solicitadas son bastante simples, por
Java. Los componentes de Swing junto con su lo que puede servir como una primera intro-
control de eventos están claramente diseñados ducción a Swing. Aparte de este objetivo, se
mediante el patrón de diseño Model-Delegate: una pretende que el alumno se dé cuenta de la
versión simplificada del MVC donde el controla- facilidad de intercambiar la interfaz de usuario
dor y la vista se implementan en la misma clase. (vista) cuando se ha realizado el diseño MVC.
Mediante el estudio de Patrones de Diseño conse-
guimos que los alumnos comprendan sin proble- 3. Por último, la parte final solicita crear una vis-
mas el funcionamiento de Swing o MIDP además ta para dispositivos móviles utilizando la tec-
de aprender a crear nuevas aplicaciones bien nología J2ME. Desde el punto de vista de la
estructuradas. arquitectura, este desarrollo es similar a la se-
Los detalles de todos estos patrones se expli- gunda parte de la práctica ya únicamente hay
can en la siguiente sección junto con la arquitectu- que implementar la interfaz gráfica y añadirla
ra de nuestro sistema Sudoku. al diseño MVC.
6 Área Temática (no escribir nada aquí)

estrategia podrá ser invocada de una manera


estándar.
Para elegir qué estrategia utilizar, normalmen-
te los alumnos suelen usar un gran bloque de
código if-else. En este punto se les indica que si
fuera necesario añadir más estrategias habría que
seguir agrandando ese código, obteniendo final-
mente un bloque bastante ilegible. Entonces se
presenta la solución basada en el patrón Factoría
Abstracta. Este diseño centraliza todo el bloque
condicional en una única clase con un método
abstracto que elige el tipo de estrategia depen-
diendo de una determinada constante.

6. Sudoku en dispositivos móviles


Cuando se elabora el temario para un curso de
programación en el lenguaje Java suele seguirse el
mismo esquema que para otros lenguajes como
C++. Sin embargo, Java cuenta con muchas otras
posibilidades que simplifican mucho el desarrollo
Figura 3. Arquitectura del sistema
de software en comparación con otros lenguajes
de programación. Los temarios más comunes se
centran sólo en una parte de toda la tecnología
La ventaja de este planteamiento es que la lógica Java: Java 2 Standard Edition (J2SE) y, como
desarrollada en la primera parte debe ser reutiliza- mucho, entran en la parte de programación de
da en las siguientes etapas. Por lo tanto, las entre- aplicaciones con interfaz gráfica de usuario. J2SE
gas de las dos últimas partes harán que el alumno incluye una API de programación similar a otros
se dé cuenta de las carencias de su implementa- lenguajes y debe ocupar la mayor parte de la
ción del modelo. De esta forma obtiene una buena asignatura al ser el pilar fundamental de Java. Sin
experiencia de cara a futuros desarrollos reutiliza- embargo también debemos dejar hueco a otras
bles. características importantes del lenguaje: Java 2
Para que las vistas puedan presentar el estado Enterprise Edition (J2EE) y Java 2 Mobile Edition
del modelo se utiliza el patrón observer. Este (J2ME). La primera de ellas incluye las tecnologí-
patrón se basa en una interfaz implementada por as necesarias para desarrollar aplicaciones Web,
todos los componentes que quieren presentar el mientras que la segunda permite desarrollar apli-
estado del modelo. Por lo tanto todas las vistas caciones para dispositivos móviles. En la Figura 4
implementarán esa interfaz y se registrarán en el se muestra la organización de estas tres tecnologí-
modelo como oyentes del mismo. Cuando haya un as y las plataformas a las que están dirigidas.
cambio en el estado del modelo, él mismo se Aunque J2SE sea el eje central de toda la arquitec-
encargará de avisar a todos los oyentes registra- tura Java, hay que tener en cuenta que las otras
dos. Esta parte es la que permite entender la filo- tecnologías están siendo muy reclamadas en el
sofía MVC y el funcionamiento de la librería mundo laboral. La tercera parte de la práctica de
Swing y MIDP, por lo que la primera práctica se Sudoku está diseñada para que los alumnos tengan
centra en su implementación. una mínima experiencia en estos campos. Aunque
Para permitir el fácil intercambio entre las dis- hemos elegido J2ME, también podríamos haber
tintas estrategias de resolución descritas en la desarrollado la versión Web del Sudoku con las
Sección 3, en la primera parte de la práctica tam- tecnologías J2EE. Sin embargo, esta tecnología sí
bién se implementa el patrón de diseño Strategy. se cubre en otras asignaturas opcionales y, por lo
Este tipo de diseño establece que todas las estrate- tanto, los alumnos tienen oportunidad de conocer-
gias de resolución deben implementar una interfaz la fuera de este Laboratorio de Programación.
con un método resuelve(). De esta forma cualquier
XII Jornadas de Enseñanza Universitaria de la Informática 7

El desarrollo de aplicaciones en J2ME tiene


otra ventaja nada despreciable: la motivación
extra de los alumnos. No cabe duda de que los
jóvenes de hoy en día tienen una gran afición por
los teléfonos móviles. La posibilidad de progra-
mar un juego que luego puedan instalar y ejecutar
desde sus terminales hace que los estudiantes
presten una especial atención a las prácticas.
6.1. Programación con J2ME
La arquitectura de J2ME [9] define configuracio-
nes (configurations), perfiles (profiles) y paquetes
opcionales, como elementos básicos para desarro-
llar aplicaciones que se ajustan a las característi-
cas de un amplio rango de dispositivos. Cada
combinación se optimiza según la memoria, la
capacidad de procesamiento y de entrada/salida de
una categoría específica de dispositivos.
Las configuraciones están compuestas por una
máquina virtual y un conjunto mínimo de biblio-
Figura 4. Arquitectura de Java 2
tecas de clases, que hacen de mínimo denomina-
dor común con que contarán todos los dispositivos mientas de compilación y las APIs necesarias para
de una configuración dada. Como muestra la parte la programación de dispositivos móviles inalám-
inferior de la Figura 4 existen dos tipos de confi- bricos. Aunque este entorno permite compilar y
guraciones: Connected Limited Device Configura- ejecutar las aplicaciones en un emulador de termi-
tion (CLDC) y Connected Device Configuration nales móviles, no incorpora ningún IDE que
(CDC). La primera de ellas está diseñada para ofrezca posibilidades de edición y depuración de
dispositivos pequeños con procesador lento, poca código. Para resolver este inconveniente hemos
memoria y conexiones de red intermitentes: telé- utilizado Eclipse, empleado durante todo el curso,
fonos móviles, PDAs, etc. La configuración CDC junto con su plugin para aplicaciones J2ME,
está orientada a los aparatos de potencia compren- EclipseME [11]. Este plugin tiene una instalación
dida entre los que trata CLDC y los ordenadores y configuración muy sencilla, lo que permite que
domésticos. En nuestra práctica del Sudoku utili- el alumno empiece el desarrollo de software sin
zaremos la configuración CLDC. perder apenas tiempo en configurar el entorno.
Con objeto de ofrecer un completo entorno de
ejecución específico para cada categoría de dispo- 6.2. Adaptación del Sudoku a MIDP
sitivos, las configuraciones se deben combinar con Una vez configurado el entorno de desarrollo
un conjunto de APIs de alto nivel (perfiles), que podemos empezar la programación de nuestro
definen el modelo de ciclo de vida de la aplica- Sudoku para móviles. Partiremos del código del
ción, el interfaz de usuario y el acceso a las pro- modelo y crearemos una nueva vista. Al progra-
piedades específicas del dispositivo. Existen mar sobre CLCD+MIDP sólo tendremos un sub-
varios perfiles que posibilitan distintos tipos de conjunto de clases de J2SE disponible. Por ejem-
desarrollos: programación de PDAs con grandes plo, este perfil sólo incluye un tipo de lista Vector
prestaciones, programación de juegos, etc. En por lo que los alumnos deberán adaptar los otros
nuestro caso elegiremos el Mobile Information tipos de datos utilizados. Aunque estas limitacio-
Device Profile (MIDP) diseñado específicamente nes puedan parecer un inconveniente no lo son ya
para teléfonos móviles. que el Sudoku es perfectamente programable
Respecto a las herramientas necesarias para utilizando las clases que ofrece MIDP. Si el alum-
desarrollar aplicaciones J2ME sólo es necesario no utiliza otro tipo de estructuras, éstas serán
Wíreless Toolkit [10], un entorno de desarrollo redundantes o innecesarias. Por lo tanto, la pro-
gratuito de Sun. Este paquete incluye las herra- gramación con un API limitada enseña al alumno
8 Área Temática (no escribir nada aquí)

a programar con los recursos más apropiados Referencias


según sus objetivos.
La implementación de la nueva vista en MIDP [1] Sánchez Allende, J., Huecas, G, Fernández
no presenta grandes problemas a los alumnos. Al Manjón, B., Moreno, P., Java 2: Iniciación y
igual que otras librerías para el desarrollo de Referencia (2ª edición). Ed. McGraw-Hill.
interfaces de usuario podemos utilizar una clase 2005.
formulario junto con sus diferentes elementos [2] Gervas, P, Gómez Martín, M.A., Sarasa, A.
gráficos de interacción (widgets) como etiquetas, Ingeniería del Software: ¿Basta con desarro-
cuadros de texto, etc. La gestión de eventos se llar proyectos o haría falta probar a implan-
organiza de forma similar a la de Swing por medio tar procesos de desarrollo a largo plazo? VII
del patrón Model-Delegate. De nuevo, el estudio Jornadas de Enseñanza Universitaria de la In-
de los Patrones de Diseño nos permite que los formática (JENUI), 2001
alumnos entiendan esta nueva librería sin dificul- [3] Becker, K., Parker, J. R. All I Ever Needed to
tad. Know About Programming, I Learned From
En pocas sesiones los alumnos dispondrán de Re-writing Classic Arcade Games, Interna-
un juego totalmente funcional que podrán empa- tional Academic Conference on the Future of
quetar e instalar en sus propios teléfonos móviles. Game Design and Technology, Michigan,
USA, 2005.
[4] Gamma, E., Helm, R., Johnson, R.,
7. Conclusiones Vlissides, J.. Design Patterns: Elements of
En este artículo hemos presentado un conjunto de Reusable Object-Oriented Software. Addi-
prácticas que se pueden integrar en las asignaturas son-Wesley Professional Computing Series.
de programación en Java. El marco propuesto 1994.
permite ejercitar a los alumnos en los Patrones de [5] Entrada “Sudoku” de la Wikipedia (versión
Diseño y las arquitecturas Modelo-Vista- inglesa) http://en.wikipedia.org/wiki/Sudoku*
Controlador. También permite aplicar los métodos [6] Levitin, A. Analyze that: puzzles and analysis
algorítmicos estudiados en las asignaturas teóricas of algorithms. In Proceedings of the 36th
de la carrera y comprobar de primera mano las SIGCSE Technical Symposium on Computer
consecuencias de los costes computacionales de Science Education. ACM Press .2005.
los mismos. Por último, hemos aprovechado la [7] Gómez Martín, M.A., Díaz Agudo, B. Eva-
arquitectura propuesta para estudiar otras tecnolo- luación de estrategias de razonamiento para
gías ofrecidas por la plataforma Java. Concreta- sistemas basados en reglas. XII Jornadas de
mente, como elemento motivador, invitamos a los Enseñanza Universitaria de la Informática
estudiantes a adaptar la aplicación para que pueda (JENUI), 2006
ejecutarse en sus teléfonos móviles. Esta parte se [8] Nguyen, D., Wong, S. B. Design patterns for
aprovecha de la popularidad de este tipo de dispo- games. In Proceedings of the 33rd SIGCSE
sitivos entre los jóvenes y nos permite mostrar a Technical Symposium on Computer Science
los estudiantes la importancia de la optimización Education. ACM Press. 2002.
de recursos y algoritmos en ciertos entornos limi- [9] Ortiz, E. A Survey of J2ME Today.
tados. http://developers.sun.com/techtopics/mobility
La utilización del juego Sudoku como marco /getstart/articles/survey/*
de aprendizaje de conceptos avanzados de pro- [10] Java Wíreles Toolkit.
gramación en Java es el resultado de la evolución http://java.sun.com/products/sjwtoolkit/*
de la asignatura durante varios años. En las suce- [11] Eclipse ME. http://eclipseme.org/*
sivas ediciones se ha venido utilizando la temática
de los juegos (cuatro en raya, hundir la flota,
buscaminas, …) para ilustrar los conceptos pre- (*todos los enlaces fueron accedidos en Abril de 2006)
sentados en este artículo.

View publication stats

S-ar putea să vă placă și