Главная страница

4 Лаба по ЯП. Public Мы можем спокойно обратится к тому, что находится в зоне паблик, например phone. Set() или phone. Print()


Скачать 40.62 Kb.
НазваниеPublic Мы можем спокойно обратится к тому, что находится в зоне паблик, например phone. Set() или phone. Print()
Анкор4 Лаба по ЯП
Дата26.09.2022
Размер40.62 Kb.
Формат файлаdocx
Имя файла4_16 (1).docx
ТипДокументы
#697195

1ая реализация

#include

#include

using namespace std;

class phone

{

public: //Мы можем спокойно обратится к тому, что находится в зоне паблик, например phone.Set() или phone.Print()

phone() //Конструктор по умолчанию (без комментариев)

{

phone_number = "Null";

city_code = is_fax = 0;

};

phone(string phone_number, int city_code, int is_fax) //Конструтор инициализации (принимает 3 параметра, полей в классе тоже 3, значит все три поля он может спокойно инициализировать)

{

this->phone_number = phone_number;

this->city_code = city_code;

this->is_fax = is_fax;

error_checking();

};

phone(string phone_number)//Конструктор преобразования (принимает 1 параметр, а полей в классе 3, одно поле он может инициализировать, а остальные нет, поэтому преобразует их)

{

this->city_code = this->is_fax = 0;

this->phone_number = phone_number;

error_checking();

};
void Set() //Метод класса, задаёт поля объекта, у которого мы вызвали этот метод, в нашем случае у phone4 (phone4.Set())

{

cout << "\nВведите свой номер телефона \nНомер телефона: "; cin >> this->phone_number;

cout << "Введите код города \nКод города: "; cin >> this->city_code;

cout << "Имеется факс?\n0-нет\n1-да\nВаш ответ: "; cin >> this->is_fax;

error_checking();

}

void Print()//Метод класса, выводит поля объекта, у которого мы вызвали этот метод

{

cout << "Номер телефона: " << this->phone_number << "\nКод города: " << this->city_code;
if (this->is_fax == 0)

cout << "\nФакса нет\n\n";

else if (this->is_fax == 1)

cout << "\nФакс имеется\n\n";

else

cout << "\nНаличие факса не удалось определить\n\n";

}

private://Мы не можем обратится в мейне и других функциях к полям и методам, которые находятся в привате, для этого надо делать функцию friend(другом), из которой мы собираемся обращаться к полям из привата

ПОЛЯ:

string phone_number; // проще стринг использовать, либо у нас лаба про тему классов, то стринг сюда подходит стринг это ведь тоже класс
int city_code, is_fax; // инт тк у нас числовые значения простые, не длинные
void error_checking()

{

if (this->is_fax != 0 && this->is_fax != 1)

{

cout << "\nОШИБКА:\nУ одного из сохданных объектов не удалось определить наличие факса!\n";

}

}

};

int main()

{

setlocale(LC_ALL, "ru");
phone phone1;//Вызовется конструтор по умолчанию по заданию

phone phone2("+79001233333");//Вызовется конструтор преобразования

phone phone3("+78005553535", 2, 3);//Вызовется конструтор инициализации

phone phone4;//Вызовется конструктор по умолчанию, методом set вводим
phone4.Set();//Вызвали метод Set() у объекта phone4
cout << "\nОбъект с конструктор по умолчанию:\n"; phone1.Print();//Вызвали метод Print() у объекта phone1

cout << "\nОбъект с конструктор преобразования:\n"; phone2.Print();//Вызвали метод Print() у объекта phone2

cout << "\nОбъект с конструктор инициализации:\n"; phone3.Print();//Вызвали метод Print() у объекта phone3

cout << "\nОбъект с введёнными свойстами:\n"; phone4.Print();//Вызвали метод Print() у объекта phone4

return 0;

}

2ая реализация

#include

#include

using namespace std;
class phone

{

public:

phone() //Конструктор по умолчанию

{

phone_number = "Null";

city_code = is_fax = 0;

};

phone(string phone_number, int city_code, int is_fax) //Конструтор инициализации

{

this->phone_number = phone_number;

this->city_code = city_code;

this->is_fax = is_fax;

error_checking();

};

phone(string phone_number)//Конструктор преобразования

{

this->city_code = this->is_fax = 0;

this->phone_number = phone_number;

error_checking();

};
void Set(); //По сути это прототипы функций класса, которые мы дальше определяем вне класса

void Print();
private:

string phone_number;

int city_code, is_fax;
void error_checking()

{

if (this->is_fax != 0 && this->is_fax != 1)

{

cout << "\nОШИБКА:\nУ одного из сохданных объектов не удалось определить наличие факса!\n";

}

}

};
void phone::Set() //Определяем метод класса void phone::Set() (тип_класса какой_класс::название_метода()) эти методы являются членами класса

{

cout << "\nВведите свой номер телефона \nНомер телефона: "; cin >> this->phone_number;

cout << "Введите код города \nКод города: "; cin >> this->city_code;

cout << "Имеется факс?\n0-нет\n1-да\nВаш ответ: "; cin >> this->is_fax;

error_checking();

}
void phone::Print()//Определяем метод класса void phone::Print() (тип_класса какой_класс::название_метода()) эти методы являются членами класса

{

cout << "Номер телефона: " << this->phone_number << "\nКод города: " << this->city_code;
if (this->is_fax == 0)

cout << "\nФакса нет\n\n";

else if (this->is_fax == 1)

cout << "\nФакс имеется\n\n";

else

cout << "\nНаличие факса не удалось определить\n\n";

}

int main()

{

setlocale(LC_ALL, "ru");
phone phone1;

phone phone2("+79001233333");

phone phone3("+78005553535", 2, 3);

phone phone4;
phone4.Set();
cout << "\nОбъект с конструктор по умолчанию:\n"; phone1.Print();

cout << "\nОбъект с конструктор преобразования:\n"; phone2.Print();

cout << "\nОбъект с конструктор инициализации:\n"; phone3.Print();

cout << "\nОбъект с введёнными свойстами:\n"; phone4.Print();

return 0;

}

3я реализация

#include

#include

using namespace std;
class phone

{

public:
phone() //Конструктор по умолчанию

{

phone_number = "Null";

city_code = is_fax = 0;

};

phone(string phone_number, int city_code, int is_fax) //Конструтор инициализации

{

this->phone_number = phone_number;

this->city_code = city_code;

this->is_fax = is_fax;

error_checking();

};

phone(string phone_number)//Конструктор преобразования

{

this->city_code = this->is_fax = 0;

this->phone_number = phone_number;

error_checking();

};
private:

friend phone Set();

friend void Print(phone object);

string phone_number;

int city_code, is_fax;
void error_checking()

{

if (this->is_fax != 0 && this->is_fax != 1)

{

cout << "\nОШИБКА:\nУ одного из сохданных объектов не удалось определить наличие факса!\n";

}

}

};
phone Set() //Функция, не член класса, поэтому чтобы она видела приват поля, мы ее должны сделать другом класса

{

phone object;

cout << "\nВведите свой номер телефона \nНомер телефона: "; cin >> object.phone_number;

cout << "Введите код города \nКод города: "; cin >> object.city_code;

cout << "Имеется факс?\n0-нет\n1-да\nВаш ответ: "; cin >> object.is_fax;

object.error_checking();

return object;

}
void Print(phone object)//Функция, не член класса, поэтому чтобы она видела приват поля, мы ее должны сделать другом класса

{

cout << "Номер телефона: " << object.phone_number << "\nКод города: " << object.city_code;
if (object.is_fax == 0)

cout << "\nФакса нет\n\n";

else if (object.is_fax == 1)

cout << "\nФакс имеется\n\n";

else

cout << "\nНаличие факса не удалось определить\n\n";

}

int main()

{

setlocale(LC_ALL, "ru");
phone phone1;

phone phone2("+79001233333");

phone phone3("+78005553535", 2, 3);

phone phone4;
phone4 = Set();
cout << "\nОбъект с конструктор по умолчанию:\n"; Print(phone1);

cout << "\nОбъект с конструктор преобразования:\n"; Print(phone2);

cout << "\nОбъект с конструктор инициализации:\n"; Print(phone3);

cout << "\nОбъект с введёнными свойстами:\n"; Print(phone4);

return 0;

}

4ая реализация

#include

#include

using namespace std;
class phone

{

public:

phone() //Конструктор по умолчанию

{

phone_number = "Null";

city_code = is_fax = 0;

};

phone(string phone_number, int city_code, int is_fax) //Конструтор инициализации

{

this->phone_number = phone_number;

this->city_code = city_code;

this->is_fax = is_fax;

error_checking();

};

phone(string phone_number)//Конструктор преобразования

{

this->city_code = this->is_fax = 0;

this->phone_number = phone_number;

error_checking();

};
private:

friend void Set(phone&);

friend void Print(phone object);
string phone_number;

int city_code, is_fax;
void error_checking()

{

if (this->is_fax != 0 && this->is_fax != 1)

{

cout << "\nОШИБКА:\nУ одного из сохданных объектов не удалось определить наличие факса!\n";

}

}

};

void Set(phone& object)//Здесь в отличие от 3ей реализации мы принимае по ссылке, остальное всё так же

{

cout << "\nВведите свой номер телефона \nНомер телефона: "; cin >> object.phone_number;

cout << "Введите код города \nКод города: "; cin >> object.city_code;

cout << "Имеется факс?\n0-нет\n1-да\nВаш ответ: "; cin >> object.is_fax;

object.error_checking();

}
void Print(phone object)

{

cout << "Номер телефона: " << object.phone_number << "\nКод города: " << object.city_code;
if (object.is_fax == 0)

cout << "\nФакса нет\n\n";

else if (object.is_fax == 1)

cout << "\nФакс имеется\n\n";

else

cout << "\nНаличие факса не удалось определить\n\n";

}
int main()

{

setlocale(LC_ALL, "ru");
phone phone1;

phone phone2("+79001233333");

phone phone3("+78005553535", 2, 3);

phone phone4;
Set(phone4);
cout << "\nОбъект с конструктор по умолчанию:\n"; Print(phone1);

cout << "\nОбъект с конструктор преобразования:\n"; Print(phone2);

cout << "\nОбъект с конструктор инициализации:\n"; Print(phone3);

cout << "\nОбъект с введёнными свойстами:\n"; Print(phone4);

return 0;

}


написать администратору сайта