Página principal | Lista de namespace | Lista de archivos

monopolio.h

00001 /***********************************************************************************
00002  *  CLASE MONOPOLIO
00003  *  La clase monopolio representa un grupo de propiedades que tienen el mismo color
00004  *  (o tipo en el caso de las estaciones y servicios). Cuando un monopolio de propiedades
00005  *  pertenecen a un mismo jugador, estas propiedades adquieren propiedades especiales.
00006  *
00007  *  Requiere:
00008  *     - clase jugador
00009  *     - clase iostream
00010  *     - clase string
00011  *     - clase set
00012  *
00013  *  Autor: Javier Aragón Zabalegui (PFC para la uc3m: street Master's)
00014  *  Contacto: 100039831@alumnos.uc3m.es
00015  *  version 1.0
00016  **********************************************************************************/
00017 
00018 #ifndef __MONOPOLIO__
00019 #define __MONOPOLIO__
00020 
00021 #include "cadenas.h"
00022 #include "jugador.h"
00023 
00024 #include <iostream>
00025 #include <string>
00026 #include <set>
00027 using namespace std;
00028 
00029 class calle;      // Forward declaration
00030 class propiedad;  // Forward declaration
00031 
00032 class monopolio {
00033 
00034  private:
00035   //Atributos
00036   string _color;
00037   int _numPropiedades;
00038   string _colorAbreviado;
00039 
00040   //Asociaciones
00041   set <propiedad*> _contienePropiedad;
00042   
00043 
00044  public:
00045 
00046   // Constructor por defecto
00047   monopolio ();
00048   
00049   // Constructor explícito
00050   monopolio ( string color, int numPropiedades );
00051   
00052   // Copy constructor
00053   monopolio (const monopolio& right);
00054 
00055   // Operador de asignación
00056   monopolio& operator= (const monopolio& right);
00057 
00058   // Destructor
00059   ~monopolio ();
00060 
00061   // Métodos GET
00062   string get_color () const;
00063   int get_numPropiedades () const;
00064   string get_colorAbreviado () const;
00065   set <propiedad*> get_contienePropiedad ();
00066 
00067   // Métodos SET
00068   void set_color ( string color );
00069   void set_numPropiedades ( int numPropiedades );
00070   void set_colorAbreviado ( string colorAbr );
00071 
00072   //Otros métodos
00073 
00077   void anyadirPropiedad ( propiedad* nuevaPropiedad );
00078 
00082   bool monopolioCompleto ();
00083 
00087   int contarPropiedadesConMismoPropietario ( propiedad *prop );
00088 
00092   bool existeConstruido ();
00093 
00097   void permitirConstruir ();
00098 
00102   void prohibirConstruir ();
00103 
00107   void hipotecable ( bool permitido );
00108 
00112   int maxConstruido ();
00113   
00117   int minConstruido ();
00118   
00122   bool esCalleMasConstruida ( calle *c );
00123 
00128   bool construible ();
00129 
00133   bool estaLibre ();
00134 
00139   bool ultimaPropiedad ( jugador *j );
00140 
00144   bool unicoPoseedor ( jugador *j );
00145 
00149   bool poseeParte ( jugador *j );
00150 
00154   bool ultimaPropiedadOtroJugador ( jugador *j );
00155 };
00156 
00157 inline string monopolio::get_color () const
00158 {
00159   return _color;
00160 }
00161 
00162 inline int monopolio::get_numPropiedades () const
00163 {
00164   return _numPropiedades;
00165 }
00166 
00167 inline string monopolio::get_colorAbreviado () const
00168 {
00169   return _colorAbreviado;
00170 }
00171 
00172 inline set <propiedad*> monopolio::get_contienePropiedad ()
00173 {
00174   return _contienePropiedad;
00175 }
00176 
00177 
00178 /*inline calle monopolio::get_contieneCalle () const
00179 {
00180   return _contieneCalle;
00181   }*/
00182 
00183 inline void monopolio::set_color ( string color )
00184 {
00185   _color = color;
00186 }
00187 
00188 inline void monopolio::set_numPropiedades ( int  numPropiedades )
00189 {
00190   _numPropiedades = numPropiedades;
00191 }
00192 
00193 inline void monopolio::set_colorAbreviado ( string colorAbr )
00194 {
00195   _colorAbreviado = colorAbr;
00196 }
00197 
00198 /*inline void monopolio::set_contieneCalle ( calle contieneCalle )
00199 {
00200   _contieneCalle = contieneCalle;
00201   }*/
00202 
00203 #endif

Generado el Fri Jun 30 12:38:29 2006 para Street Master's por  doxygen 1.3.9.1