-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathChango.h
108 lines (89 loc) · 4.43 KB
/
Chango.h
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
#ifndef _CHANGO_H_
#define _CHANGO_H_
#include "Producto.h"
#include <iostream>
using namespace std;
int const TAMANIO_INICIAL_CHANGO = 0;
float const MONTO_INICIAL_A_ABONAR = 0;
float const AHORRO_INICIAL =0;
int const PRIMER_TAMANIO_CHANGO = 1;
float const TASA_DE_DESCUENTO = 0.10;
class Chango{
private:
int tamanio_chango;
float monto_a_abonar;
float ahorro_total;
Producto* productos_chango;
Producto* chango_auxiliar;
/*
*Descripcion: Muestra por consola el producto de la posicion pasada por parametro.
*Pre: -.
*Post: Muestra por consola un producto particular del Chango.
*/
void mostrar_producto_particular_chango(int posicion);
/*
*Descripcion: Este método se encarga de agregar un nuevo producto al vector dinámico de productos:
"productos_chango" presente en un objeto de clase Chango.
*Pre: Recibe como parámetro el producto a agregar en el vector dinámico.
*Post: Agrega correctamente el producto a la última posición del vector dinámico de productos:
"productos_chango" presente en un objeto de clase Chango.
*/
void agregar_nuevo_producto(Producto* producto_a_agregar);
/*
*Descripcion: En caso de que el Chango tenga más de un producto, se realizan todas las operaciones
correspondientes en pos de que se agregue un producto al final del vector dinámico de productos:
"productos_chango" presente en un objeto de clase Chango.
*Pre: Recibe como parámetro el producto a agregar en el vector dinámico.
*Post: Se realizan todas las operaciones correspondientes en pos de poder agregar un nuevo producto al Chango.
*/
void preparar_chango(Producto* producto_a_agregar);
/*
*Descripcion: Se copian todos los productos presentes en el vector dinámico "productos_chango" en otro vector
dinámico "chango_auxiliar", utilizado para poder redimensionar el primero mencionado.
*Pre: Todos los productos del Chango son válidos y el tamaño del Chango es mayor a 1.
*Post: Todos los productos del vector dinámico "productos_chango" son copiados en otro vector dinámico "chango_auxiliar".
*/
void desplazar_chango_viejo();
/*
*Descripcion: Este método se encarga de actualizar los valores de los atributos "monto_a_abonar" y "ahorro_total"
presentes en un objeto de clase Chango, en el momento que un producto es agregado al Chango.
*Pre: Se pasa como parámetro del método un producto que será agregado al Chango.
*Post: "monto_a_abonar" y "ahorro_total" son actualizados en el momento que un producto es agregado al Chango.
*/
void actualizar_monto_y_ahorro(Producto* producto_a_agregar);
/*
*Descripcion: Se informa al usuario cual es el monto total a abonar junto con el ahorro total que ha obtenido
con su compra.
*Pre: -.
*Post: Se muestra por consola el monto a abonar y el ahorro total obtenidos en una compra.
*/
void informar_monto_y_ahorro();
public:
/*Constructor
*Descripcion: Inicializa los atributos "tamanio_gondola", "monto_a_abonar" y "ahorro_total".
Además, muestra por consola que se ingresó al constructor.
*Pre:-.
*Post: Los atributos mencionados quedan correctamente inicializados.
*/
Chango();
/*
*Descripcion: Muestra por consola los productos actuales del vector dinamico "productos_chango".
*Pre: -.
*Post: Muestra por consola los productos actuales del vector dinamico "productos_chango".
*/
void mostrar_productos_chango();
/*
*Descripcion: Este método se encargará de redimensionar el vector dinámico "productos_chango" presente
en un objeto de clase Chango.
*Pre: Recibe un producto válido de la Góndola.
*Post: Redimensiona el vector dinámico "productos_chango" presente en un objeto de clase Chango.
*/
void agregar_producto(Producto* producto_a_agregar);
/*Descripción: Es el método destructor de objetos de clase Chango. Se encarga de liberar el espacio destinado
* para alocar el vector de Productos en memoria dinámica.
*Precondiciones: -.
*Postcondiciones: Libera el espacio utilizado para alocar el vector de productos en memoria dinámica.
*/
~Chango();
};
#endif /*_CHANGO_H_*/