-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCanal.cpp
More file actions
122 lines (103 loc) · 2.72 KB
/
Canal.cpp
File metadata and controls
122 lines (103 loc) · 2.72 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
/**
* @file Canal.cpp
* @author algarcia
*
* @date 30 de marzo de 2021, 17:50
*
* @brief Implementación de los métodos de la clase Canal
*/
#include "Canal.h"
#include "PooFusionExc.h"
/**
* Constructor parametrizado
* @param nNombre Nombre del nuevo canal
* @param precio Precio del canal
* @post El nombre del nuevo canal coincidirá con el que se pasa como parámetro
* @throw PooFusionExc Si hay algún problema
*/
Canal::Canal ( std::string nNombre, float precio ) try : Producto ( precio )
, _nombre ( nNombre )
{
if ( nNombre == "" )
{
throw PooFusionExc ( "Canal::Canal", "Un canal tiene que tener nombre"
, "Canal.cpp" );
}
}
catch ( PooFusionExc& e )
{
throw PooFusionExc ( "Canal::Canal", e.quePasa (), "Canal.cpp" );
}
/**
* Constructor de copia
* @param orig Canal del que se copia la información
* @post El nuevo canal tiene exactamente los mismos datos que el original
*/
Canal::Canal ( const Canal& orig ): Producto ( orig ), _nombre ( orig._nombre )
{ }
/**
* Destructor
*/
Canal::~Canal ( )
{ }
/**
* Cambia el nombre del canal
* @param nNombre Nuevo nombre para el canal
* @post El nombre del canal cambia al valor que se le pasa como parámetro
* @throw PooFusionExc Si se intenta asignar como nombre una cadena vacía
* @return Una referencia al propio canal, para permitir el encadenamiento de
* llamadas a métodos
*/
Canal& Canal::setNombre ( std::string nNombre )
{
if ( nNombre == "" )
{
throw PooFusionExc ( "Canal::setNombre", "Un canal tiene que tener nombre"
, "Canal.cpp" );
}
this->_nombre = nNombre;
return *this;
}
/**
* Consulta el nombre del canal
* @return El nombre del canal
*/
std::string Canal::getNombre ( ) const
{
return _nombre;
}
/**
* Operador de asignación
* @param otro Canal del que se copia la información
* @post El canal tiene exactamente la misma información que el que se pasa
* como parámetro
* @return Una referencia al canal actual, para permitir asignaciones
* encadenadas (a = b = c)
*/
Canal& Canal::operator= ( const Canal& otro )
{
if ( this != &otro )
{
Producto::operator= ( otro );
_nombre = otro._nombre;
}
return *this;
}
/**
* Consulta la descripción del canal
* @return Una descripción en modo texto del canal
*/
std::string Canal::getDescripcion ( )
{
return ( "Canal " + _nombre );
}
/**
* Crea una copia del canal
* @return La dirección de memoria de un nuevo objeto de clase Canal que copia
* los atributos del objeto actual
*/
Duplicable* Canal::copia ( ) const
{
Duplicable* aDevolver = new Canal ( *this );
return aDevolver;
}