2010-01-22 4 views
6

Necesito redactar algunas tareas (problemas) para estudiantes que aprenden patrones de diseño. Por favor sugiérame algunas tareas prácticas a corto plazo que ayudarían a los estudiantes a entender la teoría.Tareas prácticas para estudiantes que aprenden patrones de diseño

Necesito algunas ideas interesantes para los patrones de diseño creacional. Sería genial si compartiera su experiencia: cuando un patrón de diseño particular se ajusta perfectamente a su diseño.

Respuesta

2

Recientemente tomé una clase que tenía un aspecto de patrones de diseño (en un curso de medio semestre, pasamos quizás 3-4 semanas revisando los patrones de diseño).

Muchas de nuestras prácticas, y nuestros cursos consistieron en el uso de JHotDraw para explorar el uso de patrones (y la forma de desarrollar un marco). JHotDraw es un marco para editores de dibujo estructurado, p. gráficos dirigidos, o un ejemplo que usamos fue para dibujar un orrery. Hay varios patrones que deben ser entendidos para usar JHotDraw. IIRC los patrones creacionales utilizados incluyeron al menos Abstract Factory y el patrón Prototype.

Puede tomar un tiempo para identificar qué partes de JHotDraw son adecuadas para su curso, pero el Javadoc lo hace útil, identificando el patrón que utiliza una clase y cosas por el estilo.

Como se indica en otra respuesta, los ejemplos en los patrones de diseño de Head First también son excelentes, los usamos en nuestro curso también (nivel de pregrado de pregrado).

+0

Gracias por mencionar ese proyecto de código abierto; puede ser realmente útil para mí (aunque lleva tiempo analizar todo el código y preparar tareas/ejemplos). – Kniganapolke

2

Supongo que debe proponer algunos escenarios y preguntar a los estudiantes qué patrón (s) de diseño usarán para cada uno.

Por ejemplo: Tenemos un objeto que representa un archivo y tiene métodos para abrir y cerrar. Queremos, opcionalmente, registrar un mensaje cada vez que la aplicación llama abierta o cerrada.

Otro ejemplo: tenemos un sistema descendente que responde muy lentamente. Queremos diseñar un componente que ponga en cola las solicitudes para el sistema descendente y las alimente una a una en segundo plano.

2

Si pudiera pensar en un proyecto que podría utilizar muchos patrones en varios puntos que podrían darles algo un poco más carnoso para aprender, mientras que al mismo tiempo enseña patrones a su vez. Estoy pensando en algo así como un simple servidor HTTP, donde puedes aplicar patrones en el manejo de solicitudes, el registro, el mantenimiento de la sesión, todo ese tipo de cosas, para que puedas enseñar diferentes temas como individuos, pero salgas relativamente bien todo estructurado y uno que proporciona experiencia práctica de uso de los diversos patrones que está explorando y de su interacción.

1

Seguimiento al comentario:

Mi intención original era sólo para sugerir un dominio del problema mediante el cual se podía romper cada parte de todo el sistema en partes más significativas mediante el cual los estudiantes podía ver claramente una necesidad para cada patrón. En lugar de varias tareas no relacionadas, pensé que podría seguir esta idea para varias tareas más grandes y dejarles ver cómo funcionaría todo. Eso podría ser demasiado para un estudiante ahora que lo pienso y realmente no solucionó su problema.

Aquí está un ejemplo de la vida real

Sale(Integer_quantity, ICatalogItem _item, IDiscount _discount) implements ITransaction 
Refund(Double _amount, IOrderNumber _orderNumer) implements ITransaction 

Estos se produjo porque alguien decidió utilizar un número mágico "-1" para indicar que no hay venta. Puedes imaginar lo que sucedió cuando las personas reembolsaron un dólar. El IDiscount fue, por supuesto, un patrón de Estrategia para calcular el precio de la venta. Teníamos un objeto de fábrica abstracto para crear todas las ventas.

+0

¿Su idea es compartir todos los componentes/subsistemas entre los estudiantes? – Kniganapolke

+0

bien, más bien, es más una idea tomar algo grande y hacer que lo descompongan en partes más pequeñas. Me imagino esto en unas pocas conferencias. Permítanme agregar un ejemplo a lo anterior. – wheaties

5

Encontré ejemplos en el libro "Head First Design Patterns" muy fácil de entender lo suficiente como para entender los patrones.

+0

+1 tuvo una clase el último semestre que utilizó algunos de los ejemplos de este libro. – Grundlefleck

+0

Gracias por la información, buenos ejemplos son siempre bienvenidos. – Kniganapolke

+1

+1 este libro es excelente, ya que se centra en la pedagogía. Además, me gusta el enfoque Zen para aprender patrones. Los patrones son complejos: los problemas que resuelven no son triviales, su estructura no es trivial y, finalmente, aplicar la estructura a la instancia particular no es trivial. Uno no puede esperar aprender todas estas cosas bien en un curso de un semestre. – Fuhrmanator

0
  1. Mientras que la clasificación fuera con JHotDraw me encontré con esta herramienta académica - DP Miner.
    Se supone que analizar el sistema y buscar las clases que coinciden con algunos patrones de diseño . Acepta el archivo xml (xmi) que describe el sistema (el archivo puede ser generado por Rational Rose después de la ingeniería inversa de el código, utilicé el arquitecto de Enterprize para eso). La versión independiente de la herramienta puede descubrir solo 4 patrones codificados.
    La herramienta también está disponible como complemento para Eclipse. Entonces esta versión acepta también archivo xml que describe un patrón y usa esta descripción para descubrirlo en el sistema. Entonces, la idea es pedirles a los estudiantes que creen descripciones xml para otros patrones y descubrirlos en diferentes sistemas . Sin embargo
    pasé alrededor de 5 horas de ayer tratando de conseguir todo esto de trabajo ... Me las arreglé para conseguir resultados sólo versión independiente de utilizando su descripción de la prueba archivo para JHotDraw (me genera mi propia XML usando Enterprise Architect, pero no hubo resultados con esto). Puede ser más tarde lograré que trabaje para mí y actualizará esta publicación .

  2. "C# 3.0 design patterns" de Judith Bishop contiene ejercicios para todos los de los patrones de diseño clásico.

Cuestiones relacionadas