Руководство пользователя (РП) (Методические указания к лабораторным работам), страница 3
Описание файла
Файл "Руководство пользователя (РП)" внутри архива находится в следующих папках: Методические указания к лабораторным работам, ЛР_14_КЛР_ПКШ. Документ из архива "Методические указания к лабораторным работам", который расположен в категории "". Всё это находится в предмете "программирование на основе классов и шаблонов" из 2 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "программирование на основе классов и шаблонов" в общих файлах.
Онлайн просмотр документа "Руководство пользователя (РП)"
Текст 3 страницы из документа "Руководство пользователя (РП)"
Street S5("Горького ул." , 7);
Конструктор копирования на основе ссылки на объект:
Home H2("Жилой","д.2", 7,2,3, fast , 5);
Home H3("Магазин", "д.3", 3);
Home H4("ДЭЗ", "д.4а", 4,2);
Street SNew("Улица" , 15);
SNew.add(&H2);
SNew.add(&H3);
SNew.add(&H4);
SNew.printOn(cout);
Street SCopy(SNew);
SCopy.printOn(cout);
18 Деструктор класса Street
Прототип деструктора улицы:
~Street();
Пример явного и неявного использования деструктора:
{
Street *pStreet = new Street (S1);
pStreet ->printOn(cout);
delete pStreet;
}
Неявный вызов деструктора производится при завершении блока операторов. Явный вызов деструктора производится при выполнении операции delete.
19 Методы класса Street
№ п/п | Прототип | Тип возврата | Назначение | Параметры |
| void add(Home *pH, TypeAddDel T= tail , int Numb = 1 , TypeAddDel TC = createObj); | void | Добавление дома на улицу | pH - указатель на дом T - куда добавить (head, tail, Number), TC - создавать ли новый (createObj, nocreateObj ) |
| void del(Home *pH , TypeAddDel T= tail , int Numb = 1 , TypeAddDel TD= nodeleteObj); | void | Удаления дома с улицы | pH - указатель на дом куда выбирается T - куда добавить (head, tail, Number), TD - удалять ли объект (deleteObj, nodeleteObj) |
| virtual void printOn(ostream & out); | void | Печать объекта улицы в стандартный поток | out - ostream стандартный поток |
| int GetNumberHome(); | int | Получить число домов на улице | нет |
| int GetNumberMens(); | int | Получить число жителей на улице | нет |
| int GetNumberApart(); | int | Получить число квартир на улице | нет |
| char * GetNameStreet(); | char * | Получить название улицы | нет |
| char * GetKeyNameStreet(); | char * | Получить номер дома символьный | нет |
| int GetNumbStreet(){ return NumberStreet;}; | int | Получить номер дома числовой | нет |
| int GetKeyNumbStreet(); | int | Получить номер дома числовой для поиска | нет |
| void SetNameStreet(const char * NameStr); | void | Установить название улицы | NameStr - имя улицы |
| void SetKeyNameStreet(const char * sName); | void | Установить имя улицы для поиска | sName - имя улицы для поиска |
| void SetNumbStreet( int n ); | void | Установить номер улицы | n - номер улицы |
| void SetKeyNumbStreet( int n); | void | Установить номер улицы для поиска | n - номер улицы для поиска |
| BOOL GetRemont(); | BOOL | Получить признак ремонта домов на улице | нет |
| BOOL GetRemontStr(); | BOOL | Получить признак ремонта улицы | нет |
| void SetRemontStr(BOOL rS) ; | void | Установить признак ремонта улицы (false, true) | rS - признак ремонта улицы |
| StreetType GetStreetType(); | StreetType | Получить тип улицы: one (односторонняя), two (два направления) , more (много полос) | нет |
| void SetStreetType(StreetType t); | void | Установить тип улицы | t – новый тип улицы: one, two , more |
Примеры использования методов класса Street:
Добавление домов на улицу в начало:
Home H2("Жилой","д.2", 7,2,3, fast , 5);
Home H3("Магазин", "д.3", 3);
Home H4("ДЭЗ", "д.4а", 4,2);
Street Astreet("Добавление head", 20);
Astreet.printOn(cout);
cout << endl << "******* Добавление head *********" << endl;
Astreet.add(&H2 , head);
Astreet.add(&H3 , head);
Astreet.add(&H4 , head);
Astreet.printOn(cout);
Добавление домов на улицу в конец списка:
Home H5("Жилой","д.2", 7,2,3, fast , 5);
Home H6("Магазин", "д.3", 3);
Home H7("ДЭЗ", "д.4а", 4,2);
cout << endl << "******* Добавление tail *********" << endl;
Street Dstreet("Добавление tail ", 20);
Dstreet.add(&H5 , tail);
Dstreet.add(&H6 , tail);
Dstreet.add(&H7 , tail);
Dstreet.printOn(cout);
Добавление домов на улицу по номеру (второго):
cout << endl << "******* Добавление NUM 2 *********" << endl;
Home H8("Жилой 3","д.2", 70,20,30, fast , 50);
Home H9("Магазин 3", "д.3", 3);
Home H10("ДЭЗ 3", "д.4а", 4,2);
Dstreet.add(&H8 , Number, 2);
Dstreet.add(&H9 , Number, 2);
Dstreet.add(&H10 , Number, 2);
Dstreet.printOn(cout);
Удаление домов с улицы (с конца):
cout << endl << "******* Удаление *********" << endl;
Dstreet.del(&H8);
Удаление домов с улицы (с начала):
Dstreet.printOn(cout);
Dstreet.del(&H8 , head);
Dstreet.printOn(cout);
Удаление домов с улицы (по номеру - второго):
Dstreet.del(&H8 , Number, 2);
Dstreet.printOn(cout);
Получение параметров улицы:
cout << "******* Параметры *********" << endl;
cout << "Название улицы -> " << Sumstreet.GetNameStreet() << endl;
cout << "Номер улицы -> " << Sumstreet.GetNumbStreet() << endl;
cout << "Название улицы для поиска-> " << Sumstreet.GetKeyNameStreet() << endl;
cout << "Номер улицы для поиска-> " << Sumstreet.GetKeyNumbStreet() << endl;
cout << "Число домов на улице = " << Sumstreet.GetNumberHome() << endl;
cout << "Число жителей на улице = " << Sumstreet.GetNumberMens() << endl;
cout << "Число квартир на улице = " << Sumstreet.GetNumberApart() << endl;
Получение признака ремонта домов улицы:
if ( Sumstreet.GetRemont() )
cout << "На улице нужен ремонт домов!" << endl;
else
cout << "На улице нужен ремонт домов!" << endl;
if ( Sumstreet.GetStreetType() == one )
cout << "Тип улицы -> одностороннее движение" << endl;
if ( Sumstreet.GetStreetType() == two )
cout << "Тип улицы -> двухсторонне движение" << endl;
Задание параметров улицы:
cout << "******* Изменения параметров *********" << endl;
Sumstreet.SetNameStreet("Новая");
Sumstreet.SetKeyNameStreet("Новая ключ");
Sumstreet.SetNumbStreet( 33 );
Sumstreet.SetKeyNumbStreet( 77 );
cout << "Название улицы 2-> " << Sumstreet.GetNameStreet() << endl;
cout << "Номер улицы 2-> " << Sumstreet.GetNumbStreet() << endl;
cout << "Название улицы для поиска 2-> " << Sumstreet.GetKeyNameStreet() << endl;
cout << "Номер улицы для поиска 2-> " << Sumstreet.GetKeyNumbStreet() << endl;
Sumstreet.printOn(cout);
};
20 Операции класса Street
Прототип оператора присваивания улиц:
Street operator =(Street & S);
Пример применения перегруженного оператора присваивания улиц:
Home H2("Жилой","д.2", 7,2,3, fast , 5);
Home H3("Магазин", "д.3", 3);
H3.setAllParam("Магазин", "д.3", 1,2,3,fast, 3 , true);
Street S1("Улица 1" , 15);
Street SNew("Улица" , 15);
S1.add(&H2);
S1.add(&H3);
S1.printOn(cout);
SNew.printOn(cout);
SNew = S1;
SNew.printOn(cout);
S1.del(&H3 , head);
getchar();
S1.SetNameStreet("Новое название S1 ");
cout << "После изменения S1 (название и удален первый)!!!!" << endl;
cout << "S1!!!!" << endl;
S1.printOn(cout);
cout << "SNew!!!!" << endl;
SNew.printOn(cout);
Создаются две улицы S1(со всеми параметрами и двумя домами Н2 и Н3) и SNew(с минимумом параметров). Далее выполняется операция присваивания домов –“=”. Исходные улицы и улица SNew после присваивания распечатывается. Далее улица S1 изменяется – из нее удаляется один дом Н3. После этого обе улицы снова распечатываются (printOn). После этого S1 изменяется, а SNew остается неизменной. При сложении улиц складываются все параметры улиц, включая и имена. Списки улиц объединяются. Формируется новый тип улицы и устанавливаются признаки ремонта домов улицы и ремонта самой улицы.
21 Дружественные функции класса
Прототип оператора сложения улиц:
friend Street & operator +( Street & X , Street & Y );
Пример применения перегруженного оператора сложения улиц:
cout << endl << "******* Создание улиц *********" << endl;
Home H2("Жилой","д.2", 7,2,3, fast , 5);
Home H3("Магазин", "д.3", 3);
Home H4("ДЭЗ", "д.4а", 4,2);
Street Astreet("Первая", 20);
Astreet.add(&H2 , head);
Astreet.add(&H3 , head);
Astreet.add(&H4 , head);
Astreet.printOn(cout);
Home H5("Аптека","д.2", 7,2,3, fast , 5);
Home H6("Перекресток", "д.3", 3);
Home H7("Детский сад", "д.4а", 4,2);
Street Dstreet("Вторая ", 20);
Dstreet.add(&H5 , tail);
Dstreet.add(&H6 , tail);
Dstreet.add(&H7 , tail);
Dstreet.printOn(cout);
getchar();
cout << endl << "******* Сложение *********" << endl;
Street Sumstreet(" ", 20);
Sumstreet.printOn(cout);
Sumstreet = Astreet + Dstreet;