2010-01-22 15 views
6

Ho bisogno di comporre alcuni compiti (problemi) per gli studenti che apprendono modelli di progettazione. Per favore suggeriscimi alcune attività pratiche a breve termine che aiutino gli studenti a capire la teoria.Attività pratiche per gli studenti che apprendono modelli di progettazione

Ho bisogno di alcune idee interessanti per i modelli di progettazione creativa. Sarebbe bello se tu condividessi la tua esperienza: quando un particolare disegno si adatta perfettamente al tuo design.

risposta

2

Recentemente ho seguito una lezione che aveva un aspetto di progettazione (in un corso semestrale, abbiamo impiegato forse 3-4 settimane per esaminare i modelli di progettazione).

Molte delle nostre esercitazioni e dei nostri corsi consistevano nell'uso di JHotDraw per esplorare il loro uso di schemi (oltre a come sviluppare un framework). JHotDraw è un framework per editor di disegni strutturati, ad es. grafici diretti, o un esempio che abbiamo usato per disegnare un orrery. Esistono diversi pattern che devono essere compresi per poter utilizzare JHotDraw. IIRC i pattern creativi usati includevano almeno Abstract Factory e il pattern Prototype.

Potrebbe essere necessario un po 'di tempo per identificare quali parti di JHotDraw sono adatte al corso, ma Javadoc lo rende utile, identificando il modello utilizzato da una classe e simili.

Come indicato in un'altra risposta, anche gli esempi in Modelli di progettazione First Head sono eccellenti, li abbiamo utilizzati anche nel nostro corso (livello annuale degli studenti universitari).

+0

Grazie per aver menzionato quel progetto open source - può essere davvero utile per me (anche se ci vuole tempo per analizzare tutto il codice e preparare compiti/esempi). – Kniganapolke

2

Suppongo che dovresti inventare alcuni scenari e chiedere agli studenti quali modelli di progetto userebbero per ciascuno.

Ad esempio: abbiamo un oggetto che rappresenta un file e ha metodi di apertura e chiusura. Vogliamo facoltativamente registrare un messaggio ogni volta che l'applicazione chiama aperta o chiusa.

Un altro esempio: abbiamo un sistema a valle che risponde molto lentamente. Vogliamo progettare un componente che accoderà le richieste per il sistema a valle e le manterrà una ad una in background.

2

Se potessi pensare a un progetto che potrebbe utilizzare molti modelli in vari punti che potrebbero dare loro qualcosa di un po 'più carnoso con cui imparare, mentre allo stesso tempo insegnare modelli a turno. Sto pensando a qualcosa di simile a un semplice server HTTP, in cui potresti applicare i pattern nella gestione delle richieste, nella registrazione, nella manutenzione delle sessioni, tutto quel tipo di roba, in modo da poter insegnare diversi come singoli argomenti, ma con una relativamente buona strutturato intero e uno che dà l'esperienza pratica di utilizzare i vari modelli che stai esplorando e della loro interazione.

1

seguito al commento:

Il mio intento originale era solo di suggerire un dominio problema per cui si potrebbe rompere ogni parte di tutto il sistema in porzioni più significative per cui gli studenti chiaramente potrebbe vedere una necessità di ogni modello. Ho pensato che invece di diversi compiti non collegati si poteva seguire questa idea per diversi compiti più grandi e far vedere loro come avrebbe funzionato tutti insieme. Questo potrebbe essere troppo per uno studente ora che ci penso e non ha risolto il problema.

Ecco un esempio di vita reale

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

Questi avvenne perché qualcuno ha deciso di utilizzare un numero magico "-1" per indicare nessuna vendita. Puoi immaginare cosa è successo quando la gente ha introdotto un rimborso per 1 dollaro. Il IDiscount era, ovviamente, un modello di strategia per calcolare il prezzo della vendita. Avevamo un oggetto fabbrica astratto per creare tutte le vendite.

+0

La tua idea è di condividere tutti i componenti/sottosistemi tra gli studenti? – Kniganapolke

+0

beh, piuttosto, è più un'idea prendere qualcosa di grande e farglieli scomporre in parti più piccole. Lo immaginerei su alcune conferenze. Lasciatemi aggiungere un esempio a quanto sopra. – wheaties

5

Ho trovato esempi nel libro "Head First Design Patterns" molto facile da comprendere ma abbastanza da comprendere gli schemi.

+0

+1 aveva una classe lo scorso semestre che utilizzava alcuni degli esempi di questo libro. – Grundlefleck

+0

Grazie per le informazioni, i buoni esempi sono sempre benvenuti. – Kniganapolke

+1

+1 questo libro è fantastico, in quanto si concentra sulla pedagogia. Inoltre, mi piace l'approccio Zen ai modelli di apprendimento. I pattern sono complessi: i problemi che risolvono non sono banali, la loro struttura non è banale e l'applicazione della struttura alla particolare istanza non è banale. Non ci si può aspettare di imparare tutte queste cose bene in un corso di un semestre. – Fuhrmanator

0
  1. Mentre smistamento con JHotDraw ho trovato questo strumento accademico - DP Miner.
    Si suppone di analizzare il sistema e cercare le classi che corrispondono ad alcuni modelli di progettazione . Accetta xml (xmi) file che descrive il sistema (il file può essere generato da Rational Rose dopo il reverse engineering del codice , per questo ho usato Enterprize Architect per quello). La versione standalone dello strumento è in grado di rilevare solo 4 pattern hardcoded.
    Lo strumento è disponibile anche come plugin per Eclipse. Quindi questa versione accetta anche il file xml che descrive uno schema e usa questa descrizione per scoprire nel sistema. Quindi l'idea è chiedere agli studenti di creare descrizioni xml per altri modelli e scoprirli in diversi sistemi .
    Tuttavia ho speso circa 5 ore di ieri cercando di ottenere tutto questo lavoro ... sono riuscito a ottenere risultati solo dalla versione autonoma utilizzando la loro descrizione di prova programma per JHotDraw (ho generato il mio propria XML utilizzando Enterprise Architect, ma non ci sono risultati con esso). Forse più tardi riuscirò a far funzionare per me e aggiornerò questo post .

  2. "Modelli di design C# 3.0" di Judith Bishop contiene gli esercizi per tutti gli dei modelli di design classici.

Problemi correlati