-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathBarco.hh
117 lines (95 loc) · 3.61 KB
/
Barco.hh
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
/** @file Barco.hh
@brief Especificación de la clase Barco.
*/
#ifndef _BARCO_HH_
#define _BARCO_HH_
#ifndef NO_DIAGRAM
#include <iostream>
#include <list>
#include "Cjt_productos.hh" // para verificar errores
#endif
using namespace std;
/** @class Barco
@brief Representa un barco, con los productos que busca comprar y vender.
Gestiona las operaciones de compra y venta de productos. Permite
modificar los productos que se desean comprar y vender, reiniciar la lista de
ciudades visitadas y agregar nuevas ciudades visitadas. Proporciona métodos para
consultar los detalles de los productos que se buscan comprar y vender, así como
el historial de ciudades visitadas.
*/
class Barco
{
private:
/** @brief ID del elemento que se intenta comprar. */
int _id_prod_comprar;
/** @brief ID del elemento que se intenta vender. */
int _id_prod_vender;
/** @brief Número de productos a comprar. */
int _num_comprar;
/** @brief Número de productos a vender.. */
int _num_vender;
/** @brief Últimas ciudades recorridas ordenadas cronológicamente */
list<string> _ult_ciudad;
public:
// Constructoras
/** @brief Creadora por defecto.
Se ejecuta automáticamente al declarar un barco.
\pre <em>cierto</em>
\post El resultado es un barco no inicializado.
*/
Barco();
/** @brief Creadora con valores inicializados.
\pre num_comprar > 0, num_vender > 0, ID de comprar y vender correctas.
\post El barco contiene el ID del producto que comprar,
vender, y el número de elementos de ambos.
*/
Barco(int id_producto_comprar, int num_comprar, int id_producto_vender, int num_vender);
// Modificadoras
/** @brief Modificadora para reiniciar ciudades visitadas.
\pre <em>cierto</em>
\post Se reinicia la lista que contiene las últimas ciudades
visitadas en orden cronológico.
*/
void reiniciar_lista();
/** @brief Modificadora para el barco.
\pre num_comprar > 0, num_vender > 0.
\post El barco contiene el ID del producto que comprar,
vender, y el número de elementos de ambos.
*/
void modificar_barco(int id_producto_comprar, int num_comprar, int id_producto_vender, int num_vender, const Cjt_productos& cp);
/** @brief Modificadora para la última ciudad.
\pre <em>cierto<em>
\post Añade al barco la última ciudad visitada.
*/
void agregar_ultima_ciudad(string ultima_ciudad);
// Consultoras
/** @brief Consultora de la id del producto a comprar.
\pre Barco inicializado.
\post Devuelve la id del producto que el barco busca comprar.
*/
int consultar_id_prod_comprar() const;
/** @brief Consultora de la id del producto a vender.
\pre Barco inicializado.
\post Devuelve la id del producto que el barco busca vender.
*/
int consultar_id_prod_vender() const;
/** @brief Consultora del número de productos a comprar.
\pre Barco inicializado.
\post Devuelve el número de productos que el barco busca comprar.
*/
int consultar_num_comprar() const;
/** @brief Consultora del número de productos a vender.
\pre Barco inicializado.
\post Devuelve el número de productos que el barco busca vender.
*/
int consultar_num_vender() const;
// Escritura
/** @brief Operación de escritura del barco.
\pre Barco inicializado.
\post Se escribe por el canal estándard de salida la información de la ID de producto
que comprar, vender, y el número de elementos de ambos. También se escriben
las últimas ciudades de los diferentes viajes en orden cronológico.
*/
void escribir_barco() const;
};
#endif