]> git.llucax.com Git - z.facultad/75.29/susanita.git/blob - src/susanita.h
tagged entrega1
[z.facultad/75.29/susanita.git] / src / susanita.h
1 #ifndef _SUSANITA_H_
2 #define _SUSANITA_H_
3
4 #include "persona.h"
5 #include "hashtable.h"
6 #include <deque>
7 #include <string>
8
9 /// Interfaz para nuestra clases casamenteras
10 struct Susanita
11 {
12
13         /// Tipo de dato para guardar lista de personas
14         typedef std::deque< Persona* > personas_type;
15
16         /// Tipo de dato de la cantidad de personas que puede tener
17         typedef HashTable::size_type size_type;
18
19         /// Constructor
20         Susanita(size_type capacidad);
21
22         /// Destructor
23         virtual ~Susanita();
24
25         /// Agrega persona
26         virtual void add_persona(Persona* p);
27
28         /// Obtiene una persona
29         virtual Persona* get_persona(const std::string& p);
30
31         /// Muestra estados
32         virtual void mostrar_estado(int mostrar_prios = 0) const;
33
34         /// Empieza a emparejar gente
35         virtual void casamentear() = 0;
36
37         /// Lista de hombres
38         personas_type hombres;
39
40         /// Lista de mujeres
41         personas_type mujeres;
42
43         /// Cantidad de personas que puede tener
44         size_type capacidad;
45
46
47         protected:
48
49         /// Tipos
50         typedef HashTable nombres_type;
51
52         /// Mapa de gente, relaciona nombres con objetos
53         nombres_type nombres;
54
55 };
56
57 #endif // _SUSANITA_H_