• Martes 7 de Mayo de 2024, 20:38

Autor Tema:  Aprendiendo poo en c++  (Leído 1515 veces)

vanessa99

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Aprendiendo poo en c++
« en: Sábado 4 de Septiembre de 2010, 06:17 »
0
Hola tengo un programa muy sencillo... todo lo necesito dividido en funciones y aplicando reutilizacion, con una funcion capturo el nombre con otra la edad y con otra el peso... luego hago una funcion para imprimir el nombre edad y peso.... el caso es que hago la funcion de capturar nombre y bien... pero al imprimirla, ps no se como retornar un char al main... no se como hacer esa funcion... aqui esta el codigo

Código: C++
  1. #include<iostream.h>
  2. #include <string.h>
  3.  
  4. class Persona
  5. {
  6.       char nombre[15], genero[15];
  7.       int peso, edad;
  8.      
  9.       public:
  10.       void asignar_nombre(char n[15]);
  11.       void asignar_genero(char g[15]);
  12.       void asignar_edad(int e);
  13.       void asignar_peso(int p);
  14.       void mostrar_nombre();
  15.       int mostrar_edad();
  16.       int mostrar_peso();
  17.          
  18. };
  19.  
  20. void Persona::asignar_nombre(char n[15])
  21. {
  22.      strcpy(nombre,n);
  23. }
  24.  
  25. void Persona::asignar_genero(char g[15])
  26. {
  27.      strcpy(genero,g);
  28. }
  29.  
  30. void Persona::mostrar_nombre()
  31. {
  32.      cout<<nombre;
  33. }
  34.  
  35. void Persona::asignar_edad(int e)
  36. {
  37.      edad=e;
  38. }
  39.  
  40. void Persona::asignar_peso(int p)
  41. {
  42.      peso=p;
  43. }
  44.  
  45. int Persona::mostrar_edad()
  46. {
  47.     return(edad);
  48. }
  49.  
  50. int Persona::mostrar_peso()
  51. {
  52.     return(peso);
  53. }
  54.  
  55. main()
  56. {
  57.       Persona Pedro;
  58.       int x;
  59.       char a[20];
  60.       cout<<"Ingrese nombre:   ";
  61.       gets(a);
  62.       Pedro.asignar_nombre(a);
  63.       cout<<"Ingrese Edad:    ";
  64.       cin>>x;
  65.       Pedro.asignar_edad(x);
  66.       cout<<"Ingrese peso:    ";
  67.       cin>>x;
  68.       Pedro.asignar_peso(x);
  69.       system("cls");
  70.       Pedro.mostrar_nombre()<<endl;
  71.       cout<<Pedro.mostrar_edad()<<endl;
  72.       cout<<Pedro.mostrar_peso()<<endl;
  73.       cout<<endl;
  74.       system("pause");
  75. }
  76.  
  77.  

punteroNULO

  • Miembro activo
  • **
  • Mensajes: 73
    • Ver Perfil
Re: Aprendiendo poo en c++
« Respuesta #1 en: Sábado 4 de Septiembre de 2010, 09:44 »
0
Si quieres que la función devuelva una cadena de caracteres simplemente indica que el tipo de retorno:
Código: C
  1. char * Persona::mostrar_nombre()
  2. {
  3.      return nombre;
  4. }
  5.  

y modificar finalmente:
Código: C
  1. cout<<Pedro.mostrar_nombre()<<endl;
  2.  

vanessa99

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Aprendiendo poo en c++
« Respuesta #2 en: Lunes 6 de Septiembre de 2010, 02:34 »
0
Si me compila muy bien gracias... solo que parece que esto va en contra de la ley de reutilizabilidad del código y así no es valido... como podria retornar sin afectar lo que es la programacion orientada a objetos?

punteroNULO

  • Miembro activo
  • **
  • Mensajes: 73
    • Ver Perfil
Re: Aprendiendo poo en c++
« Respuesta #3 en: Lunes 6 de Septiembre de 2010, 20:26 »
0
Cita de: "vanessa99"
Si me compila muy bien gracias... solo que parece que esto va en contra de la ley de reutilizabilidad del código y así no es valido... como podria retornar sin afectar lo que es la programacion orientada a objetos?

Si te refieres a que devolviendo el puntero, desde fuera de la clase se puede modificar el valor. Es verdad.
Pero se puede solucionar facilmente copiando en otro puntero que será la salida.
Código: C
  1. char * Persona::mostrar_nombre()
  2. {
  3.      char *aux;
  4.      aux = (char *)malloc(sizeof(char)* strlen(nombre)+1);  //asignamos espacio: longitud del texto más caracter de fin de cadena
  5.      strcpy(aux,nombre); // copiamos el contenido
  6.      return aux;
  7. }
  8.