Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #ifndef PARKING_H
- #define PARKING_H
- #include <string>
- using std::string;
- #include <stdexcept>
- using std::invalid_argument;
- namespace estacionamento {
- class Tempo {
- public:
- //Recebe hora, minuto e segundo. Invoca os métodos set
- Tempo(int hora = 0, int minuto = 0, int segundo = 0)
- throw (invalid_argument);
- Tempo(const Tempo &tempo) throw (invalid_argument);
- const int &getHora() const;
- const int &getMinuto() const;
- const int &getSegundo() const;
- const double calcularDiferencaHoraAtual() const;
- void setHora(const int &hora) throw (invalid_argument);
- void setMinuto(const int &minuto) throw (invalid_argument);
- void setSegundo(const int &segundo) throw (invalid_argument);
- private:
- const Tempo *getHoraAtual() const {
- return new Tempo(20, 10, 30);
- }
- int hora, minuto, segundo;
- };
- class Cliente {
- public:
- Cliente(bool vip, int categoriaVeiculo,
- const string &cpf, const string &placa, const Tempo &chegada)
- throw (invalid_argument);
- virtual ~Cliente();
- const bool &ehVip() const;
- const string &getCpf() const;
- const string &getPlaca() const;
- const Tempo &getChegada() const;
- const int &getCategoriaVeiculo() const;
- const double getHorasPermanencia() const;
- void setCpf(const string &cpf);
- void setPlaca(const string &placa);
- void setTempoChegada(const Tempo &chegada);
- void setCategoriaVeiculo(const int categoriaVeiculo) throw (invalid_argument);
- static const int MOTO = 0;
- static const int CARRO = 1;
- static const int CAMINHAO = 2;
- private:
- string *cpf;
- string *placa;
- int categoriaVeiculo;
- bool vip;
- Tempo *chegada;
- };
- class CaixaEstacionamento {
- public:
- CaixaEstacionamento(double descontoVip = 10.0,
- double adicionalCarro = 10.0, double adicionalCaminhao = 15.0,
- double precoMinimo = 3.5, double precoHoraAdicional = 1.0, int tempoMinimo = 2);
- const double calcularPreco(const Cliente &cliente);
- void adicionarValor(double valor);
- const double getTotalArrecadado() const;
- const double getDescontoVip() const;
- private:
- double totalArrecadado;
- const double descontoVip;
- const double adicionalCarro;
- const double adicionalCaminhao;
- const double precoMinimo;
- const double precoHoraAdicional;
- const int tempoMinimo;
- };
- }
- #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement