Clases métodos y variables POO C++

Iniciado por SojatDotar, 20 Febrero 2016, 18:09 PM

0 Miembros y 2 Visitantes están viendo este tema.

SojatDotar

Buenas, hay alguna forma de en una clase A tengo variables privadas, habría una forma de que en otra clase B pueda acceder a esas variables ? es decir en la clase A tengo un rango y quisiera saber si cuando pido los datos para la clase B están en el rango de la clase A?

MAFUS

Existe el modificador friend que permite qur una clase acceda a partes privadas de otra.

http://c.conclase.net/curso/?cap=032

SojatDotar

Así sea ingresado por el usuarios los valores de esas variables ? si quisiera verificar que se encuentra en el rango ( ingresado) tendría que poner el getVariable o solo basta con poner la variable para verificar ?

ivancea96

Cita de: SojatDotar en 20 Febrero 2016, 18:09 PM
Buenas, hay alguna forma de en una clase A tengo variables privadas, habría una forma de que en otra clase B pueda acceder a esas variables ? es decir en la clase A tengo un rango y quisiera saber si cuando pido los datos para la clase B están en el rango de la clase A?

Lo que debieras hacer son métodos get que retornen el valor de las variables privadas o protegidas que quieras mostrar al exterior.

SojatDotar

Sí, estuve viendo eso, pero una pregunta, si tengo una clase A, en donde dados 4 números,  y una clase B dados dos numeros, puedo verificar si esos dos numeros de la clase B esta en el rango de la clase A (datos de la clase a ingresados por el usuario) y datos de la clase B ingresadas también por el usuario, pero solo serían datos validos si los datos son se encuentran en el rango de la clase A, me surge la duda a la hora de invocar las acciones y método de la clase, ya que nunca he usado POO antes

Class A{
private :
int a;
int b;
int c;
in d;
public:
void setA(int );
int getA(int);
void setB (int);
int getB (int);
void setC(int);
int getC(int);
void setD (int);
int getD(int);
void colocarDatos( int, int , int ,int);
//declaración de la clase A con sus métodos

};

void A::colocarDatos ( int a, int b, int c, int d){

d{

cout<<"Ingrese los datos de a"<<endl;
cin>>a;
cout<<"ingrese los datos de b"<<endl;
cin>>b;
cout<<"ingrese los datos de c"<<endl;
cin>>c;
cout<<"ingrese los datos de d"<<endl;
cin>>d;
}while ( a>c && d>b);

}



class B{
private:
int a1;
intb1;
public:
void setA(int);
int getA(int);
void setB(int);
int getB(int);
Pedirdatos(int int);
};

void B::pedirdatos(int int){




do{

// aquí se debería repetir mientras me ingresen datos que no estan en el intervalo previamente puesto en la class A




}while ();
};

int main () {

A a1;

a1.colocarDatos(a,b,c,d);


return 0;
}
sería así? no desarrolle los métodos set y get, porque me centre más en la duda

ivancea96

A colocarDatos no le pases parámetros. Al fin y al cabo, los valores se guardarán en la clase. Haciendo así, logras que se guarden los valores en las variables de los parámetros, que no se van a guardar cuando se termine el método.

SojatDotar

#6
O sea no le paso parámetros en la acción o cuando la invoco en la acción principal ? pero luego voy a necesitar esos valores mas adelante, y como haría para hacer la función de la clase B, ya que si no estan en el rango de A no deberia poder colocar nada

MAFUS

Usa setters para que el dato del usuario quede dentro del rango desde un principio, o
que el usuario ponga libremente un dato y usa getters para la clase devuelva el dato dentro de un rango, o
usa getters y setters para que la clase tenga un control absoluto sobre los datos que guarde y entregue.

SojatDotar

No entendí muy bien, me estas diciendo que haga algo como esto?, pero entonces como sabría la función cuál variable es lo que va a utilizar?

Class A{
private :
int a;
int b;
int c;
in d;
public:
void setA(int );
int getA();
void setB (int);
int getB ();
void setC(int);
int getC();
void setD (int);
int getD();
void colocarDatos();
//declaración de la clase A con sus métodos

};



void A::setA (int _a){
a=_a;
}

int A::getA(){
return a;

}



void A::colocarDatos()

{

do{

cout<<"Ingrese los datos de a"<<endl;
cin>>a;
cout<<"ingrese los datos de b"<<endl;
cin>>b;
cout<<"ingrese los datos de c"<<endl;
cin>>c;
cout<<"ingrese los datos de d"<<endl;
cin>>d;
}while ( a>c && d>b);

}