void Giocatore::modifica(const Tesserato &g){ const Giocatore* aux = dynamic_cast<const Giocatore*>(&g); if(aux && *this != *aux){ if(numero != aux->numero){ setNumero(aux->numero); } } Tesserato::modifica(g); }
/**Construye una revista a partir de su información básica @throw std::domain_error si algún atributo no es válido para un libro*/ Revista::Revista( std::string ISSN, std::string titulo, unsigned int anio, unsigned int numero, std::string editorial, float precio) throw (std::domain_error) try : Ejemplar(ISSN,titulo, editorial, precio) { //inicializamos atributos con métodos set para comprobaciones de valores válidos de dominio setISSN(ISSN); //Aunque ISSN está inicializado como ID ejemplar, verificamos que es válido setAnio(anio); setNumero(numero); } catch (std::domain_error &e ) { //relanzamos excepciones de Ejemplar o de inicialización de atributos propios throw e; }
/**Inicializa una Revista a partir de sus datos obtenidos en formato CSV almacenados en línea @pre formato de línea: año_publicacion;num_publicacion;issn;título;editorial;precio @pos Modifica los atributos de la revista si linea contiene la información requerida @throw ExConversion si la línea CSV no tiene el formato adecuado @throw std::domain_error si algún dato para la revista no es válido*/ void Revista::fromCSV(std::string linea) throw (ExConversion,std::domain_error){ std::stringstream ss(linea); std::string lineaEjemplar; int valor; ss >> valor; if (ss.fail()) throw ExConversion("[Revista::fromCSV] el año de la revista no es un número: "+linea); setAnio(valor); ss.ignore(); //ignoramos siguiente ';' ss >> valor; if (ss.fail()) throw ExConversion("[Revista::fromCSV] la edición no es un número: "+linea); setNumero(valor); ss.ignore(); //ignoramos siguiente ';' //Procesamos resto de la línea con la parte de Ejemplar std::getline(ss,lineaEjemplar); Ejemplar::fromCSV(lineaEjemplar); }
Suporte_Vida::Suporte_Vida() : Sala("SUPORTE DE VIDA") { setOxigenio(100); setNumero(6); }
Sala_Maquinas::Sala_Maquinas(int pos, Nave *n) : Sala("SALA DAS MAQUINAS",pos,n) { setOxigenio(100); setNumero(5); }
void Persona::llamarNumero (int numerajo) { setNumero(numerajo); }
Propulsor::Propulsor() : Sala("PROPULSOR") { setOxigenio(100); setNumero(1); }