resoluçao folha 5 o enunciado esta no final

#include "animal.h"

using namespace std;

/**
*****************************************VETERINARIO***************************
*/
///Constructores
Veterinario::Veterinario(string nom, string esp): nome(nom){ //este nome(nom) e equivalente a fazer nome = nom so que agora tratando-se de um const; isto so funciona em constructores (esta explicado diretinho nos acetatos)
especialidade = esp;
}

Veterinario::Veterinario() : nome(""){
especialidade = "";
}
///get's e set's
//os get's sao necessarios porque os membros sao private (default)
const string Veterinario::getNome() const{
return nome;
}

string Veterinario::getEspecialidade() const{
return especialidade;
}

void Veterinario::setEspecialidade(string esp){
especialidade = esp;
}

//Operadores
Veterinario & Veterinario::operator=(Veterinario &vet){
return vet;
}


/**
*****************************************ANIMAL***************************
*/
///Constructores e destructor
Animal::Animal(const string esp, const bool sex, char * nom, int id) : especie(esp), sexo(sex), nome(nom), veterinario(Veterinario()){
idade = id;
}

Animal::Animal(string esp, const bool sex, char * nom, int id, Veterinario vet) : especie(esp), sexo(sex), nome(nom), veterinario(vet){
idade = id;
}

Animal::Animal(Animal &a): especie(a.especie), sexo(a.sexo), nome(a.nome), veterinario(a.veterinario) {
idade = a.idade;
}

Animal::~Animal(){}

///get's e set's
const string Animal::getEspecie() const{
return especie;
}

const bool Animal::getSexo() const{
return sexo;
}

const char* Animal::getNome() const{
return nome;
}

int Animal::getIdade() const{
return idade;
}

Veterinario Animal::getVeterinario() const{
return veterinario;
}

void Animal::setIdade(int id){
idade = id;
}

void Animal::setVeterinario(Veterinario vet){
veterinario = vet;
}

///Operadores
ostream & operator<<(ostream &o, Animal &a){
o << "Animal: " << a.getEspecie() << ", " << a.getSexo() << ", " << a.getNome() << ", " << a.getIdade() << "; Responsável: " << a.getVeterinario().getNome() << endl;

return o;
}

bool Animal::operator<(const Animal &a){
return idade < a.idade;
}

Animal & Animal::operator=(const Animal &a){
return *this;
}

/*
int main(){

//alinea a)
Veterinario vet = Veterinario();
cout << "vet: " << vet.getEspecialidade() << "; " << vet.getNome() << ";" << endl;

Veterinario vet2 = Veterinario("paulo", "caes");

cout << "esp = " << vet2.getEspecialidade() << "; " << vet2.getNome() << ";" << endl;

Veterinario vet3 = Veterinario("Fernando", "gatos");

cout << "esp = " << vet3.getEspecialidade() << "; " << vet3.getNome() << ";" << endl;

//alinea b)

string nome = "bobby";
Animal a1("cao", true, (char*)nome.c_str(), 2, vet2);
Animal a2("cao", true, (char*)nome.c_str(), 2);
//cout << a1.getEspecie() << "; " << a1.getSexo() << "; " << a1.getNome() << "; " << a1.getIdade() << "; " << a1.getVeterinario().getNome() << ": " << a1.getVeterinario().getEspecialidade() << ";\n";

Animal a3(a1);

a2.setIdade(5);

cout << a1;
cout << a2;
cout << a3;

if(a1 < a2)
cout << "funcou\n";
else
cout << "nao funcou\n";

return 0;
}*/


enunciado: a) Como vê, a classe Animal contém um membro que é um objecto de outra classe, Veterinario.
Defina esta classe, cujos membros-dado são nome e especialidade, ambos do tipo string
(exemplos de especialidade: mamíferos, répteis, aves...) e com dois construtores:
Veterinario(string nom, string esp);
Veterinario();
b) Acrescente à definição da classe Animal dois construtores:
Animal(string esp, boolean sex, char * nom, int id);
Animal(string esp, boolean sex, char * nom, int id, Veterinario vet);
Como deverá preencher o atributo Animal::veterinario para o primeiro construtor?
c) Acrescente à classe Animal as adequadas funções de acesso: “get...() const” e “set...()”.
d) Sobrecarregue o operador “<<”:
ostream & operator<< (ostream & o, Animal & a);
por forma a que se possa produzir com ele, para um objecto ostream, uma listagem com o formato:
Animal: <especie>, <sexo>, <nome>, <idade>; Responsável: <nomeVeterinario>
e) Acrescente à classe Animal um destrutor e um construtor de cópia;
f) Sobrecarregue operador ”<”, na classe Animal, por forma a que seja possível comparar as idades de
dois animais com um teste do género:
Animal a1(...), a2(...);
if (a1 < a2)
cout << a1.getNome() << “ é mais novo que “ << a2.getNome() ;
You have a lot of topics all not in English. If you know any English at all please try to ask your question in English as you'll find most people here wont help otherwise.
Ola, rapaz! Se voce quiser, eu posso traduzir as tuas posts. Voce me manda elas e eu as traduzo. Ah, use tambem o "#" para o codigo, assim è mais facil de se ler.

Sobre essa post, de-me algum tempo para traduzi-la...
isto é um teste que ele esta a ter. se souberem resolvam mas ele nao tem tempo para por em ingles porque é de uma hora.
A)

class Veterinario
{
const string nome;
string especialidade;
Veterinario() :nome("")
{
especialidade="";
};
Veterinario(string nom,string esp)
{
nome=nom;
especialidade=esp;
};
};
Ah, intendi.
Topic archived. No new replies allowed.