Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: matver en 11 Febrero 2018, 16:52 pm



Título: Duda con el codigo
Publicado por: matver en 11 Febrero 2018, 16:52 pm
Chicos estoy aprendiendo POO este código funciona pero me pregunto por la sintaxis; si es la correcta.¿?

Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. class operating{
  5.  
  6. public:
  7.    void leenum();
  8.    int suma();
  9.    int resta();
  10.    int multiplicacion();
  11.    float division();
  12. private:
  13.      int num1, num2;
  14.      int rsum;
  15.      int rrest;
  16.      int producto;
  17.      float div;
  18.  
  19.   };
  20.  
  21. void operating:: leenum()
  22. {
  23.   cout<<"Ingrese primer numero ";
  24.   cin>>num1;
  25.   cout<<"ingrese segundo numero";
  26.   cin>>num2;
  27.  }
  28. int operating::suma()
  29. {
  30.   int suma;
  31.   suma=num1+num2;
  32.   cout<<"la suma es:"<<suma<<endl;
  33.  }
  34. int operating::resta()
  35. {
  36.   int resta;
  37.   resta=num1-num2;
  38.   cout<<"la resta es:"<<resta<<endl;
  39. }
  40. int operating::multiplicacion()
  41. {
  42.    int producto;
  43.    producto=num1*num2;
  44.    cout<< "el producto es:"<<producto<<endl;
  45. }
  46. float operating::division()
  47. {
  48.    float div;
  49.    div= num1/num2;
  50.    cout<<"la division es:"<<div<<endl;
  51. }
  52. int main (void){
  53.  
  54. operating op_obj;
  55. op_obj.leenum();
  56. op_obj.suma();
  57. op_obj.resta();
  58. op_obj.multiplicacion();
  59. op_obj.division();
  60.  
  61. }
  62.  
  63.  
  64.  


Título: Re: Duda con el codigo
Publicado por: MAFUS en 11 Febrero 2018, 20:50 pm
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.


Título: Re: Duda con el codigo
Publicado por: matver en 23 Febrero 2018, 15:02 pm
Aqui reescribí el código anterior. ME gustaria saber si esta sistanxis es mas correcta.
Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. class operating{
  5.  
  6. public:
  7.    void leenum();
  8.    int suma();
  9.    int resta();
  10.    int multiplicacion();
  11.    float division();
  12. private:
  13.      int num1, num2;
  14.      int rsum;
  15.      int rrest;
  16.      int producto;
  17.      float div;
  18.  
  19.   };
  20.  
  21. void operating:: leenum()
  22. {
  23.   cout<<"Ingrese primer numero ";
  24.   cin>>num1;
  25.   cout<<"ingrese segundo numero";
  26.   cin>>num2;
  27.  }
  28. int operating::suma()
  29. {
  30.   int suma;
  31.   suma=num1+num2;
  32.   return suma;
  33.  }
  34. int operating::resta()
  35. {
  36.   int resta;
  37.   resta=num1-num2;
  38.   return resta;
  39. }
  40. int operating::multiplicacion()
  41. {
  42.    int producto;
  43.    producto=num1*num2;
  44.    return producto;
  45. }
  46. float operating::division()
  47. {
  48.    float div;
  49.    div= num1/num2;
  50.    return div;
  51. }
  52.  
  53. int main (void){
  54.  
  55. operating op_obj;
  56. op_obj.leenum();
  57. cout<<"Resultado de la suna:"<<op_obj.suma()<<"\n";
  58. cout << "Resultado de la Resta: " << op_obj.resta() << "\n";
  59. cout<<"REsultado de la multiplicación:"<<op_obj.multiplicacion()<<"\n";
  60. cout << "Resultado de la Div: " << op_obj.division()<<"\n";
  61. }
  62.  
  63.  


Título: Re: Duda con el codigo
Publicado por: MAFUS en 23 Febrero 2018, 23:12 pm
Aún puedes simplificar mucho más:
Para todas las operaciones, en vez de hacer
Código
  1. int operating::suma()
  2. {
  3.   int suma;
  4.   suma=num1+num2;
  5.   return suma;
  6. }

puedes hacer
Código
  1. int operating::suma()
  2. {
  3.   return num1+num2;
  4. }

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.