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

СОДЕРЖАНИЕ

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

Название Размер и тип Описание Примечание
DZ_2kurs.h 32,4 Кб, текстовый файл Описания классов, методов и общих данных Содержит все необходимые описания для использования программного продукта
DZ_2kurs.cpp 12,9 Кб, текстовый файл Тестовая программа Программа предназначена для проверки работоспособности системы классов и проведения приемно-сдаточных испытаний
DZ_2kurs.exe 114,7 Кб, исполнимый файл Тестовая программа Содержит все необходимое для автономного выполнения в режиме командной строки.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Прототип функции или описание свойства Тип члена Назначение
       
  Общие описания    
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 свойство Номер дома (имя)
intiHome свойство Номер дома числовой
intEtagCount свойство Число этажей
intMenCount свойство Число жителей
HomeType TypeHome свойство Тип дома (перечисление: простой, многокорпусный, сложный)
intNumbApartament свойство Число квартир
BOOLHomeRemont ;   свойство Признак необходимости ремонта дома
friendStreet Дружественный класс  
       
  Класс 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; свойство Имя для поиска элемента в списке
       

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

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

Наши рекомендации