Parere su classe point

di il
2 risposte

Parere su classe point

Salve, dovrei implementare una classe per tenere traccia della posizione di un punto che si muove in uno spazio tridimensionale; per ora ho inziato così, secondo voi va bene??Grazie xd
class point
{
private:
double _x,_y,_z;

public:
void point();
void point(double, double, double);
void ~point();
double getx();
void setx(double x);

double gety();
void sety(double x);

double getz ();
void setz(double x);
}

point::point(){
_x = 0;
_y = 0;
_z = 0;
} ;

point::point(const double x, const double y, const double z)
{
_x = x;
_y = y;
_z = z;
} ;
//get e set implementate anche per y e z
double point::getx()
{
return _x;
};

void point::setx(double x)
{
_x=x;
};

2 Risposte

  • Re: Parere su classe point

    Quando si implementano classi di questo tipo, cioe' classi che implementano semplicemente una struttura dati, c'e' una prima scelta filosofica da fare:

    1) oggetto immutabile oppure
    2) oggetto mutabile?

    Un oggetto immutabile e' un oggetto che, una volta inizializzato, non cambia piu' il suo contenuto: ad esempio non possiete dei setter, o deli metodi che cambiano lo stato dell'oggetto.

    Ad esempio l'intero '1' e' un oggetto immutabile, la stringa "ciao" e' un oggetto immutabile.

    Un oggetto mutabile e', per il nome stesso, un oggetto in cui puo' cambiare il suo stato.

    Quindi, la prima domanda che ti devi porre e' la seguente:

    il mio oggetto point e' un oggetto immutabile oppure un oggetto mutabile?

    Conseguenza di questa scelta sara' l'elenco dei metodi da implementare.

    La seconda regola da seguire e' la seguente:

    in qualunque classe, si devono implementare solo i metodi minimi utili a manipolare quella classe.

    Ad esempio: ha senso avere 3 setter distinti per X,Y,Z o sarebbe meglio avere un unico setter per impostare in un unico passo X,Y,Z?

    Come scegliere? Buon senso!
    Ad esempio, e' plausibile che uno imposti una coordinata di un punto e non le altre due?
    Ovviamente, non pensare ad un caso specifico, come ad esempio il tuo programmino di test, ma in generale, se la tua classe dovesse essere utilizzata un un'applicazione di grafica 3D!
  • Re: Parere su classe point

    Eh dovrei usarla proprio per una 3d e avevo difatti fatto così grazie per la risposta comunque (y)
    class Vector3D
    {
    public:
    
    Vector3D()
    : m_Point0()
    , m_Point1()
    {
    } 
    
    private:
    Point3D m_Point0;
    Point3D m_Point1; 
    };
Devi accedere o registrarti per scrivere nel forum
2 risposte