Mi piacerebbe progettare una versione robusta di questa classe (C ++ 11):
class Oscillator
{
private:
std::vector<double> trajectory_;
// Some numbers that are needed to get the trajectory
double xinit_;
double vinit_;
double omega_;
public:
Oscillator(double xinit, double vinit, double omega):
xinit_(xinit), vinit_(vinit), omega_(omega) {}
void Integrate(); // Implementation populates 'trajectory_'
// Implementation prints the trajectory in JSON-friendly format
void PrintJSON(std::ostream &);
double TrajectoryMean();
double TrajectoryStdv();
};
Ecco alcuni pensieri:
- Vorrei sostituire il metodo
PrintJSONcon una variabile privata di classeTrajectoryPrintero qualcosa, in modo che non debba cambiareOscillator::PrintJSONe ricompilareoscillator.cppogni volta che si verifica un problema - Lo stesso vale per il membro
TrajectoryMean. Preferirei avere una classeTrajectoryStatsche faccia questo per me.
L'unico problema con i punti precedenti è questo: entrambe le classi proposte richiedono l'accesso a un membro privato di Oscillator : trajectory_ .
Esiste un modello di progettazione o una soluzione di progettazione generica per questo problema? È quello che sto chiedendo possibile?
Grazie.