#include "Persona.h"


//Constructor por omision
Persona::Persona(){
	strcpy(nombre, "Ninguno");
	strcpy(apellido, "Ninguno");
	strcpy(nacionalidad, "Ninguno");
	edad = 0;
	cedula = 0;
	sexo = 'n';
}

//Constructor paramétrico
Persona ::Persona(const int e, const char *n, const char *a,
	const int c, const char s, const char *na){
	edad = e;
	strcpy(nombre, n);
	strcpy(apellido, a);
	cedula = c;
	sexo = s;
	strcpy(nacionalidad, na);
}

//Constructor por copia
Persona :: Persona(const Persona& p){
	edad = p.edad;
	strcpy(nombre, p.nombre);
	strcpy(apellido, p.apellido);
	cedula = p.cedula;
	sexo = p.sexo;
	strcpy(nacionalidad, p.nacionalidad);
}

//Metodos de acceso
int Persona::Edad(){
	return edad;
}

char* Persona::Nombre(){
	return nombre;
}

char* Persona::Apellido(){
	return apellido;
}

int Persona::Cedula(){
	return cedula;
}

char Persona::Sexo(){
	return sexo;
}

char* Persona::Nacionalidad(){
	return nacionalidad;
}

void Persona::Mostrar(){
	cout << nombre << endl;
	cout << apellido << endl;
	cout << edad << endl;
	cout << cedula << endl;
	cout << sexo << endl;
	cout << nacionalidad << endl;
}

//Metodos de Modificacion
void Persona::asignarEdad(const int e){
	edad = e;
}

void Persona::asignarNombre(const char *n){
	strcpy(nombre, n);
}

void Persona::asignarApellido(const char *a){
	strcpy(apellido, a);
}

void Persona::asignarCedula(const int c){
	cedula = c;
}

void Persona::asignarSexo(const char s){
	sexo = s;
}

void Persona::asignarNacionalidad(const char *n){
	strcpy(nacionalidad, n);
}


//Destructor
Persona::~Persona(){
}

//Sobregarga de operadores
bool Persona :: operator == (const Persona& p){
	if (cedula == p.cedula)
		return true;
	else
		return false;
}

bool Persona :: operator < (const Persona& p){
	if (edad < p.edad)
		return true;
	else
		return false;
}

ostream& operator << (ostream& out, const Persona &p){
	cout << p.nombre << endl;
	cout << p.apellido << endl;
	cout << p.edad << endl;
	cout << p.cedula << endl;
	cout << p.sexo << endl;
	cout << p.nacionalidad << endl;
}

Persona& Persona :: operator = (const Persona& p){
	strcpy(nombre, p.nombre);
	strcpy(apellido, p.apellido);
	strcpy(nacionalidad, p.nacionalidad);
	edad = p.edad;
	cedula = p.cedula;
	sexo = p.sexo;
	return *this;
}


