Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Все методы вынесены за класс
- Перегружен оператор "присваивания"
- Перегружен оператор "сравнения"
- Добавлен конструктор "копирования"
- Перегружен оператор "меньше" для класса
- Добавлен "деструктор"
- */
- #include <iostream>
- #include <math.h>
- #include <string>
- #include <vector>
- #include <algorithm>
- using namespace std;
- // Класс Донор, все методы, конструкторы, деструктор определены после функции "int main()"
- class Donor
- {
- // изначально все поля класса имеют модификатор доступа "private"
- string firstName, secondName, thirdName;//ФИО
- int passID;//номер паспорта
- int countOfDonate;//счетчик сдач крови
- double totalDonate;//всего крови сдано
- char group;//Группа крови ... на рукаве...
- string rhesus;//Резус фактор
- public://указываем модификатор доступа(из любой точки программы)
- /*
- Стандартный конструктор.
- Пример создания объекта:
- Donor a;
- */
- Donor();
- /*
- Конструктор с передачей параметров.
- Пример создания объекта:
- Donor a("Popov", "Danul", "Akakievi4", 1181, 5, 66.6, 'A', "-");
- */
- Donor(string firstName, string secondName, string thirdName, int passID, int countOfDonate, double totalDonate, char group, string rhesus);
- /*
- Конструктор копирования.
- пример использования:
- Donor a("aba", "b", "c", 123456, 0, 0.0, 'C', "-");//создание объекта "a"
- Donor b(a); // копирование объекта "a" в объект "b";
- Так же, во время операции "=", происходит копирование правого операнда,
- в записи a = b, сначала создается копия b, а потом происходит присваивание.
- */
- Donor(const Donor & other);
- /*
- Деструктор
- */
- ~Donor();
- /* Возвращает Фамилию */
- string getFirstName();
- /* Возвращает Имя */
- string getSecondName();
- /* Возвращает Отчество*/
- string getThirdName();
- /* Возвращает номер паспорта*/
- int getPassID();
- /* Возвращает количество сдач крови*/
- int getCountOfDonate();
- /* Возвращает объем сданной крови*/
- double getTotalDonate();
- /* Возвращает группу крови */
- char getGroup();
- /* Возвращает резус фактор */
- string getRhesus();
- /* Метод увеличивает количество сдач крови на 1 и объем на "donate" */
- void inc(double donate);
- /* Метод выводит объект на экран */
- void print();
- /*
- Перегрузка оператора "<" для сравнения объектов класса Donate и использования sort() из библиотеки STL
- */
- bool operator <(Donor & other);
- /*
- Перегрузка оператора сравнения
- */
- bool operator ==(Donor & other);
- /*
- Перегрузка оператора присваивания
- */
- Donor & operator =(Donor & other);
- };
- int main()
- {
- Donor a("aba", "b", "c", 123456, 0, 0.0, 'A', "-");//создаем объект класса Donate
- Donor b("aba", "caba", "caba", 555431, 0, 2.1, 'B', "+");//создаем объект класса Donate
- #ifndef Debug // если не определен Debug, то выполнится условие
- system("pause");
- #else // (после всех #include вписать "#define Debug" без кавычек и условие не будет выполнятся)
- return 0;
- #endif
- }
- #ifndef SHOW my metods
- Donor::Donor()
- {
- firstName = secondName = thirdName = rhesus = "a";
- passID = countOfDonate = totalDonate = 0;
- group = '*';
- }
- Donor::Donor(string firstName, string secondName, string thirdName, int passID, int countOfDonate, double totalDonate, char group, string rhesus)
- {
- this->firstName = firstName;
- this->secondName = secondName;
- this->thirdName = thirdName;
- this->passID = passID;
- this->countOfDonate = countOfDonate;
- this->totalDonate = totalDonate;
- this->group = group;
- this->rhesus = rhesus;
- }
- Donor::Donor(const Donor & other)
- {
- this->firstName = other.firstName;
- this->secondName = other.secondName;
- this->thirdName = other.thirdName;
- this->passID = other.passID;
- this->countOfDonate = other.countOfDonate;
- this->totalDonate = other.totalDonate;
- this->group = other.group;
- this->rhesus = other.rhesus;
- }
- Donor & Donor::operator=(Donor & other)
- {
- this->firstName = other.firstName;
- this->secondName = other.secondName;
- this->thirdName = other.thirdName;
- this->passID = other.passID;
- this->countOfDonate = other.countOfDonate;
- this->totalDonate = other.totalDonate;
- this->group = other.group;
- this->rhesus = other.rhesus;
- return *this;
- }
- bool Donor::operator<(Donor & other)
- {
- if (this->getGroup() < other.getGroup())
- return true;
- if (this->getGroup() == other.getGroup() && this->getTotalDonate() < other.getTotalDonate())
- return true;
- if (this->getGroup() == other.getGroup() && this->getTotalDonate() == other.getTotalDonate() && this->getFirstName() < other.getFirstName())
- return true;
- if (this->getGroup() == other.getGroup() && this->getTotalDonate() == other.getTotalDonate() && this->getFirstName() == other.getFirstName() &&
- this->getSecondName() < other.getSecondName())
- return true;
- if (this->getGroup() == other.getGroup() && this->getTotalDonate() == other.getTotalDonate() && this->getFirstName() == other.getFirstName() &&
- this->getSecondName() == other.getSecondName() && this->getThirdName() < other.getThirdName())
- return true;
- return false;
- }
- bool Donor::operator==(Donor & other)
- {
- if (this->firstName == other.firstName && this->secondName == other.secondName &&
- this->thirdName == other.thirdName && this->group == other.group &&
- this->passID == other.passID && this->rhesus == other.rhesus) return true;
- return false;
- }
- Donor::~Donor()
- {
- /*
- Если бы класс использовал динамическую память(например: массивы или иные указатели),
- то их нужно было удалять в ручную командой deltete. В данном случае можно деструктор не писать
- */
- }
- string Donor::getFirstName()
- {
- return firstName;
- }
- string Donor::getSecondName()
- {
- return secondName;
- }
- string Donor::getThirdName()
- {
- return thirdName;
- }
- int Donor::getPassID()
- {
- return passID;
- }
- int Donor::getCountOfDonate()
- {
- return countOfDonate;
- }
- double Donor::getTotalDonate()
- {
- return totalDonate;
- }
- char Donor::getGroup()
- {
- return group;
- }
- string Donor::getRhesus()
- {
- return rhesus;
- }
- void Donor::inc(double donate)
- {
- totalDonate += donate;
- countOfDonate++;
- }
- void Donor::print()
- {
- cout << "first name: " << firstName << endl;
- cout << "second name: " << secondName << endl;
- cout << "third name: " << thirdName << endl;
- cout << "PassID: " << passID << endl;
- cout << "count of donate: " << countOfDonate << endl;
- cout << "total donate: " << totalDonate << endl;
- cout << "group: " << group << endl;
- cout << "rhesus factor: " << rhesus;
- cout << endl << endl;
- }
- #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement