4 Лаба по ЯП. Public Мы можем спокойно обратится к тому, что находится в зоне паблик, например phone. Set() или phone. Print()
Скачать 40.62 Kb.
|
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; } |