Your SlideShare is downloading. ×
Jenui06 sudoku
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Jenui06 sudoku

881
views

Published on


0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
881
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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.esResumen La dinámica de la asignatura es la siguiente: se inicia con el desarrollo una serie de pequeñasLos juegos constituyen un área muy adecuada aplicaciones de consola, que exponen los pilarespara la elaboración de prácticas de programación. fundamentales del lenguaje de programación, paraEn 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 deestructuras 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 elde juguete”, permiten introducir nuevas técnicas o lema o slogan inicial de sus creadores, “Writetecnologí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 quedarseen la que hemos propuesto la implementación de en la descripción y puesta en práctica del lenguajeSudokus en Java. Como veremos, el problema nos de programación y sus librerías, sino que debeha permitido poner en práctica conceptos de es- también aplicar los conceptos explicados en lastructuras de datos y algoritmia, así como patrones asignaturas cursadas en los años anteriores y ende 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 proponga1. 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 lación III, tiene lugar en el tercer año del plan de Programación. También es fundamental poner enestudios de la Ingeniería en Informática. En ese práctica todos los conceptos que están siendomomento, los alumnos ya han cursado dos años de explicados en la asignatura de Programaciónlaboratorio de programación, así como dos asigna- Orientada a Objetos. Finalmente, hay que destacarturas 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 duranteaño, además, muchos de ellos están cursando sus estudios. Por lo tanto, es la última oportunidadMetodologí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 usoposible que cursen también una asignatura en la de cualquier tecnología en la implementación delque 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 algunastemente práctica, debe proponer la implementa- de estas tecnologías para su uso en el proyecto delció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 quecon Pascal y otro con C/C++, este laboratorio el diseño de las prácticas a realizar durante el añoutiliza 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 Sudokuder. Para tratar de contrarrestarlo, era primordial 2. Sudokudiseñar prácticas que consigan un alto grado de Sudoku [5] es un rompecabezas matemático demotivació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 enrecen la aceptación por parte de los estudiantes de 2005. El objetivo es rellenar una cuadrícula delas 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 algunosno 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 mismaticas 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 1versiones de una aplicación para resolver Sudo- muestra un rompecabezas Sudoku. La resoluciónkus, que permite tanto la resolución manual por manual del problema requiere paciencia y ciertasparte 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 haberseobjetivos citados previamente. En particular, el elegido como práctica para este laboratorio. Lasdesarrollo fuerza el uso de metodologías avanza- razones que llevaron a utilizar los Sudokus fueron:das de diseño de clases, aplicando patrones dediseño [4]. Los patrones no solo los han tenido • El juego se ha vuelto muy popular a partir delque 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 reglasquí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 unde 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 deEl 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 conceptosSudokus 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 laconceptos. 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 loscero, 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 alumnospodemos reutilizar toda la lógica a la hora de implementan los algoritmos de resolución deimplementarlo 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 lasbúsqueda en un espacio de estados con 981 posibi- estrategias implementadas observan las mejoraslidades plantea una complejidad inalcanzable de rendimiento producidas por la modificación deactualmente. Esta observación se complementa los distintos elementos estudiados en teoría:cuando los alumnos implementan los algoritmos estructuras de datos inapropiadas, estructuras dede búsqueda con podas. Al realizarlos, observan control mal definidas, etc.que estas estrategias sí que terminan en un tiempoapropiado. 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 deSudoku puede ser utilizada para probar otros técnicas o diseños software que permiten escribiralgoritmos 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 lade Inteligencia Artificial del ciclo superior de la creación de grandes aplicaciones, armazones oIngeniería. Siguiendo las ideas descritas en [7], se incluso el propio Java. Según ha aumentado supodrí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 unde los algoritmos tenemos que adelantar aquí una lugar específico dentro de ninguna asignatura dede las características del entorno de desarrollo la carrera de Informática, ofreciéndose en algunosJ2ME. 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 dependiente de la potencia del PC donde se ejecuta esta forma brindar a los alumnos la posibilidad deel emulador. Esta característica permite medir la utilizarlas en un ejemplo claro, práctico e intuitivoeficiencia 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). Estaintenten mejorar los tiempos de respuesta de la arquitectura permite intercambiar fácilmente lasimplementació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 estarficar a los alumnos que en determinados escena- preparada para su integración en la Web. Aunquerios no es posible programar suponiendo una gran la lógica no varía, el modo de presentar los datosdisponibilidad 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 desos, al dar por hecho que la máquina será siempre objetos: El Modelo implementa la lógica deltan potente como para ejecutar su código sin programa, la Vista implementa la interfaz queningún problema de eficiencia. Hemos notado esta muestra los datos al usuario, mientras que elsuposición al revisar las distintas implementacio- Controlador define cómo se reacciona ante lanes de los alumnos en las estrategias de búsqueda. entrada del usuario (se encarga de orquestar elCuando después se les pide que ejecuten su códi- flujo de datos entre el Modelo y la Vista). Si no sego con limitaciones de velocidad y memoria (en el utiliza MVC las aplicaciones suelen mezclar laemulador de dispositivos móviles) se dan cuenta lógica y presentación de la aplicación, acoplandode que la disponibilidad ilimitada de recursos no el código y dificultando su reutilización. MVCsiempre 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 5do un protocolo de suscripción y notificación 5. Arquitecturaentre ellos. Una vista deberá reflejar el estado delmodelo 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. Lacon 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 lafaz textual (consola). En las sucesivas prácticas se existencia de un paquete para el modelo y dosañadirá la interfaz gráfica con Swing y la interfaz para las vistas (consola y swing). En el paquete depara 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 lasteado 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 lospor 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 empezamoscambio 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 losción/notificación de eventos del MVC utilizare- alumnos asimilan su funcionamiento ampliamos lamos 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 desarrollartrones para la creación de una aplicación debemos aplicaciones donde la lógica está separada deresaltar 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 deellas 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 dequete MIDP para la creación de interfaces gráficas estrategia.en dispositivos móviles. El dominio de estospaquetes, 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, porJava. 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, semediante el patrón de diseño Model-Delegate: una pretende que el alumno se dé cuenta de laversión simplificada del MVC donde el controla- facilidad de intercambiar la interfaz de usuariodor 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 laestructuradas. arquitectura, este desarrollo es similar a la se- Los detalles de todos estos patrones se expli- gunda parte de la práctica ya únicamente haycan en la siguiente sección junto con la arquitectu- que implementar la interfaz gráfica y añadirlara 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íaLa ventaja de este planteamiento es que la lógica Java: Java 2 Standard Edition (J2SE) y, comodesarrollada en la primera parte debe ser reutiliza- mucho, entran en la parte de programación deda en las siguientes etapas. Por lo tanto, las entre- aplicaciones con interfaz gráfica de usuario. J2SEgas de las dos últimas partes harán que el alumno incluye una API de programación similar a otrosse dé cuenta de las carencias de su implementa- lenguajes y debe ocupar la mayor parte de lación del modelo. De esta forma obtiene una buena asignatura al ser el pilar fundamental de Java. Sinexperiencia de cara a futuros desarrollos reutiliza- embargo también debemos dejar hueco a otrasbles. características importantes del lenguaje: Java 2 Para que las vistas puedan presentar el estado Enterprise Edition (J2EE) y Java 2 Mobile Editiondel 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 4implementará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 otrasdos. Esta parte es la que permite entender la filo- tecnologías están siendo muy reclamadas en elsofía MVC y el funcionamiento de la librería mundo laboral. La tercera parte de la práctica deSwing y MIDP, por lo que la primera práctica se Sudoku está diseñada para que los alumnos tengancentra 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 habertintas estrategias de resolución descritas en la desarrollado la versión Web del Sudoku con lasSecció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 loEste 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 tieneotra ventaja nada despreciable: la motivaciónextra de los alumnos. No cabe duda de que losjóvenes de hoy en día tienen una gran afición porlos teléfonos móviles. La posibilidad de progra-mar un juego que luego puedan instalar y ejecutardesde sus terminales hace que los estudiantespresten una especial atención a las prácticas.6.1. Programación con J2MELa arquitectura de J2ME [9] define configuracio-nes (configurations), perfiles (profiles) y paquetesopcionales, como elementos básicos para desarro-llar aplicaciones que se ajustan a las característi-cas de un amplio rango de dispositivos. Cadacombinación se optimiza según la memoria, lacapacidad de procesamiento y de entrada/salida deuna categoría específica de dispositivos. Las configuraciones están compuestas por unamáquina virtual y un conjunto mínimo de biblio- Figura 4. Arquitectura de Java 2tecas 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 parade 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 yguraciones: 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 dedispositivos pequeños con procesador lento, poca código. Para resolver este inconveniente hemosmemoria 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óndida entre los que trata CLDC y los ordenadores y configuración muy sencilla, lo que permite quedomésticos. En nuestra práctica del Sudoku utili- el alumno empiece el desarrollo de software sinzaremos la configuración CLDC. perder apenas tiempo en configurar el entorno. Con objeto de ofrecer un completo entorno deejecución específico para cada categoría de dispo- 6.2. Adaptación del Sudoku a MIDPsitivos, las configuraciones se deben combinar con Una vez configurado el entorno de desarrolloun conjunto de APIs de alto nivel (perfiles), que podemos empezar la programación de nuestrodefinen el modelo de ciclo de vida de la aplica- Sudoku para móviles. Partiremos del código delció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 Vectorprestaciones, programación de juegos, etc. En por lo que los alumnos deberán adaptar los otrosnuestro 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 yapara 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ánWí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 Referenciassegún sus objetivos. La implementación de la nueva vista en MIDP [1] Sánchez Allende, J., Huecas, G, Fernándezno presenta grandes problemas a los alumnos. Al Manjón, B., Moreno, P., Java 2: Iniciación yigual 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? VIIdel 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), 2001alumnos entiendan esta nueva librería sin dificul- [3] Becker, K., Parker, J. R. All I Ever Needed totad. 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 ofquetar 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 ofEn 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ónDiseñ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 analysisalgorítmicos estudiados en las asignaturas teóricas of algorithms. In Proceedings of the 36thde la carrera y comprobar de primera mano las SIGCSE Technical Symposium on Computerconsecuencias 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 paragías ofrecidas por la plataforma Java. Concreta- sistemas basados en reglas. XII Jornadas demente, como elemento motivador, invitamos a los Enseñanza Universitaria de la Informáticaestudiantes a adaptar la aplicación para que pueda (JENUI), 2006ejecutarse en sus teléfonos móviles. Esta parte se [8] Nguyen, D., Wong, S. B. Design patterns foraprovecha de la popularidad de este tipo de dispo- games. In Proceedings of the 33rd SIGCSEsitivos entre los jóvenes y nos permite mostrar a Technical Symposium on Computer Sciencelos 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áticade 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.