-
Notifications
You must be signed in to change notification settings - Fork 9
Comment: Classes
attributi:
-vector<float> x_values;
-vector<float> y_values;
metodi:
~Potentials(File f)
~Potentials(vector<float> x_values)
+set_x_values(vector<float> x)
+get_x_values()
+get_y_values()
+eval_func_type_1()
....
+eval_func_type_n()
+plot()
Questa è una possibile progettazione della classe Potentials.
Dall'oggetto che la istanzia si può accedere indirettamente a x_values e y_values (information hiding), passando da metodi getters/setters (dove possono essere effettuate ulteriori operazioni, come ad esempio conversioni a runtime etc). Gli y_values possono essere settati solo tramite il costruttore (leggendo i mesh da file), oppure attraverso i metodi che valutano le funzioni con i valori presenti in x_values. Risulterà anche più semplice verificare la correttezza degli y_values in quanto le anomalie possono scaturire solo dalla lettura del file o dal calcolo delle funzioni, che possono essere testate preventivamente, riducendo quindi la possibilità di introdurre errori attraverso modifiche ulteriori.
Al posto di utilizzare un numero indefinito di funzioni hardcoded, può essere opportuno utilizzare un parser di espressioni matematiche open source. Qui ci sono dei benchmark di soluzioni esistenti.
Istanzio un oggetto Potentials passando un vettore di x_values:
Potentials p = new Potentials(x_values_extern)
Calcoliamo quindi gli y_values attraverso:
p.eval_func_type_1()
Con l'approccio OOP non risulta necessario passare puntatori e variabili come accade attualmente: il metodo legge gli x_values, calcola e scrive i risultati in y_values. Essi potranno essere restituiti attraverso il metodo get_ relativo, nel successivo esempio è usato per fornire i valori all'oggetto waveform al fine di confrontare i valori ottenuti:
waveform.equalsTo ( p.get_y_values() )
A seguito della creazione di una prima classe Potential è emersa la necessità di rivedere il design. L'ideale è utilizzare il Builder design pattern.
Comment creating comment pages, eventually.