МУ_ДЗ_2014 (1079920), страница 11
Текст из файла (страница 11)
| Класс абстрактных домов - AbstrHome | |||||||
| Смысловое описание класса: Абстрактный класс, используется в учебно-методическом аспекте для получения навыков использования абстрактных классов и виртуальных функций, а также для возможностей развития системы классов улиц и домов, например для поисковых систем. | |||||||
| Базовые классы класса AbstrHome: : public CObject | |||||||
| Свойства класса AbstrHome | |||||||
| № п/п | Содержание свойства | Тип данных и название | Примечание | ||||
| | Символьное поле для поиска объекта дома | char *name; | |||||
| | Номер-ключ для поиска объекта дома | int no; | |||||
| Методы класса AbstrHome | |||||||
| № п/п | Содержание метода | Тип метода | Прототип метода | Примечание | |||
| | Создание объекта | конструктор (конст.) | AbstrHome(); | ||||
| | Удаление объекта | Деструктор | ~ AbstrHome () | ||||
| Виртуальные методы класса AbstrHome | |||||||
| | Получить тип класса | Виртуальный метод | virtual int classType()=0; | Чистая ВФ | |||
| | Получить имя класса | Виртуальный метод | virtual char *className() =0; | Чистая ВФ | |||
| | Распечатать параметры дома | Виртуальный метод | virtual void printOn (ostream & out) =0; | Чистая ВФ | |||
Для класса улиц мы можем получить следующую таблицу свойств и методов:
| Класс улиц - Street | ||||||
| Смысловое описание класса улиц: класс улиц используется для создания объектов типа улица, включающая в себя дома. Дома на улице упорядочены. Учитываются свойства: название улицы, признаки ремонта, тип улицы, число домов на улице, список соседних улиц. | ||||||
| Базовые классы класса Street: AbstrStreet, , CObArray | ||||||
| Свойства класса Street | ||||||
| № п/п | Содержание свойства | Тип данных и название | Примечание | |||
| | Символьное название улицы | char *Name_Street | ||||
| | Число домов на улице | int Homes_num | ||||
| | Номер улицы | int NumberStreet | ||||
| | Признак ремонта домов на улице | BOOL Remont | ||||
| | Признак ремонта улицы | BOOL RemontStreet | ||||
| | Тип улицы | StreetType StrType | ||||
| | Список соседних улиц | Street * ListOfNear | Зарезервировано для развития | |||
| Методы класса Street | ||||||
| № п/п | Содержание метода | Тип метода | Прототип метода | Примечание | ||
| | Создать улицу без параметров | конструктор (конст.) | Street() | Проложить улицу | ||
| | Создать улицу с названием | конст. | Street(const char *sName) | Проложить улицу | ||
| | Создать улицу с названием и ключом для поиска | конст. | Street(const char *sNumbSearch, const char *sName) | Проложить улицу | ||
| | Создать улицу с номером | конст. | Street(int Num) | Проложить улицу | ||
| | Создать улицу с названием и номером | конст. | Street(const char *sName , int Num) | Проложить улицу | ||
| | Создать улицу на основе другой | конст | Street(Street & S) | Проложить улицу | ||
| | Удалить улицу | Деструктор | ~Street() | Снести улицу | ||
| | Добавить дом на улицу | Метод | void add(Home *pH, TypeAddDel = tail , int Numb = 1 , TypeAddDel = createObj) | |||
| | Удалить дом с улицы | Метод | void del(Home *pH , TypeAddDel = tail , int Numb = 1 , TypeAddDel = nodeleteObj) | |||
| | Получить число домов | Метод | int GetNumberHome() | |||
| | Получить число жителей | Метод | int GetNumberMens() | |||
| | Получить число квартир | Метод | int GetNumberApart() | |||
| | Получить название улицы | Метод | char * GetNameStreet() | |||
| | Получить имя улицы для поиска | Метод | char * GetKeyNameStreet() | |||
| | Получить номер улицы | Метод | int GetNumbStreet() | |||
| | Получить номер улицы для поиска | Метод | int GetKeyNumbStreet() | |||
| | Установить название улицы | Метод | void SetNameStreet(const char * NameStr) | |||
| | Установить название ключ для поиска улицы | Метод | void SetKeyNameStreet(const char * sName) | |||
| | Установить номер улицы | Метод | void SetNumbStreet( int n ) | |||
| | Установить номер ключ для поиска улицы | Метод | void SetKeyNumbStreet( int k) | |||
| | Получить признак ремонта домов | Метод | BOOL GetRemont() | |||
| | Получить признак ремонта улицы | Метод | BOOL GetRemontStr() | |||
| | Установить признак ремонта улицы | Метод | void SetRemontStr(BOOL rS) | |||
| | Получить тип улицы | Метод | StreetType GetStreetType() | |||
| | Установить тип улицы | Метод | void SetStreetType(StreetType t) | |||
| | Оператор присваивания | Оператор = | Street operator =( Street & S ); | Оператор должен быть перегружен, так как в объекте есть данные из динамической памяти | ||
| | Сложить две улицы | - оператор | friend Street & operator +( Street & X , Street & Y ); | Дружественная внешняя функция | ||
| Виртуальные методы класса Street | ||||||
| | Получить тип класса | Виртуальный метод | virtual int classType(); | |||
| | Получить имя класса | Виртуальный метод | virtual char *className(); | |||
| | Распечатать параметры дома | Виртуальный метод | Virtual void printOn (ostream & out); | |||
| Класс абстрактных улиц - AbstrStreet | |||||||
| Смысловое описание класса: Абстрактный класс, используется в учебно-методическом аспекте для получения навыков использования абстрактных классов и виртуальных функций, а также для возможностей развития системы классов улиц и домов, например для поисковых систем. | |||||||
| Базовые классы класса AbstrStreet: нет | |||||||
| Свойства класса AbstrStreet | |||||||
| № п/п | Содержание свойства | Тип данных и название | Примечание | ||||
| | Символьное поле для поиска объекта дома | char *name; | |||||
| | Номер-ключ для поиска объекта дома | int no; | |||||
| Методы класса AbstrStreet | |||||||
| № п/п | Содержание метода | Тип метода | Прототип метода | Примечание | |||
| | Создание объекта | конструктор (конст.) | AbstrStreet (); | ||||
| | Удаление объекта | Деструктор | ~ AbstrStreet () | ||||
| Виртуальные методы класса AbstrStreet | |||||||
| | Получить тип класса | Виртуальный метод | virtual int classType()=0; | Чистая ВФ | |||
| | Получить имя класса | Виртуальный метод | virtual char *className() =0; | Чистая ВФ | |||
| | Распечатать параметры дома | Виртуальный метод | virtual void printOn (ostream & out) =0; | Чистая ВФ | |||
На втором этапе необходимо запрограммировать классы на языке С++. Отладить программы описания классов (обязательно использование отладчика), разработав для этого тестовый, демонстрационный пример, который иллюстрирует работу всех методов всех разработанных классов, а также использование всех свойств/атрибутов объектов всех разработанных классов.
Пример. Описание классов нашего примера может выглядеть так, мы поместим эти описания в модуль – DZ_Class.H:















