#ifndef PERSONA_H #define PERSONA_H #include "String.h" // Por defecto los miembros de una estructura son publicos en C++ struct Fecha { int dia; int mes; int anno; // Las estructuras y las clases pueden tener metodos // Los constructores son metodos especiales que se invocan siempre que // un objeto es creado con el fin de inicializar los miembros de datos // Note la sintaxis para inicializar Constructor() : miembro(valorIni) Fecha(int d = 0, int m = 0, int a = 0) : dia(d), mes(m), anno(a) { } }; // Las enumeraciones declaran un tipo de datos nuevo en el programa: un // numero entero que solo puede tomar los valores declarados en el cuerpo // de la enumeracion, que son constantes enum Sexo { desconocido, // 0 hombre, // 1 mujer // 2 }; // Textos equivalentes a las constantes de la enumeracion Sexo const char* const SexoStr[] = { "desconocido", "hombre", "mujer" }; // Por defecto los miembros de una clase son privados en C++ class Persona { private: long cedula; Fecha fechaNacimiento; // una estructura dentro de otra Sexo sexo; // Crea un objeto completo String String nombre; // abc String apellido1; String apellido2; static long totalPersonas; public: static long obtenerTotalPersonas() { return totalPersonas; } public: // Constructor. Los miembros de datos se deben inicializar en el // mismo orden en que fueron declarados. El constructor Fecha() se // invoca automaticamente cuando llegue el turno de inicializar // la estructura fechaNacimiento Persona(long cedula = 0, const Fecha& fn = Fecha(), Sexo sexo = desconocido, const char* nombre = ""); ~Persona(); // Un metodo: una funcion que esta dentro de una clase o estructura int calcularEdad() const; inline long obtenerCedula() const { return this->cedula; } String obtenerNombreCompleto() const; void imprimir() const; }; // nunca olvidar los dos puntos #endif