[C con Clase] no compila el programa
Steven Davidson
srd4121 en njit.edu
Vie Mayo 27 00:52:12 CEST 2011
Hola Jesús,
On 5/26/11, jesus sagñay <jesusagnay1 en hotmail.com> wrote:
>
> buen dia,
>
> Estuve practicando pero no me corre el programa ayudemen viendo
>
> gracias
>
> //a) Definir una clase usuario que contenga información básica como nombre,
> //apellido, cedula, login, password, dirección, teléfono, estado civil,
> correo electrónico,
> // género, edad. De la información dada anteriormente establecer los
> identificadores
> // de acceso que corresponderían a los datos miembros de esta clase.
> #include <iostream.h>
> #include <stdio.h>
> #include <conio.h>
> class usuario
> {
> private:
> int cedula;
No estoy seguro si 'int' es el tipo adecuado para representar una
cédula. Intenta con 'unsigned long int' o incluso 'unsigned long long
int'.
> char login [50];
> char password[30];
> char direccion[100];
> int telefono;
No aconsejo usar 'int' para describir un número de teléfono sino una
cadena de caracteres.
> char estado_civil [50];
No estoy de acuerdo con guardar una cadena de caracteres. Creo que es
mejor crear un array de cadenas literales, ya que cada estado civil es
conocido: "casado", "soltero", "separado", o "viudo". Creo que me dejo
algún que otro estado. Lo único que tendrías que guardar es el índice
a tal array de cadenas para referirte a un estado o a otro.
> char correo_electronico[50];
> char genero[50];
Aquí tenemos un caso similar al del estado civil. Los diferentes sexos
son conocidos y típicamente son representados con una sola letra: V ó
M. Podrías hacer lo mismo o simplemente usar 'char' para guardar estas
letras. Como se trata de dos posibles valores, también podrías optar
por una variable booleana; algo como,
bool bEsVaron;
'true' significa que es varón y 'false' que es una mujer.
> int edad;
> public:
> char nombre[50];
> char apellido[50];
Estos dos datos miembro deberían ser privados.
> void imprimir();
Aconsejo indicar que esta función miembro es constante, porque no
tiene intención de modificar "este objeto". Esto es,
void imprimir() const;
> };
Deberías crear algunos constructores y algunas funciones miembro para
establecer (asignar) y obtener cada dato miembro. Por ejemplo,
void asignarNombre( const char *pszNombre );
const char *obtenerNombre() const;
void asignarApellido( const char *pszApellido );
const char *obtenerApellido() const;
> void usuario::imprimir()
> {
> clrscr();
> usuario usua;
Esto no tiene sentido. La idea es que defines 'imprimir()' para que
funcione con "este objeto".
> usua.nombre("JESUS");
> usua.apellido("SAGNAY");
> usua.cedula=1716234297;
> usua.login ("JESUSA");
> usua.password=("XXXXX");
> usua.direccion("LA ECUATORIANA");
> usua.telefono=2629055;
> usua.estado_civil("CASADO");
> usua.correo_electronico("jesusagnay1 en hotmail.com");
> usua.genero("MASCULINO");
> usua.edad=29;
Esto tampoco tiene sentido. La idea es que 'imprimir()' sirve para:
imprimir los datos miembro de "este objeto". Esto significa que no
tiene nada que ver con asignar valores a un objeto temporal.
> cout <<"DATOS DEL USUARIO";
> cout << "NOMBRE: " << usua.nombre<<endl;
> cout << "APELLIDO: "<< usua.apellido<<endl;
> cout << "CEDULA: " << usua.cedula<<endl;
> cout << "LOGIN: "<<usua.login<<endl;
> cout << "PASWWORD: "<<usua.password<<endl;
> cout << "DIRECCION: "<<usua.direccion<<endl;
> cout << "TELEFONO: "<<usua.telefono<<endl;
> cout << "ESTADO CIVIL: "<<usua.estado_civil<<endl;
> cout << "CORREO ELECT.:"<<usua.correo_electronico<<endl;
> cout << "GENERO: "<<usua.genero<<endl;
> cout << "EDAD:"<<usua.edad<<"años";
> }
> void main()
> {
Deberías crear un objeto; por ejemplo,
usuario obj;
> usuario.imprimir();
Esto no es correcto. 'usuario' es una clase. Necesitas un objeto para
invocar 'imprimir()'. Por ejemplo,
obj.imprimir();
> getch();
> }
Recomiendo que leas los capítulos 27 (
http://c.conclase.net/curso/?cap=027#inicio ) al 34, principalmente,
que tratan el tema de las clases y de la programación orientada a
objetos.
Espero que esto te aclare las dudas.
Steven
Más información sobre la lista de distribución Cconclase