МУ_ДЗ_2014 (Методические указания к лабораторным работам), страница 11
Описание файла
Файл "МУ_ДЗ_2014" внутри архива находится в папке "Методические указания к лабораторным работам". Документ из архива "Методические указания к лабораторным работам", который расположен в категории "". Всё это находится в предмете "программирование на основе классов и шаблонов" из 2 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "программирование на основе классов и шаблонов" в общих файлах.
Онлайн просмотр документа "МУ_ДЗ_2014"
Текст 11 страницы из документа "МУ_ДЗ_2014"
Класс абстрактных домов - 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: