Я хочу написать код, который подсчитывает, сколько $ нужно заплатить клиентам в качестве телефонных счетов.
Я бы хотел иметь 3 типа контрактов:
Базовая: 10 $ / минута, 5 $ / SMS
SMSGod: 10 $ / минута, 1 $ / SMS и первые 150 бесплатных SMS
Улучшено: 5 $ / минута, 3 $ / SMS и первые 25 бесплатных SMS
Я хотел бы построить что-то вроде этого:
Класс, содержащий цену, которую клиент должен заплатить за звонки и SMS:
class BaseClass
{
private:
int minutesPrice;
int SMSPrice;
public:
setMinutesPrice(int x) { minutesPrice = x; }
setSMSPrice(int x) { SMSPrice = x; }
};
И 3 потомка класса, какие типы контрактов вы могли видеть выше:
class Basic : public BaseClass
{
public:
Basic()
{
setMinutesPrice(10);
setSMSPrice(5);
}
}
class SMSGod : public BaseClass
{
private:
int freeSMS;
public:
SMSGod()
{
setMinutesPrice(10);
setSMSPrice(1);
freeSMS = 150;
}
}
class Upgraded: public BaseClass
{
private:
int freeSMS;
public:
Upgraded()
{
setMinutesPrice(5);
setSMSPrice(3);
freeSMS = 25;
}
}
Затем класс клиента:
class Client: public BaseClass
{
public:
string name;
string phoneNumber;
string typeOfContract;
int talkedMinutes;
int sentSMS;
public:
Client(...){...}
};
А вот и моя проблема. Как я должен сделать конструктор Client (), чтобы иметь возможность построить Client first_client (...); объект. Как мне вызвать правильного конструктора: Basic , SMSGod или Модернизированный на основе typeOfContract .
Это должно работать:
Client Jack("Jack", "444-468-745", "Upgraded", 50, 25);
Затем другая функция также подсчитывает счет, исходя из того, сколько минут он говорил (50) , сколько отправленных им SMS (25) и из третьего параметра («Улучшено») Я могу использовать функции получения, чтобы узнать, какова базовая цена людей, которые получили «Обновленный» контракт, и сколько бесплатных SMS они получили.
(Это должно сработать в конце, чтобы рассчитать счет за телефон:
int havetopay(Client x)
{
int freeSMS = x.getFreeSMS();
int sentSMS = x.getSentSMS();
int SMS;
if (freeSMS > sentSMS) SMS = 0;
else SMS = sentSMS - freeSMS;
return (SMS * x.getSMSPrice() + x.getTalkedMinutes() * x.getMinutesPrice());
}
)
Спасибо за любую помощь!