Данные и переменные класса Home
В классе Home объявлены следующие свойства доступные пользователю:
Переменная | Тип свойства | Защита | Назначение |
Home_Number | char* | public | Номер дома (имя) |
iHome | int | public | Номер дома числовой |
EtagCount | int | public | Число этажей |
MenCount | int | public | Число жителей |
TypeHome | HomeType | public | Тип дома (перечисление: простой, многокорпусный, сложный) |
NumbApartament | int | public | Число квартир |
HomeRemont | BOOL | public | Признак необходимости ремонта дома |
Конструкторы класса Home
В классе Home описаны следующие конструкторы:
№ п/п | Прототип | Тип возврата | Назначение /Параметры |
| Home() | Home & | Нет |
| Home( Home & H) | Home & | Новый на основе ссылки на объект типа дом: Home & |
| Home( Home * pH) | Home & | Новый на основе указателя на объект типа дом: Home * |
| Home(const char *HomName, const char *Number) | Home & | Новый с параметрами: HomName - имя Number - номер дома |
| Home(const char *HomName, const char *Number, int Numb) | Home & | Новый с параметрами: HomName - имя дома, Number - номер дома Numb - номер для поиска |
| Home(const char *HomName, const char *Number, int Numb, int Etag, int Men=0,HomeType Type = fast,int Apart=0) | Home & | Новый с параметрами: HomName - имя дома, Number - номер дома Numb - номер для поиска, Etag - этажность, Men - число жителей, Type – тип дома, Apart - число квартир |
Примеры использования конструкторов:
Конструктор без параметров:
Home H1;
Конструктор с именем и номером символьным:
Home H2("Жилой","д.2");
Конструктор с именем, номером символьным и номером для поиска:
Home H3("Жилой", "д.3", 3);
Конструктор с именем, номером символьным, номером для поиска и этажностью:
Home H4("Жилой", "д.4а", 4,2);
Конструктор с именем, номером символьным, номером для поиска, этажностью и числом жителей:
Home H5("ДЭЗ", "д.5", 5,2,3);
Конструктор с именем, номером символьным, номером для поиска, этажностью, числом жителей и типом дома:
Home H6("Жилой", "д.6", 6,2,3, fast);
Конструктор с именем, номером символьным, номером для поиска, этажностью, числом жителей, типом дома и числом квартир:
Home H7("Магазин", "д.7", 7,2,3, multiple , 5);
Примеры использования конструкторов копирования:
Конструктор копирования на основе ссылки:
Home H6("ДЭЗ", "д.5", 5,2,3);
Home Test(H5);
H5.printOn(cout);
Test.printOn(cout);
Конструктор копирования на основе ссылки и динамической памяти:
Home *pHome = new Home (H6);
H6.printOn(cout);
pHome->printOn(cout);
delete pHome;
Конструктор копирования на основе ссылки и операции присваивания “-”:
Home Temp;
Home H7("Магазин", "д.7", 7,2,3, multiple , 5);
Temp = H7;
H7.printOn(cout);
Temp.printOn(cout);
Конструктор копирования на основе указателя и динамической памяти:
Home H6("ДЭЗ", "д.5", 5,2,3);
Home *pHome = new Home (H6);
Home *pHome1 = new Home (* pHome);
pHome->printOn(cout);
pHome1->printOn(cout);
delete pHome;
delete pHome1;
Деструктор класса Home
Прототип деструктора:
~Home();
Пример явного и неявного использования деструктора:
{
Home *pHome = new Home (H6);
pHome->printOn(cout);
delete pHome;
}
Неявный вызов деструктора производится при завершении блока операторов . Явный вызов деструктора производится при выполнении операции delete.
Методы класса Home
В таблице представлены методы класса Home.
№ п/п | Прототип | Тип возврата | Назначение | Параметры |
| void setName(const char *HomName , const char *Number=NULL) | void | Установить имя дома и номер дома | HomName - имя дома и Number - номер дома |
| const char *getName() | const char * | Получить имя дома | Нет |
| const char *getNumb() | const char * | Получить номер дома | Нет |
| int getNo() | int | Получить номер дома для поиска | Нет |
| void getParam(int & iH, int & Etag ,int & Men ,HomeType & Type, int & Apart ) | void | Получить параметры дома | iH -номер дома, Etag - этажность, Men - число жителей, Type – тип (значение типа дома выбирается из набора перечисления HomeType см. выше), Apart - число квартир |
| void setParam(int iH, int Etag ,int Men ,HomeType Type, int Apart ) | void | Задать новые параметры дома | iH -номер дома, Etag - этажность, Men - число жителей, Type – тип (значение типа дома выбирается из набора перечисления HomeType см. выше), Apart - число квартир |
| void setAllParam(const char *HomName , const char *Number, int iH, int Etag , int Men ,HomeType Type, int Apart , BOOL rem = false) | void | Задать все новые параметры дома | HomName - имя дома, Number - имя дома для поиска iH -номер дома, Etag - этажность, Men - число жителей, Type – тип (значение типа дома выбирается из набора перечисления HomeType см. выше), Apart - число квартир rem -признак ремонта |
| virtual void printOn(ostream & out) | void | Печать в стандартный поток | Out – тип ostream |
Примеры использования методов класса Home:
Установка имени дома символьного:
Temp.setName("Университет");
Temp.printOn(cout);
Установка имени и номера дома символьного:
Temp.setName("Магазин" ,"д.11/12");
Temp.printOn(cout);
Получение имени и номера дома символьного:
cout << "Name дома = "<< Temp.getName() << endl;
Получение номера дома символьного:
cout << "Номер дома = "<< Temp.getNumb() << endl;
Получение номера дома для поиска:
cout << "Номер в списке = "<< Temp.getNo() << endl;
Получение параметров дома:
cout << "Параметры: "<< endl;
int iH, Etag , Men , Apart ;
HomeType Type;
Temp.getParam(iH , Etag, Men, Type , Apart);
cout << "Номер -" << iH <<
" Этажей -" << Etag << " Жителей -" << Men << endl;
if (Type == fast)
cout << "Тип дома - простой ";
if (Type == multiple)
cout << "Тип дома - много строений ";
if (Type == complex)
cout << "Тип дома - сложный ";
cout << " Число квартир - " << Apart << endl;
Установка параметров дома:
Temp.setParam(1,2,3,fast, 5 );
Temp.printOn(cout);
Установка всех параметров дома:
Temp.setAllParam("Аптека", "10/8 кв.3", 11,12,13,fast, 15, true );
Temp.printOn(cout);
Операции класса Home
Прототип перегруженного оператора присваивания:
Home operator =(Home & H );
Пример использования перегруженного оператора присваивания:
Home Temp;
Home H7("Магазин", "д.7", 7,2,3, multiple , 5);
Temp = H7;
H7.printOn(cout);
Temp.printOn(cout);