Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
MIEIC 2ano
Enunciado
Pretende-se guardar e manipular informao sobre uma frota de veculos, usando a classe Frota.
class Frota {
vector<Veiculo *> veiculos;
public:
...
};
Considere ainda a existncia das classes Veiculo, Motorizado, Automovel, Camiao e Bicicleta.
class Veiculo {
protected:
public:
string marca;
int mes, ano;
public:
};
class Camiao: public Motorizado {
int carga_maxima;
public:
};
class Motorizado: public Veiculo {
string combustivel; int cilindrada;
public:
};
class Bicicleta: public Veiculo {
string tipo;
public:
};
};
A declarao das classes deve ser efectuada no ficheiro Frota.h e a definio dos seus membros-funo no
ficheiro Frota.cpp.
a) Implemente os construtores das classes Veiculo, Motorizado, Automovel, Camiao e Bicicleta, que
inicializam todos os membros-dado da classe. Implemente, nas classes adequadas, os membrosfuno:
string getCombustivel() const
string getMarca() const
que retornam o combustvel e a marca, respetivamente, do veculo em questo.
b) Implemente, para cada uma das classes Veiculo, Motorizado, Automovel, Camiao e Bicicleta, o
membro-funo:
int info() const;
que retona o nmero de membros-dado e imprime no monitor o valor destes. Algum(ns) destes
membros-funo deve ser declarado como virtual?
pg.1
MIEIC 2ano
c) Implemente, para cada uma das classes Veiculo, Motorizado, Automovel, Camiao e Bicicleta, o
membro-funo:
float calcImposto() const;
Esta funo retorna o valor do imposto a pagar pelo veculo respetivo. Algum(ns) destes membrofuno deve ser declarado como virtual?
S os veculos motorizados
combustivel
ano
gasolina
outro
>1995
<=1995
cil <=1000
cil <=1500
14,56
8,10
1000<cil<=1300
1500<cil<=2000
29,06
14,56
1300<cil<=1750
2000<cil<=3000
45,15
22,65
1750<cil<=2600
cil>3000
113,98
54,89
2600<cil<=3500
181,17
87,13
cil>3500
320,89
148,37
d) Implemente o membro-funo:
bool operator < (const Veiculo & v) const;
Um veculo menor que outro se mais antigo (verificar ano e ms de fabrico).
e) Implemente o membro-funo:
void Frota::adicionaVeiculo(Veiculo *v1);
Esta funo adiciona um veculo v1 (automvel, camio ou bicicleta) ao vetor veiculos.
Implemente ainda os membros-funo:
int Frota::numVeiculos() const;
int Frota::menorAno() const; // retorna o menor ano dos veculos presentes no vetor veculos;
// retorna 0 se no existir nenhum veculo
f) Implemente o membro-funo:
float Frota::totalImposto() const;
Esta funo retorna a soma do valor do imposto a pagar pelos veculos presentes no vetor veiculos.
(nota: se no usou mtodos virtuais na alnea c) reconsidere agora essa questo)
g) Implemente o membro-funo:
void Frota::info() const;
Esta funo imprime no monitor o valor dos atributos de todos os veculos presentes no vetor
veiculos. Note que este teste no falha. Deve validar este teste pela verificao da escrita correta da
informao relativa aos atributos de cada veculo.
Nota: se no usou mtodos virtuais na alnea b) reconsidere agora essa questo
pg.2