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
PrintJSON
con una variabile privata di classeTrajectoryPrinter
o qualcosa, in modo che non debba cambiareOscillator::PrintJSON
e ricompilareoscillator.cpp
ogni volta che si verifica un problema - Lo stesso vale per il membro
TrajectoryMean
. Preferirei avere una classeTrajectoryStats
che 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.