Chicos estoy aprendiendo POO este código funciona pero me pregunto por la sintaxis; si es la correcta.¿?
#include <iostream>
using namespace std;
class operating{
public:
void leenum();
int suma();
int resta();
int multiplicacion();
float division();
private:
int num1, num2;
int rsum;
int rrest;
int producto;
float div;
};
void operating:: leenum()
{
cout<<"Ingrese primer numero ";
cin>>num1;
cout<<"ingrese segundo numero";
cin>>num2;
}
int operating::suma()
{
int suma;
suma=num1+num2;
cout<<"la suma es:"<<suma<<endl;
}
int operating::resta()
{
int resta;
resta=num1-num2;
cout<<"la resta es:"<<resta<<endl;
}
int operating::multiplicacion()
{
int producto;
producto=num1*num2;
cout<< "el producto es:"<<producto<<endl;
}
float operating::division()
{
float div;
div= num1/num2;
cout<<"la division es:"<<div<<endl;
}
int main (void){
operating op_obj;
op_obj.leenum();
op_obj.suma();
op_obj.resta();
op_obj.multiplicacion();
op_obj.division();
}
En verdad no está bien. La idea de que un método tenga tipo de regreso es que regrese un dato, por ejemplo: int suma() debería devolver el resultado de la suma. Por otra parte, y es cuestión de gustos, el que un método que realice un trabajo escriba por pantalla tampoco me gusta (a no ser por cuestión de depuración). Tratamiento de datos y representación deberían estar separados.
Aqui reescribí el código anterior. ME gustaria saber si esta sistanxis es mas correcta.
#include <iostream>
using namespace std;
class operating{
public:
void leenum();
int suma();
int resta();
int multiplicacion();
float division();
private:
int num1, num2;
int rsum;
int rrest;
int producto;
float div;
};
void operating:: leenum()
{
cout<<"Ingrese primer numero ";
cin>>num1;
cout<<"ingrese segundo numero";
cin>>num2;
}
int operating::suma()
{
int suma;
suma=num1+num2;
return suma;
}
int operating::resta()
{
int resta;
resta=num1-num2;
return resta;
}
int operating::multiplicacion()
{
int producto;
producto=num1*num2;
return producto;
}
float operating::division()
{
float div;
div= num1/num2;
return div;
}
int main (void){
operating op_obj;
op_obj.leenum();
cout<<"Resultado de la suna:"<<op_obj.suma()<<"\n";
cout << "Resultado de la Resta: " << op_obj.resta() << "\n";
cout<<"REsultado de la multiplicación:"<<op_obj.multiplicacion()<<"\n";
cout << "Resultado de la Div: " << op_obj.division()<<"\n";
}
Aún puedes simplificar mucho más:
Para todas las operaciones, en vez de hacer
int operating::suma()
{
int suma;
suma=num1+num2;
return suma;
}
puedes hacer
int operating::suma()
{
return num1+num2;
}
Con lo que en la clase podrías eliminar rsum, rrest, producto y div.
Hasta podrías hacer que a leenum se le pasen como parámetros dos números y los guarde en num1 y num2 dejando el trabajo de pedir números al llamante y ser operating una clase puramente matemática, sin mensajes por pantalla de ningún tipo.