Buenas noches, tengo una duda referente a la programación orientada a objeto y sus métodos, por ejemplo tengo definida mi clase
class circulo{
public:
void setX(float);
float getx (float);
void sety (float);
float gety (float);
private:
float x,y;
pero el (x,y) del cirulo lo ingresaria el usuario, tendría que hacer una función que me pida esas coordenadas?más o menos así?? class circulo{
public:
void setX(float);
float getx (float);
void sety (float);
float gety (float);
void pideCoordenadas(float float);
private:
float x,y;
o solo bastará con el set y get de cada coordenada ?ya que tengo entendido que el método set modifica un valor ( da un valor) y el método get(devuelve un valor) otra cosa si tengo un método set no hace falta el constructor ? o siempre tiene que haber un método constructor, independientemente que haya un método set?
void Circulo::setx(float _x)
{
x=_x;
}
float Circulo::getx(float x)
{
return x;
}
void Circulo::sety(float _y)
{
y=_y;
}
float Circulo::gety(float y)
{
return y;
}
void Circulo::pideCoordenadas(float x1, float y1)
{
cout<<"Teclee la coordenada"<<endl;
cin>>x>>y;
}
int main () {
Circulo miCirculo;
miCirculo.pideCoordenadas(x,y);
}
Sería así a la hora de implementar la clase y usarla en el main?
Si haces una funcion pideCoordenadas(x, y) o no depende mas que nada de como sea mas legible el codigo. Personalmente, en tu caso especifico me parece que es mas legible si haces no haces una funcion pideCoordenadas y usas tus setters.
En cuanto a lo de constructor, depende basicamente de como planeas que sea usado tu objeto. Si quieres que las coordenadas del circulo las pongan una vez y sean permanentes entonces borra los setters y crea un constructor que las asigne, pero si planeas que las coordenadas del circulos sean modificadas necesitas los setters si o si.
y Cuál seria la diferencia si hago un setters a hacer una función que pida las coordenadas ?