Главная » Все файлы » Просмотр файлов из архивов » Документы » Шаблон_Техническое_описание(ТО)

Шаблон_Техническое_описание(ТО) (Методические указания к лабораторным работам)

2018-01-11СтудИзба

Описание файла

Файл "Шаблон_Техническое_описание(ТО)" внутри архива находится в следующих папках: Методические указания к лабораторным работам, ЛР_13_КЛР_ПКШ. Документ из архива "Методические указания к лабораторным работам", который расположен в категории "". Всё это находится в предмете "программирование на основе классов и шаблонов" из 2 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "программирование на основе классов и шаблонов" в общих файлах.

Онлайн просмотр документа "Шаблон_Техническое_описание(ТО)"

Текст из документа "Шаблон_Техническое_описание(ТО)"

13


Московский государственный технический университет им. Н.Э.Баумана

_________________________________________________________________

УТВЕРЖДАЮ:

Большаков С.А.

"__"_____________201Х Г.

Домашнее задание по дисциплине ПКШ

“Система классов улиц и домов

Техническое описание

(вид документа)

писчая бумага

(вид носителя)

13

(количество листов)

ИСПОЛНИТЕЛЬ:

студент группы ИУ5-ХХ

_____________________

Большаков С.А.

"__"_____________201Х г.







Москва - 201Х

________________________________________________________________

СОДЕРЖАНИЕ

1. Общие сведения о программном обеспечении 3

2. Модульная структура программного обеспечения 3

3. Диаграмма классов ПО 4

4. Описание методов и данных классов ПО 4

5. Данные и файлы данных программного обеспечения 11

6. Основные алгоритмы методов классов ПО 12

6.1. Алгоритм вычисления признака ремонта. 12

7. Описание процедур и функций ПО 13

8. Описание процесса отладки классов. 13

9. Классы и методы, переопределяемые в ПО 13

1 Общие сведения о программном обеспечении

В данном документе дано техническое описание программного продукта: система классов для работы с улицами и домами. Шифр разработки программной системы – DZ_OOP. Техническое описание включает: описание модулей; описание классов, их методов и свойств; описание диаграммы классов; описание алгоритмов методов и процедур.

Данная система классов предназначена для решения задач, в которых необходимо учитывать объекты типа улица и дом с соответствующими свойствами. В частности система классов может обеспечивать решение задач: оценки ремонта домов и улиц, подсчета числа жителей, квартир и этажей в домах. Система классов предназначена для обеспечения удобной работы с этими объектами, высокий уровень надежности программ, функциональных возможностей, а также сокращение сроков разработки и реализации программных продуктов, где необходимо использовать подобные объекты.

(В данном разделе дается шифр программной системы, перечень материала, включенного в документ. Характеризуется кратко назначение системы классов. Смотрите методические указания к лабораторной работе.)

2 Модульная структура программного обеспечения

Система классов включена в один основной и один вспомогательный модуль, характеристики которых приведены в таблице, расположенной ниже.

Состав набора исходных файлов:

Название

Размер и тип

Описание

Примечание

DZ_2kurs.h

32,4 Кб, текстовый файл

Описания классов, методов и общих данных

Содержит все необходимые описания для использования программного продукта

DZ_2kurs.cpp

12,9 Кб, текстовый файл

Тестовая программа

Программа предназначена для проверки работоспособности системы классов и проведения приемно-сдаточных испытаний

DZ_2kurs.exe

114,7 Кб, исполнимый файл

Тестовая программа

Содержит все необходимое для автономного выполнения в режиме командной строки.

(В данном разделе приведена модульная структура ПО и основные характеристики ПО. Смотрите методические указания к лабораторной работе.)

3 Диаграмма классов ПО

Н
иже приставлена диаграмма классов системы классов улиц и домов разработанного программного обеспечения (ПО).

Классы имеют следующее назначение:

Класс Obj - абстрактный класс для наследования общих свойств объектов системы классов.

Класс listElem - класс для организации списков, задающий объекты, которые будут включаться в списки.

Класс List - класс для создания объектов, которые обеспечивают построение и работу со списками (включение, просмотр, удаление, печать и др.).

Класс AbsStreet - абстрактный класс, в котором учтены общие свойства улиц.

Класс AbsHome - абстрактный класс, в котором учтены общие свойства домов, размещаемых на улицах.

Класс Street - класс улиц, для создания объекта типа улица, позволяющий создавать объекты, учитывающие свойства: название, список домов, число домов и др.

Класс Home - класс дома, позволяющий создавать объекты описывающие дома, в которых учтены свойства: номер, число квартир, число жителей, признак ремонта и др.

(В данном разделе приведена диаграмма класоов ПО и назначенеи отдельных классов на содержательном уровне. Смотрите методические указания к лабораторной работе.)

4 Описание методов и данных классов ПО

Описание классов, их свойств и методов приведены в таблице.

Прототип функции или описание свойства

Тип члена

Назначение

Общие описания

enum BOOL {false=0 , true};

перечисление

static BOOL DestructorDeleteObj;

Глобальная переменная

Признак удаления объектов

enum HomeType{fast, multiple , complex};

перечисление

Тип дома: простой, многокорпусный, сложный

enum StreetType{one, two , more };

перечисление

Тип улицы: односторонняя, двухсторонняя, много полос

enum TypeAddDel {tail, head, Number ,NumbAfter, NumbCurrent, NumbBefore,

AssbAfter, AssCurrent, AssBefore , createObj , nocreateObj , deleteObj, nodeleteObj };

перечисление

Режим удаления объектов: голова, хвост, номер.

#define StreetClass 1

Переменная этапа компиляции

Номер класса улицы (1)

#define HomeClass 2

Переменная этапа компиляции

Номер класса дома (2)

Класс Objабстрактный класс для наследования объектами, включаемыми в списки

Абстрактный класс

Для наследования объектов включаемых в списки

char *name

свойство

Имя для поиска

int no

свойство

Номер для поиска

Obj()

конструктор

~Obj(){

деструктор

virtual char *className() = 0;

Чистая виртуальная функция

Имя класса

virtual void printOn(ostream &) = 0;

Чистая виртуальная функция

Печать объекта

virtual int classType() = 0;

Чистая виртуальная функция

Тип объекта

Класс AbstrHomeабстрактный класс для наследования классов домов

Абстрактный класс

Задает общие свойства всех домов

virtual int classType() = 0;

Чистая виртуальная функция

Имя класса

virtual char *className() = 0;

Чистая виртуальная функция

Печать объекта

virtual void printOn(ostream &) = 0;

Чистая виртуальная функция

Тип объекта

AbstrHome(): Obj(){};

конструктор

~AbstrHome(){};

деструктор

Класс AbstrStreetабстрактный класс для наследования классов улиц

Абстрактный класс

Задает общие свойства всех улиц

virtual int classType() = 0;

Чистая виртуальная функция

Имя класса

virtual char *className() = 0;

Чистая виртуальная функция

Печать объекта

virtual void printOn(ostream &) = 0;

Чистая виртуальная функция

Тип объекта

AbstrStreet (): Obj(){};

конструктор

~AbstrStreet (){};

деструктор

Класс Homeкласс для создания объектов домов, включаемыхых в объекты улиц

Класс

Создание объектов типа дом

virtual int classType(){ return HomeClass; }

виртуальная функция

Задает тип дом числовой

virtual char *className(){ return "Home"; }

виртуальная функция

Задает класс дом символьный

virtual void printOn(ostream & out)

виртуальная функция

Печать в стандартный поток

Home()

конструктор

Home( Home & H)

конструктор

Новый на основе ссылки на объект типа дом

Home( Home * pH)

конструктор

Новый на основе указателя на объект типа дом

Home(const char *HomName, const char *Number)

конструктор

Новый с параметрами: имя и номер для поиска

Home(const char *HomName, const char *Number, int Numb)

конструктор

Новый с параметрами: имя дома, номер дома и номер для поиска

Home(const char *HomName, const char *Number, int Numb, int Etag, int Men=0,HomeType Type = fast,int Apart=0)

конструктор

Новый с параметрами: имя дома, номер дома, номер для поиска, этажность, число жителей, тип и число квартир

~Home()

деструктор

void setName(const char *HomName , const char *Number=NULL)

метод

Установить имя дома

const char *getName()

метод

Получить имя дома

const char *getNumb()

метод

Получить номер дома

int getNo()

метод

Получить номер дома для поиска

void getParam(int & iH, int & Etag ,int & Men ,HomeType & Type, int & Apart )

метод

Получить параметры:

номер дома, этажность, число жителей, тип и число квартир

void setParam(int iH, int Etag ,int Men ,HomeType Type, int Apart )

метод

Задать параметры:

номер дома, этажность, число жителей, тип и число квартир

void setAllParam(const char *HomName , const char *Number, int iH, int Etag , int Men ,HomeType Type, int Apart , BOOL rem = false)

метод

Задать все параметры:

имя дома, имя дома для поиска

номер дома, этажность, число жителей, тип, число квартир и признак ремонта

friend Home & operator +(Home & H1 , Home & H2)

Дружественная функция - операция

Складываются два дома

Home operator =(Home & H );

Операция

Перегрузка оператора присваивания домов

char *Home_Number

свойство

Номер дома (имя)

int iHome

свойство

Номер дома числовой

int EtagCount

свойство

Число этажей

int MenCount

свойство

Число жителей

HomeType TypeHome

свойство

Тип дома (перечисление: простой, многокорпусный, сложный)

int NumbApartament

свойство

Число квартир

BOOL HomeRemont ;

свойство

Признак необходимости ремонта дома

friend Street

Дружественный класс

Класс 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);

метод

Удаления дома с улицы с учетом режима удаления (голова, хвост и номер) и признака удаления объектов

virtual int classType() { return StreetClass; }

виртуальная функция

Тип класса числовой

virtual char *className() { return "Street"; }

виртуальная функция

Тип класса символьный

virtual void printOn(ostream & out);

виртуальная функция

Печать объекта улицы в стандартный поток

int GetNumberHome();

метод

Получить число домов на улице

int GetNumberMens();

метод

Получить число жителей на улице

int GetNumberApart();

метод

Получить число квартир на улице

char * GetNameStreet(){ return Name_Street;};

метод

Получить название улицы

char * GetKeyNameStreet(){ return name;};

метод

Получить номер дома символьный

int GetNumbStreet(){ return NumberStreet;};

метод

Получить номер дома числовой

int GetKeyNumbStreet(){ return no;};

метод

Получить номер дома числовой для поиска

void SetNameStreet(const char * NameStr);

метод

Установить название улицы

void SetKeyNameStreet(const char * sName);

метод

Установить имя улицы для поиска

void SetNumbStreet( int n );

метод

Установить номер улицы

void SetKeyNumbStreet( int k);

метод

Установить номер улицы для поиска

BOOL GetRemont();

метод

Получить признак ремонта домов на улице

BOOL GetRemontStr(){ return RemontStreet;};

метод

Получить признак ремонта улицы

void SetRemontStr(BOOL rS) ;

метод

Установить признак ремонта улицы (false, true)

StreetType GetStreetType();

метод

Получить тип улицы: one (односторонняя), two (два направления) , more (много полос)

void SetStreetType(StreetType t);

метод

Установить тип улицы: one, two , more

friend Street & operator +( Street & X , Street & Y );

Дружественная функция

Операция сложения двух улиц

Street operator =(Street & S);

Операция

Перегрузка операции присваивания двух улиц

char *Name_Street;

свойство

Название улицы

int NumberStreet;

свойство

Номер улицы

int Homes_num;

свойство

Число домов на улице

BOOL Remont;

свойство

Признак необходимости ремонта домов улицы

BOOL RemontStreet;

свойство

Признак ремонта самой улицы

StreetType StrType;

свойство

Тип улицы: one (односторонняя), two (два направления) , more (много полос)

Street * ListOfNear;

свойство

Список соседних улиц

( зарезервировано)

Класс Listкласс для создания объектов списков предназначенных для сохранения и выборки элементов списка.

Класс

Контейнерный класс для упорядоченного хранения домов, добавляемых на улицу

List ();

Конструктор

Пустого объекта

List (List & d);

Конструктор

Создание списка на основе другого

~List ();

Деструктор

void AddHead(listElement * ElemList , TypeAddDel t=createObj);

Метод

Добавить в голову списка элемент в режиме создания объекта: createObj (Новый объект для элемента создается) , nocreateObj (Новый объект для элемента не создается)

void RenumberList();

Метод

Новая нумерация списка

void AddTail(listElement * ElemList , TypeAddDel t=nodeleteObj);

Метод

Добавить в хвост списка элемент в режиме создания объекта: createObj (Новый объект для элемента создается) , nocreateObj (Новый объект для элемента не создается)

void AddNumber(listElement * ElemList , int Numb , TypeAddDel t=createObj);

Метод

Добавить в список по номеру элемент в режиме создания объекта: createObj (Новый объект для элемента создается) , nocreateObj (Новый объект для элемента не создается)

void AddAfterNumb(listElement * ElemList , int Numb , TypeAddDel t=createObj);

Метод

Добавить в список после номера элемент в режиме создания объекта: createObj (Новый объект для элемента создается) , nocreateObj (Новый объект для элемента не создается)

void UpdateNumb(listElement * ElemList , int Numb)

Метод

Изменить номер элемента

void AddBeforeNumb(listElement * ElemList , int Numb , TypeAddDel t=createObj);

Метод

Добавить в список перед номером элемент в режиме создания объекта: createObj (Новый объект для элемента создается) , nocreateObj (Новый объект для элемента не создается)

Obj * GetElemNumb(Obj ** pO , int Numb);

Метод

Получить элемент списка по номеру (Numb)

Obj * GetFirst(Obj ** pO );

Метод

Взять первый элемент списка

Obj * GetLast(Obj ** pO );

Метод

Взять последний элемент списка

void DelHead(Obj ** pO , TypeAddDel t=nodeleteObj);

Метод

Удалить из головы списка элемент в режиме удаления объекта: deleteObj (объект удаляемого элемента списка удаляется) , nodeleteObj (объект удаляемого элемента списка не удаляется)

void DelTail(Obj ** pO , TypeAddDel t=nodeleteObj);

Метод

Удалить из хвоста списка элемент в режиме удаления объекта: deleteObj (объект удаляемого элемента списка удаляется) , nodeleteObj (объект удаляемого элемента списка не удаляется)

void DelNumb(Obj ** pO ,int Numb , TypeAddDel t=nodeleteObj);

Метод

Удалить из списка элемент по номеру в режиме удаления объекта: deleteObj (объект удаляемого элемента списка удаляется) , nodeleteObj (объект удаляемого элемента списка не удаляется)

void ClearList( TypeAddDel t=nodeleteObj);

Метод

Очистка списка в режиме удаления объектов: deleteObj (объект удаляемого элемента списка удаляется) , nodeleteObj (объект удаляемого элемента списка не удаляется)

listElement * GetPrevElem(listElement * pCurr);

Метод

Получить предыдущий элемент списка на основе текущего (pCurr)

listElement * GetCurrElemForNumber( int Numb);

Метод

Получить элемент списка по номеру (Numb)

int GetNubmerElem();

Метод

Получить число элементов списка

BOOL TestInList(Obj * ob);

Метод

Проверка наличия в списке объекта (ob)

void printOn(ostream & out);

Метод

Распечатать список

List operator=(List & d);

Операция

Перегрузка оператора присваивания двух списков

int CurrentNumb;

Свойство

Текущий номер элемента списка

char * CurrentAssName;

Свойство

Текущий имя для поиска элемента списка

listElement *Head;

Свойство

Указатель на голову списка

listElement *Tail;

Свойство

Указатель на хвост списка

int NumberElem;

Свойство

Число элементов в списке

Класс listElementкласс для создания элементов списка, используемых в классе List и предназначенных для сохранения ссылок на дома

Класс

Элемент списка. Вспомогательный класс для организации списков. В данной версии зависит от типа объекта включаемого в список (Home)

listElement()

конструктор

listElement(Home *d)

конструктор

Конструктор копирования нового элемента на основе указателя на другой элемент

~listElement()

деструктор

void printOn(ostream & out)

метод

Вывод содержимого элемента в стандартный поток

listElement *next;

свойство

Следующий элемент списка, если NULL, то нет следующего

listElement *prev;

свойство

Предыдущий элемент списка, если NULL, то нет следующего

Home *Elem;

свойство

Указатель на тип объекта

int nElem;

свойство

Номер элемента в списке

char * AssNum;

свойство

Имя для поиска элемента в списке

Отдельного пояснения методов классов в данном техническом описании не приводиться. В колонке таблицы “Примечания” указана расшифровка необходимых параметров и их значения.

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5137
Авторов
на СтудИзбе
440
Средний доход
с одного платного файла
Обучение Подробнее