Upload
luis-pedro-morais
View
219
Download
0
Embed Size (px)
Citation preview
7/23/2019 aeda1516_fp02
1/2
Algoritmos e Estruturas de Dados 2015/16 MIEIC 2ano
pg.1
2aula prtica - Herana e subclasses. Polimorfismo
Faa download do ficheiro aeda1516_fp02.zipda pgina da disciplina e descomprima-o (contm os ficheiros
Frota.h, Frota.cppe Test.cpp)
Enunciado
Pretende-se guardar e manipular informao sobre uma frota de veculos, usando a classe Frota.
class Frota {
vector veiculos;
public:
...
};
Considere ainda a existncia das classes Veiculo, M otor izado, Automovel, Camiaoe Bicicleta.
class Veiculo {
protected:
string marca;
int mes, ano;
public:
virtual float calcImposto() const = 0;
};
class Motorizado: public Veiculo {
string combustivel; int cilindrada;public:
};
class Automovel: public Motorizado {
public:
};
class Camiao: public Motorizado {
int carga_maxima;
public:
};
class Bicicleta: public Veiculo {string tipo;
public:
};
A declarao das classes deve ser efectuada no ficheiro Frota.he a definio dos seus membros-funo no
ficheiroFrota.cpp.
a) Implemente os construtores das classes Veiculo, Motorizado, Au tom ovel, Camiao e Bic icleta, que
inicializam todos os membros-dado da classe. Implemente, nas classes adequadas, os membros-
funo:
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, Autom ovel, Camiao e Bic icleta, o
membro-funo:
int info() const;
que retona o nmero de membros-dado e imprime no monitor o valor destes. Algum(ns) destesmembros-funo deve ser declarado como virtual?
7/23/2019 aeda1516_fp02
2/2
Algoritmos e Estruturas de Dados 2015/16 MIEIC 2ano
pg.2
c) Implemente, para cada uma das classes Veiculo, Motorizado, Autom ovel, Camiao e Bic icleta, o
membro-funo:
float calcImposto() const;
Esta funo retorna o valor do imposto a pagar pelo veculo respetivo. Algum(ns) destes membro-
funo deve ser declarado como virtual?
S os veculos motorizados
pagam imposto, cujo valor
dado pela tabela:
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; // retorna o n de veculos no vector veiculos
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
combustivel ano
gasolina outro >1995