Sistema de Gerenciamento de Pedágio para Veículos com Herança em C++

Vamos desenvolver um sistema para gerenciar a cobrança de pedágio para diferentes tipos de veículos. A estrutura base fornecida é a classe abstrata Vehicle:

class Vehicle {
protected:
    string NO; // número de identificação
public:
    Vehicle(string n) { NO = n; }
    virtual int fee() = 0; // calcula a taxa devida
};

A partir dessa classe, construiremos três classes derivadas: Car, Truck e Bus. As regras de cobrança são:

  • Car: (quantidade de passageiros × 8) + (peso × 2)
  • Truck: peso × 5
  • Bus: quantidade de passageiros × 3

Implemente as classes e o programa principal. O programa lê o número de casos de teste e, para cada um, recebe o tipo do veículo (1 para Car, 2 para Truck, 3 para Bus), seu número de identificação e os dados específicos (para Car: passageiros e peso; para Truck: peso; para Bus: passaegiros). Todos os valores são inteiros.

Implementação das classes derivadas

class Car : public Vehicle {
private:
    int passengers;
    int weight;
public:
    Car(string id, int p, int w) : Vehicle(id), passengers(p), weight(w) {}
    int fee() override {
        return passengers * 8 + weight * 2;
    }
};

class Truck : public Vehicle {
private:
    int weight;
public:
    Truck(string id, int w) : Vehicle(id), weight(w) {}
    int fee() override {
        return weight * 5;
    }
};

class Bus : public Vehicle {
private:
    int passengers;
public:
    Bus(string id, int p) : Vehicle(id), passengers(p) {}
    int fee() override {
        return passengers * 3;
    }
};

Programa principle

#include <iostream>
#include <string>
using namespace std;

int main() {
    int cases, type, weight, passengers;
    string id;
    cin >> cases;
    for (int i = 0; i < cases; i++) {
        cin >> type >> id;
        switch (type) {
            case 1:
                cin >> passengers >> weight;
                {
                    Car car(id, passengers, weight);
                    cout << id << " " << car.fee() << endl;
                }
                break;
            case 2:
                cin >> weight;
                {
                    Truck truck(id, weight);
                    cout << id << " " << truck.fee() << endl;
                }
                break;
            case 3:
                cin >> passengers;
                {
                    Bus bus(id, passengers);
                    cout << id << " " << bus.fee() << endl;
                }
                break;
            default:
                break;
        }
    }
    return 0;
}

Exemplo de execução

Entrada:

4
1 002 20 5
3 009 30
2 003 50
1 010 17 6

Saída:

002 170
009 90
003 250
010 148

Tags: C++ Herança Polimorfismo Classe Abstrata cálculo de pedágio

Publicado em 7-27 01:07