aeda1516_fp02

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