Suggerimenti di progettazione necessari per creare un framework MathBuilder

3

Lascia spiegare cosa sto cercando di creare. Sto creando un framework, l'idea è di fornire classi base per generare un problema di matematica.

Perché ho bisogno di questo quadro? Perché a prima vista, mi sono reso conto che quando creo un nuovo problema matematico faccio sempre gli stessi passi.

  • Impostazioni di configurazione come numeri di intervallo . Ad esempio, se sto sviluppando le moltiplicazioni, nel livello principiante si genera solo il primo numero tra 2-5 o livello avanzato, il primo numero sarà tra 6-9, ad esempio.
  • Genera metodo problema . Per tutto il tempo ho bisogno di invocare un metodo come questo per generare il problema. Questo riceve le impostazioni di configurazione e genera il numero in base a loro. E generare l'oggetto con i rispettivi dati.
  • Convalida il problema . A volte il problema generato non è valido. Ad esempio, supponendo che sto creando frazioni nella maggior parte dei casi semplificati, se ricevo 2/4, il programma dovrebbe rilevare che questo non è valido e deve generare un altro come questo, 1/4.
  • Carica la vista . Tutti loro hanno una visualizzazione personalizzata (guarda sotto le immagini).
  • Tutti i problemi devono sapere come VERIFICARE se il risultato dell'utente è corretto .
  • Tutti questi problemi hanno risposte . Alcuni richiedono solo una risposta, anothers può richiedere più di uno, quindi credo che un modo per mantenere la flessibilità allo sviluppatore abbia tutte le risposte che vorrebbe usare.
  • All'inizio ho iniziato a utilizzare PRISM . Generare moduli per ogni problema matematico è stata l'idea e caricarla nel sistema principale.

Credo siano le cose più importanti di questa idea.

Permettetemi di mostrare alcuni problemi che creo in un programma standalone WPF. Qui ho un problema di matematica sulle aree. Quando genero il problema, imposta sulla vista l'oggetto e lo disegna.

A livello principiante, ho impostato le impostazioni di configurazione che caricano solo i tipi quadrati. Ma in anticipo, puoi caricare triangoli e quadrati in modo casuale.

In quest'altro, genera un problema binario come addizione, sottrazione, moltiplicazione o divisione.

In alto, basta generare un singolo problema. L'idea è di mostrare un test o quiz, voglio dire ottenere un foglio di lavoro (che io chiamo come una raccolta di problemi) dove l'utente può rispondere.

Sperodiottenerel'ideaconilmiobruttodisegno.

Comecaricarequestiproblemidimatematica?Comehodettosopra,hoiniziatoautilizzarePRISMeognimodulocontieneuntipodiproblemamatematico.Questaèun'istantaneadellamiaprimademo.

Qui sotto mostra i moduli caricati e centra le rispettive configurazioni o livelli.

Fino al momment, non ho idea di iniziare a creare questo software. So solo che ho bisogno di una domanda | classe problema, classe risposta, classe utente.

Ma mi perdo su quali proprietà dovrebbe contenere in esso.

Per favore dacci una mano su questo quadro. Ho dedicato molto impegno a questa domanda, quindi se qualcuno non è chiaro, fammi sapere per chiarirlo.

    
posta Darf Zon 29.06.2012 - 07:46
fonte

2 risposte

3

Sembri qualcuno che ha una minima esperienza con la progettazione del software. E per te ho un consiglio d'oro: NON CREARE UN QUADRO! (tutto maiuscolo per enfasi).

Se provi a creare astrazioni ora, molto probabilmente creerai quelle sbagliate.

Vuoi creare un'applicazione che crei problemi matematici e li raggruppa in fogli di lavoro. Quindi fallo. Inizia impilando if s e le variabili in code-behind delle viste e guarda dove va. E dopo, puoi iniziare a guardare schemi comuni nel tuo codice ed estrarre astrazioni.

Inoltre, sii pronto a fallire. Sarei piuttosto sorpreso se, al primo tentativo, avessi creato qualcosa che in realtà è come se lo immaginassi. Preparati a eliminare ciò che hai e ricomincia da capo, ora con più esperienza e informazioni su come costruire ciò che vuoi.

    
risposta data 10.10.2017 - 13:59
fonte
2

Trasforma il problema in un gruppo di problemi più piccoli (Moduli se vuoi) che ognuno ha una singola responsabilità. Ad esempio, "Genera metodo problema" è troppo alto per pensare all'implementazione. (considerando tutti i diversi tipi di problemi di cui si è parlato nella generazione: fogli di lavoro, diagrammi, ecc.) Se li dividi in parti più piccole, puoi concentrarti sulla risoluzione di ciascuna di queste parti. Puoi quindi dividere ulteriormente questi problemi se necessario.

Mi sembra che sia un po 'troppo presto per pensare alle lezioni. Un passo utile può essere quello di pensare a questi diversi moduli del programma e come testarli, se non riesci a pensare a come faresti a testarli, allora non hai una visione chiara del loro scopo.

Inoltre, avrai bisogno di una solida architettura per poterlo costruire in modo efficiente, hai molti componenti condivisi come la convalida dei problemi e l'interfaccia grafica, ma i problemi stessi possono essere molto diversi. Sto attualmente leggendo Modelli di design: elementi di oggetti riutilizzabili orientati Software e lo consiglierei.

    
risposta data 10.11.2012 - 22:21
fonte

Leggi altre domande sui tag