Техническое описание(ТО) (1079874)
Текст из файла
14

Московский государственный технический университет им. Н.Э.Баумана
_________________________________________________________________
УТВЕРЖДАЮ: | |
Большаков С.А. | "__"_____________201X Г. |
Комплексная лабораторная работа/ДЗ по дисциплине ПКШ
“Система классов улиц и домов”
Техническое описание
(вид документа)
писчая бумага
(вид носителя)
14
(количество листов)
ИСПОЛНИТЕЛЬ: | |
студент группы ИУ5-ХХ | _____________________ |
Большаков С.А. | "__"_____________201X г. |
Москва - 201X
________________________________________________________________
СОДЕРЖАНИЕ
1. Общие сведения о программном обеспечении 3
2. Модульная структура программного обеспечения 3
3. Диаграмма классов ПО 4
4. Описание методов и данных классов ПО 4
5. КЛАСС ДОМОВ - Home 5
5.1. Данные и переменные класса Home 5
5.2. Конструкторы класса Home 5
5.3. Методы класса Home 6
6. КЛАСС Улиц - Street 7
6.1. Данные и переменные класса Street 7
6.2. Конструкторы класса Street 8
6.3. Методы класса Street 8
7. Данные и файлы данных программного обеспечения 10
8. Основные алгоритмы методов классов ПО 10
8.1. Алгоритм вычисления признака ремонта. 10
8.2. Алгоритм сложения домов. 11
8.3. Алгоритм сложения двух улиц. 11
8.4. Алгоритм перегрузки операции присваивания улиц. 12
8.5. Алгоритм очистки списка. 12
8.6. Алгоритм добавление дома по номеру. 13
9. Описание процедур и функций ПО 14
10. Описание процесса отладки классов. 14
11. Классы и методы, переопределяемые в ПО 14
1 Общие сведения о программном обеспечении
В данном документе дано техническое описание программного продукта: система классов для работы с улицами и домами. Шифр разработки программной системы – DZ_OOP. Техническое описание включает: описание модулей; описание классов, их методов и свойств; описание диаграммы классов; описание алгоритмов методов и процедур.
Данная система классов предназначена для решения задач, в которых необходимо учитывать объекты типа улица и дом с соответствующими свойствами. В частности система классов может обеспечивать решение задач: оценки ремонта домов и улиц, подсчета числа жителей, квартир и этажей в домах. Система классов предназначена для обеспечения удобной работы с этими объектами, высокий уровень надежности программ, функциональных возможностей, а также сокращение сроков разработки и реализации программных продуктов, где необходимо использовать подобные объекты.
2 Модульная структура программного обеспечения
Система классов включена в один основной и один вспомогательный модуль, характеристики которых приведены в таблице, расположенной ниже.
Состав набора исходных файлов:
Название | Размер и тип | Описание | Примечание |
DZ_Class.h | 5,2 Кб, текстовый файл | Описания классов | Содержит все необходимые описания классов для использования программного продукта |
DZ_Array.cpp | 24,8 Кб, текстовый файл | Тестовая программа | Программа предназначена для проверки работоспособности системы классов и проведения приемно-сдаточных испытаний |
DZ_LIB.cpp | 19,1 Кб, текстовый файл | Описание методов классов и общих данных | Модуль библиотек методов |
DZ.h | 360 б, текстовый файл | Описание общих данных | Модель общих описаний |
DZ_Array.exe | 2,36 Мб, исполнимый файл | Тестовая программа | Содержит все необходимое для автономного выполнения в режиме командной строки. |
3 Диаграмма классов ПО
Ниже приставлена диаграмма классов системы классов улиц и домов разработанного программного обеспечения (ПО).
Классы имеют следующее назначение:
Класс CObject - системный абстрактный класс для наследования общих свойств объектов системы классов.
Класс AbsStreet - абстрактный класс, в котором учтены общие свойства улиц.
Класс AbsHome - абстрактный класс, в котором учтены общие свойства домов, размещаемых на улицах.
Класс Street - класс улиц, для создания объекта типа улица, позволяющий создавать объекты, учитывающие свойства: название, список домов, число домов и др.
Класс Home - класс дома, позволяющий создавать объекты описывающие дома, в которых учтены свойства: номер, число квартир, число жителей, признак ремонта и др.
4 Описание методов и данных классов ПО
3.4. Общие данные и переменные
В программах, использующих систему классов улиц и домов, применяются следующие глобальные переменные и перечисления.
№ | Описание данных и перечислений | Назначение | Параметры и значения |
| enum BOOL {false=0 , true}; | Логические значения | false , true |
| static BOOL DestructorDeleteObj; | Глобальный Признак удаления объектов | false , true |
| enum HomeType{fast, multiple , complex}; | Тип дома | Fast - простой, multiple -многокорпусный, complex - сложный |
| enum StreetType{one, two , more }; | Тип улицы: | one - односторонняя, two - двухсторонняя, more - много полос |
| enum TypeAddDel {tail, head, Number ,NumbAfter, NumbCurrent, NumbBefore, AssbAfter, AssCurrent, AssBefore , createObj , nocreateObj , deleteObj, nodeleteObj }; | Режим добавления и удаления объектов | head - голова (начало), tail – хвост (конец), Number – номер (по номеру). createObj – новый объект nocreateObj – не создается deleteObj - удаляется nodeleteObj – не удаляется |
5 КЛАСС ДОМОВ - Home
Класс Home. Дом – объекты данного типа содержат информацию о номере дома, этажности, числе жителей и квартир, необходимости ремонта дома и типе дома. Предусматривается возможность изменения параметров дома.
6 Данные и переменные класса Home
В классе Home объявлены следующие свойства доступные пользователю:
Переменная | Тип свойства | Защита | Назначение |
Home_Number | char * | public | Номер дома (имя) |
iHome | int | public | Номер дома числовой |
EtagCount | int | public | Число этажей |
MenCount | int | public | Число жителей |
TypeHome | HomeType | public | Тип дома (перечисление: простой, многокорпусный, сложный) |
NumbApartament | int | public | Число квартир |
HomeRemont | BOOL | public | Признак необходимости ремонта дома |
7 Конструкторы класса 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 - число квартир |
8 Методы класса 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 |
При сложении двух домов суммируются: число квартир, число жителей, имена домов, устанавливается признак ремонта по логике “ИЛИ”. Этажность определяется по числу этажей первого дома. Тип дома задается как сложный (complex).
9 КЛАСС Улиц - Street
Класс Street. Улица – объекты данного типа в упорядоченном виде содержат информацию о домах улице, названии улицы, типе улицы, соседних улицах (как резерв), необходимости ремонта улицы, числе домов, номера улицы (как резерв). Предусматривается возможность добавления домов на улицу и их удаления, изменения других параметров улицы.
10 Данные и переменные класса Street
В таблице приведены свойства класса улиц (Street).
Название | Тип свойства | Защита | Назначение |
char *Name_Street; | char * | public | Название улицы |
int NumberStreet; | int | public | Номер улицы |
int Homes_num; | int | public | Число домов на улице |
BOOL Remont; | BOOL | public | Признак необходимости ремонта домов улицы |
BOOL RemontStreet; | BOOL | public | Признак ремонта самой улицы |
StreetType StrType; | StreetType | public | Тип улицы: one (односторонняя), two (два направления) , more (много полос) |
Street * ListOfNear; | Street * | public | Список соседних улиц ( зарезервировано) |
11 Конструкторы класса Street
Ниже в таблице приведен список конструкторов класса Street.
№ п/п | Прототип | Тип возврата | Назначение /Параметры |
| Street(); | Street & | Нет |
| Street(const char *sName); | Street & | Создание улицы с названием |
| Street(const char *sNumbSearch, const char *sName); | Street & | Создание улицы с названием и именем для поиска |
| Street(int Num); | Street & | Создание улицы с номером |
| Street(const char *sName , int Num); | Street & | Создание улицы с именем и номером |
| Street(Street & S); | Street & | Создание улицы на основе другой (на основе ссылки) |
12 Методы класса 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 |
Отдельного пояснения методов классов в данном техническом описании не приводиться. В колонке таблицы “Примечания” указана расшифровка необходимых параметров и их значения.
13 Данные и файлы данных программного обеспечения
В системе классов домов и улиц не формируется отдельных файлов. Структуры данных и перечисления для задания параметров приведены в таблице предыдущего раздела (“Общие описания ”).
14 Основные алгоритмы методов классов ПО
Некоторые важные алгоритмы системы классов представлены ниже на рисунках.
15 Алгоритм вычисления признака ремонта.
Алгоритм вычисления признака ремонта домов улицы
(этот параметр задается в объекте улица отдельно) приведен ниже (функция GetRemont() – метод класса Street):
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.