Duda con el codigo

Iniciado por matver, 11 Febrero 2018, 16:52 PM

0 Miembros y 1 Visitante están viendo este tema.

matver

Chicos estoy aprendiendo POO este código funciona pero me pregunto por la sintaxis; si es la correcta.¿?

Código (cpp) [Seleccionar]

#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();

}



MAFUS

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.

matver

Aqui reescribí el código anterior. ME gustaria saber si esta sistanxis es mas correcta.
Código (cpp) [Seleccionar]

#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";
}


MAFUS

Aún puedes simplificar mucho más:
Para todas las operaciones, en vez de hacer
Código (cpp) [Seleccionar]
int operating::suma()
{
   int suma;
   suma=num1+num2;
   return suma;
}


puedes hacer
Código (cpp) [Seleccionar]
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.