-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPersona.cpp
More file actions
133 lines (111 loc) · 2.98 KB
/
Persona.cpp
File metadata and controls
133 lines (111 loc) · 2.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
/**
* @file Persona.cpp
* @author algarcia
*
* @date 30 de marzo de 2021, 17:46
*
* @brief Implementación de los métodos de la clase Persona
*/
#include "Persona.h"
#include "PooFusionExc.h"
/**
* Constructor parametrizado
* @param nApeNom Apellidos y nombre de la persona
* @param nNIF NIF de la persona
* @post Los datos de la nueva persona son iguales a los que se pasan como
* parámetros
* @throw PooFusionExc Si alguna de las dos cadenas está vacía
*/
Persona::Persona ( std::string nApeNom, std::string nNIF ): _apeNom ( nApeNom )
, _nif ( nNIF )
{
if ( nApeNom == "" )
{
throw PooFusionExc ( "Persona::Persona", "El nombre no puede estar vacío"
, "Persona.cpp" );
}
if ( nNIF == "" )
{
throw PooFusionExc ( "Persona::Persona", "El NIF no puede estar vacío"
, "Persona.cpp" );
}
}
/**
* Constructor de copia
* @param orig Persona de la que se copia la información
* @post La nueva persona tiene exactamente los mismos datos que la original
*/
Persona::Persona ( const Persona& orig ): _apeNom ( orig._apeNom )
, _nif ( orig._nif )
{ }
/**
* Destructor
*/
Persona::~Persona ( )
{ }
/**
* Cambia el NIF de la persona
* @param nNif Nuevo valor de NIF
* @post El NIF de la persona cambia al nuevo valor
* @throw PooFusionExc Si el nuevo NIF es una cadena vacía
*/
Persona& Persona::setNif ( std::string nNif )
{
if ( nNif == "" )
{
throw PooFusionExc ( "Persona::setNif", "El NIF no puede estar vacío"
, "Persona.cpp" );
}
this->_nif = nNif;
return *this;
}
/**
* Consulta el NIF de la persona
* @return El NIF de la persona
*/
std::string Persona::getNif ( ) const
{
return _nif;
}
/**
* Cambia el nombre y los apellidos de la persona
* @param nApeNom Apellidos y nombre de la persona
* @post La persona cambia sus apellidos y nombre al valor que se pasa como
* parámetro
* @throw PooFusionExc Si la cadena con el nuevo nombre está vacía
*/
Persona& Persona::setApeNom ( std::string nApeNom )
{
if ( nApeNom == "" )
{
throw PooFusionExc ( "Persona::setApeNom", "El nombre no puede estar vacío"
, "Persona.cpp" );
}
this->_apeNom = nApeNom;
return *this;
}
/**
* Consulta el nombre y apellidos de la persona
* @return El nombre y apellidos de la persona
*/
std::string Persona::getApeNom ( ) const
{
return _apeNom;
}
/**
* Operador de asignación
* @param otro Persona de la que se copia la información
* @post La persona tiene exactamente la misma información que la que se pasa
* como parámetro
* @return Una referencia a la persona actual, para permitir asignaciones
* encadenadas (a = b = c)
*/
Persona& Persona::operator= ( const Persona& otro )
{
if ( this != &otro )
{
_apeNom = otro._apeNom;
_nif = otro._nif;
}
return *this;
}