SlideShare una empresa de Scribd logo
1 de 8
Descargar para leer sin conexión
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.

Más contenido relacionado

La actualidad más candente

Portafolio calculo diferencial 2 a
Portafolio calculo diferencial 2 aPortafolio calculo diferencial 2 a
Portafolio calculo diferencial 2 aCarlos Alcivar
 
Programación en Lenguajes Estructurados 2012. Parte II
Programación en Lenguajes Estructurados 2012. Parte IIProgramación en Lenguajes Estructurados 2012. Parte II
Programación en Lenguajes Estructurados 2012. Parte IIEuler V. Terán Yépez
 
Programacion paralelay distribuida
Programacion paralelay distribuidaProgramacion paralelay distribuida
Programacion paralelay distribuidaJudith Wuera
 
Prontuario del curso
Prontuario del cursoProntuario del curso
Prontuario del cursonegroronny
 
Clase # 1 fundamentos de programación
Clase # 1   fundamentos de programaciónClase # 1   fundamentos de programación
Clase # 1 fundamentos de programaciónpamelafajardovera
 
¿Qué estudiar para dedicarse a los videojuegos?
¿Qué estudiar para dedicarse a los videojuegos?¿Qué estudiar para dedicarse a los videojuegos?
¿Qué estudiar para dedicarse a los videojuegos?Carlos Cauich
 
03 prontuario del curso
03 prontuario del curso03 prontuario del curso
03 prontuario del cursonegroronny
 
Presentación: tutorial y simulaciones
Presentación: tutorial y simulacionesPresentación: tutorial y simulaciones
Presentación: tutorial y simulacionesComunidadVirtual
 
portafolio y revistas cientificas junior
portafolio y revistas cientificas juniorportafolio y revistas cientificas junior
portafolio y revistas cientificas juniorRoque Macias E.
 
Lenguajes de programación 5 marzo 2013
Lenguajes de programación 5 marzo 2013Lenguajes de programación 5 marzo 2013
Lenguajes de programación 5 marzo 2013Belén
 
Ejemplo 2 - Actividad con App Móviles en modalidad Flipped Classroom
Ejemplo 2 - Actividad con App Móviles en modalidad Flipped ClassroomEjemplo 2 - Actividad con App Móviles en modalidad Flipped Classroom
Ejemplo 2 - Actividad con App Móviles en modalidad Flipped ClassroomIrma Noemí No
 
portofalio completo de calculo diferencial Cesar
portofalio completo de calculo diferencial Cesarportofalio completo de calculo diferencial Cesar
portofalio completo de calculo diferencial CesarRoque Macias E.
 
Programa Seminario Computación y Educación
Programa Seminario Computación y EducaciónPrograma Seminario Computación y Educación
Programa Seminario Computación y EducaciónJuan Ruffino
 
Fundamentación teórica del_prototipo_de_software_educativo_fig
Fundamentación teórica del_prototipo_de_software_educativo_figFundamentación teórica del_prototipo_de_software_educativo_fig
Fundamentación teórica del_prototipo_de_software_educativo_figLilibeth Jaimes
 

La actualidad más candente (17)

Portafolio calculo diferencial 2 a
Portafolio calculo diferencial 2 aPortafolio calculo diferencial 2 a
Portafolio calculo diferencial 2 a
 
Programación en Lenguajes Estructurados 2012. Parte II
Programación en Lenguajes Estructurados 2012. Parte IIProgramación en Lenguajes Estructurados 2012. Parte II
Programación en Lenguajes Estructurados 2012. Parte II
 
Programacion paralelay distribuida
Programacion paralelay distribuidaProgramacion paralelay distribuida
Programacion paralelay distribuida
 
Prontuario del curso
Prontuario del cursoProntuario del curso
Prontuario del curso
 
414
414414
414
 
Portafolio calculo diferencial2
Portafolio calculo diferencial2Portafolio calculo diferencial2
Portafolio calculo diferencial2
 
Clase # 1 fundamentos de programación
Clase # 1   fundamentos de programaciónClase # 1   fundamentos de programación
Clase # 1 fundamentos de programación
 
¿Qué estudiar para dedicarse a los videojuegos?
¿Qué estudiar para dedicarse a los videojuegos?¿Qué estudiar para dedicarse a los videojuegos?
¿Qué estudiar para dedicarse a los videojuegos?
 
03 prontuario del curso
03 prontuario del curso03 prontuario del curso
03 prontuario del curso
 
Presentación: tutorial y simulaciones
Presentación: tutorial y simulacionesPresentación: tutorial y simulaciones
Presentación: tutorial y simulaciones
 
portafolio y revistas cientificas junior
portafolio y revistas cientificas juniorportafolio y revistas cientificas junior
portafolio y revistas cientificas junior
 
Lenguajes de programación 5 marzo 2013
Lenguajes de programación 5 marzo 2013Lenguajes de programación 5 marzo 2013
Lenguajes de programación 5 marzo 2013
 
Ejemplo 2 - Actividad con App Móviles en modalidad Flipped Classroom
Ejemplo 2 - Actividad con App Móviles en modalidad Flipped ClassroomEjemplo 2 - Actividad con App Móviles en modalidad Flipped Classroom
Ejemplo 2 - Actividad con App Móviles en modalidad Flipped Classroom
 
portofalio completo de calculo diferencial Cesar
portofalio completo de calculo diferencial Cesarportofalio completo de calculo diferencial Cesar
portofalio completo de calculo diferencial Cesar
 
Programa Seminario Computación y Educación
Programa Seminario Computación y EducaciónPrograma Seminario Computación y Educación
Programa Seminario Computación y Educación
 
Modulo automatas-y-lenguajes-formales
Modulo automatas-y-lenguajes-formalesModulo automatas-y-lenguajes-formales
Modulo automatas-y-lenguajes-formales
 
Fundamentación teórica del_prototipo_de_software_educativo_fig
Fundamentación teórica del_prototipo_de_software_educativo_figFundamentación teórica del_prototipo_de_software_educativo_fig
Fundamentación teórica del_prototipo_de_software_educativo_fig
 

Similar a Jenui06 sudoku

Propuesta Pedagógica
Propuesta PedagógicaPropuesta Pedagógica
Propuesta PedagógicaEric Sanchez
 
Un Primer Paso a la Agilidad: Retrospectivas para el Aprendizaje de la Ingeni...
Un Primer Paso a la Agilidad: Retrospectivas para el Aprendizaje de la Ingeni...Un Primer Paso a la Agilidad: Retrospectivas para el Aprendizaje de la Ingeni...
Un Primer Paso a la Agilidad: Retrospectivas para el Aprendizaje de la Ingeni...Agile Spain
 
CENTRO DE INNOVACIÓN TECNOLÓGICO
CENTRO DE INNOVACIÓN TECNOLÓGICOCENTRO DE INNOVACIÓN TECNOLÓGICO
CENTRO DE INNOVACIÓN TECNOLÓGICOyuribel
 
CENTRO DE INNOVACIÓN TECNOLÓGICO
CENTRO DE INNOVACIÓN TECNOLÓGICOCENTRO DE INNOVACIÓN TECNOLÓGICO
CENTRO DE INNOVACIÓN TECNOLÓGICOyuribel
 
CENTRO DE INNOVACIÓN TECNOLÓGICO
CENTRO DE INNOVACIÓN TECNOLÓGICOCENTRO DE INNOVACIÓN TECNOLÓGICO
CENTRO DE INNOVACIÓN TECNOLÓGICOyuribel
 
Primeros pasos para programar aplicaciones moviles en java
Primeros pasos para programar aplicaciones moviles en javaPrimeros pasos para programar aplicaciones moviles en java
Primeros pasos para programar aplicaciones moviles en javaPercy Acosta
 
App en Android Studio
App en Android StudioApp en Android Studio
App en Android StudioLuisCarrasco
 
Prueba informatica
Prueba informaticaPrueba informatica
Prueba informaticaJuan Gunsha
 
Aspect Oriented Programming introduction
Aspect Oriented Programming introductionAspect Oriented Programming introduction
Aspect Oriented Programming introductionMiguel Pastor
 

Similar a Jenui06 sudoku (20)

Propuesta Pedagógica
Propuesta PedagógicaPropuesta Pedagógica
Propuesta Pedagógica
 
Conferencia Armenia Manuel Ortega
Conferencia Armenia Manuel OrtegaConferencia Armenia Manuel Ortega
Conferencia Armenia Manuel Ortega
 
Opcion 5 Certificacion
Opcion 5 CertificacionOpcion 5 Certificacion
Opcion 5 Certificacion
 
Un Primer Paso a la Agilidad: Retrospectivas para el Aprendizaje de la Ingeni...
Un Primer Paso a la Agilidad: Retrospectivas para el Aprendizaje de la Ingeni...Un Primer Paso a la Agilidad: Retrospectivas para el Aprendizaje de la Ingeni...
Un Primer Paso a la Agilidad: Retrospectivas para el Aprendizaje de la Ingeni...
 
CENTRO DE INNOVACIÓN TECNOLÓGICO
CENTRO DE INNOVACIÓN TECNOLÓGICOCENTRO DE INNOVACIÓN TECNOLÓGICO
CENTRO DE INNOVACIÓN TECNOLÓGICO
 
CENTRO DE INNOVACIÓN TECNOLÓGICO
CENTRO DE INNOVACIÓN TECNOLÓGICOCENTRO DE INNOVACIÓN TECNOLÓGICO
CENTRO DE INNOVACIÓN TECNOLÓGICO
 
CENTRO DE INNOVACIÓN TECNOLÓGICO
CENTRO DE INNOVACIÓN TECNOLÓGICOCENTRO DE INNOVACIÓN TECNOLÓGICO
CENTRO DE INNOVACIÓN TECNOLÓGICO
 
Manual de raptor
Manual de raptor Manual de raptor
Manual de raptor
 
MANUAL DE RAPTOR 2
MANUAL DE RAPTOR 2MANUAL DE RAPTOR 2
MANUAL DE RAPTOR 2
 
Manual de raptor1
Manual de raptor1Manual de raptor1
Manual de raptor1
 
Manual de raptor
Manual de raptor Manual de raptor
Manual de raptor
 
manual 12
manual 12manual 12
manual 12
 
Primeros pasos para programar aplicaciones moviles en java
Primeros pasos para programar aplicaciones moviles en javaPrimeros pasos para programar aplicaciones moviles en java
Primeros pasos para programar aplicaciones moviles en java
 
Programación por pares mediante el entorno Eclipse, una visión educativa
Programación por pares mediante el entorno Eclipse, una visión educativaProgramación por pares mediante el entorno Eclipse, una visión educativa
Programación por pares mediante el entorno Eclipse, una visión educativa
 
P informatica
P informaticaP informatica
P informatica
 
App en Android Studio
App en Android StudioApp en Android Studio
App en Android Studio
 
Prueba informatica
Prueba informaticaPrueba informatica
Prueba informatica
 
Aspect Oriented Programming introduction
Aspect Oriented Programming introductionAspect Oriented Programming introduction
Aspect Oriented Programming introduction
 
Esis
EsisEsis
Esis
 
Contexto de la Programación
Contexto de la Programación Contexto de la Programación
Contexto de la Programación
 

Más de Aldo Hernán Zanabria Gálvez

“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...
“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...
“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...Aldo Hernán Zanabria Gálvez
 
Organizadores visuales sobre las corrientes contemporaneas aldo zanabria ga...
Organizadores visuales sobre las corrientes contemporaneas   aldo zanabria ga...Organizadores visuales sobre las corrientes contemporaneas   aldo zanabria ga...
Organizadores visuales sobre las corrientes contemporaneas aldo zanabria ga...Aldo Hernán Zanabria Gálvez
 
Resumen final - Seminario Taller TIC Emprede Turismo
Resumen final - Seminario Taller TIC Emprede TurismoResumen final - Seminario Taller TIC Emprede Turismo
Resumen final - Seminario Taller TIC Emprede TurismoAldo Hernán Zanabria Gálvez
 
Clase de Tecnologías de la Información y Comunicaciones
Clase de Tecnologías de la Información y ComunicacionesClase de Tecnologías de la Información y Comunicaciones
Clase de Tecnologías de la Información y ComunicacionesAldo Hernán Zanabria Gálvez
 

Más de Aldo Hernán Zanabria Gálvez (20)

“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...
“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...
“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...
 
mejorando la web guia de html 5
mejorando la web guia de html 5mejorando la web guia de html 5
mejorando la web guia de html 5
 
Guía de Prácticas word beta.pdf
Guía de Prácticas word beta.pdfGuía de Prácticas word beta.pdf
Guía de Prácticas word beta.pdf
 
emprendimiento en la era del conocimiento.pptx
emprendimiento en la era del conocimiento.pptxemprendimiento en la era del conocimiento.pptx
emprendimiento en la era del conocimiento.pptx
 
Fundamentos de Programación
Fundamentos de ProgramaciónFundamentos de Programación
Fundamentos de Programación
 
Organizadores visuales sobre las corrientes contemporaneas aldo zanabria ga...
Organizadores visuales sobre las corrientes contemporaneas   aldo zanabria ga...Organizadores visuales sobre las corrientes contemporaneas   aldo zanabria ga...
Organizadores visuales sobre las corrientes contemporaneas aldo zanabria ga...
 
didactica
didacticadidactica
didactica
 
Tarea1 aldo zanabria
Tarea1 aldo zanabriaTarea1 aldo zanabria
Tarea1 aldo zanabria
 
Tarea 2 aldo zanabria
Tarea 2 aldo zanabriaTarea 2 aldo zanabria
Tarea 2 aldo zanabria
 
Carolinos del milenio pasado - Puno
Carolinos del milenio pasado - PunoCarolinos del milenio pasado - Puno
Carolinos del milenio pasado - Puno
 
ingenieria de sistemas
ingenieria de sistemasingenieria de sistemas
ingenieria de sistemas
 
Electricidad con recursos renovables
Electricidad con recursos renovablesElectricidad con recursos renovables
Electricidad con recursos renovables
 
Variables
VariablesVariables
Variables
 
Estructura y modelo organizacional estatal
Estructura y modelo organizacional estatal Estructura y modelo organizacional estatal
Estructura y modelo organizacional estatal
 
Calidad de Agua
Calidad de AguaCalidad de Agua
Calidad de Agua
 
Resumen final - Seminario Taller TIC Emprede Turismo
Resumen final - Seminario Taller TIC Emprede TurismoResumen final - Seminario Taller TIC Emprede Turismo
Resumen final - Seminario Taller TIC Emprede Turismo
 
Clase de Tecnologías de la Información y Comunicaciones
Clase de Tecnologías de la Información y ComunicacionesClase de Tecnologías de la Información y Comunicaciones
Clase de Tecnologías de la Información y Comunicaciones
 
Plan de Trabajo Integración de la Mujer
Plan de Trabajo Integración de la MujerPlan de Trabajo Integración de la Mujer
Plan de Trabajo Integración de la Mujer
 
peritaciones y tasación puno
peritaciones y tasación punoperitaciones y tasación puno
peritaciones y tasación puno
 
producción en la empresa turística
producción en la empresa turísticaproducción en la empresa turística
producción en la empresa turística
 

Jenui06 sudoku

  • 1. 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. 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
  • 3. 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. 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-
  • 5. 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. 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
  • 7. 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. 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.