Главная » Просмотр файлов » Техническое описание

Техническое описание (1077194)

Файл №1077194 Техническое описание (Готовое ДЗ неизвестного варианта (4))Техническое описание (1077194)2018-01-10СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла

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

_______________________________________________________________________

Утверждаю:

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

"__"_____________2004 г.

Курсовая работа по дисциплине ПППО

Система классов «Таблица»

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

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

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

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

12

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

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

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

Маркус М.Р.

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

"__"_____________2004 г.









Москва - 2004

1. ОБЩИЕ СВЕДЕНИЯ О ПРОГРАММНОМ ОБЕСПЕЧЕНИИ.

Система классов написана на языке С++ в версии компании Borland Int. Файлы программного продукта:

Файл

Описание

Размер

Cell.h

Файл заголовка

1.56 Kb

Row.h

Файл заголовка

1.25 Kb

Absttbl.h

Файл заголовка

1.28 Kb

Cell.cpp

Файл исходного кода

4.31 Kb

Row.cpp

Файл исходного кода

5.76 Kb

Absttbl.cpp

Файл исходного кода

9.04 Kb

Table.cpp

Файл исходного кода

4.00 Kb

Test.exe

Исполняемый файл

56.9 Kb

2. СТРУКТУРА КЛАССОВ СИСТЕМЫ.

2.1. ОПИСАНИЕ КЛАССОВ

Система классов «Таблица» состоит из 4 классов – Cell (класс ячейка), Row (класс строка), AbstractTable (абстрактный класс таблица) и Table (наследованный класс от класса AbstractTable).

Класс Cell предназначен для хранения непосредственно текстовых данных. Он содержит указатель на текстовые данные. Для конечного пользователя в public доступе содержатся функции, в основном, контрольного типа – печать ячейки, просмотр её свойств, а также функция замены текста в ячейке. Сделано это для того, чтобы не дать пользователю возможность случайно изменить «внутрисистемные» переменные класса. Кроме того, объект ячейки в отдельности не имеет ценности для конечного пользователя.

Класс Row – это класс-контейнер ячеек. Он предназначен для хранения строки таблицы. Физически, контейнер представляет собой массив объектов Cell. Также как и класс Cell, класс Row в public доступе имеет функции, позволяющие только просматривать свойства объекта, осуществлять доступ к хранимым ячейкам, а также осуществлять вывод строки. Единственная функция, позволяющая изменять свойство класса – функция установки режима отображения строки.

Класс AbstractTable, как видно из названия, является абстрактным классом таблицы. Он содержит все функции для управления таблицей и доступа к её содержимому. Этот класс предназначен для использования непосредственно конечным пользователем. Чистая виртуальная функция этого класса – это функция печати таблицы. Также он является контейнером для объектов класса Row.

Класс Table – это наследованный класс от AbstractTable с перегруженной функцией печати таблицы. Все остальные функции наследуются без изменений.

2.2. ДИАГРАММА КЛАССОВ СИСТЕМЫ

2.3. МОДУЛЬНАЯ СТРУКТУРА КЛАССОВ

2.4. ОПИСАНИЕ ДАННЫХ КЛАССОВ

Название

Тип

Описание

Cell::Text

Char *

Текст в ячейке

Cell::ChangeFlag

Int

Флаг разрешения изменений без обновления юниона

Cell::CellX

Int

Позиция ячейки в таблице по вертикали

Cell::CellY

Int

Позиция ячейки в таблице по горизонтали

Cell::UnionVSize

Int

Вертикальный размер юниона

Cell::UnionHSize

Int

Горизонтальный размер юниона

Cell::IsVisible

Int

Видимость ячейки

Cell::IsUnion

Int

Содержится ли ячейка в юнионе

Cell::UnionCells

Cell **

Массив указателей на ячейки юниона

Cell::UnionId

int

Порядковый номер ячейки в юнионе

Row::CellArray

Cell *

Массив ячеек строки

Row::RowLength

Int

Количество ячеек в строке

Row::RowX

Int

Позиция строки в таблице

Row::IsVisible

Int

Видимость строки

Row::Height

Int

Высота строки

AbstractTable::Rows

Row *

Массив строк таблицы

AbstractTable::RowsNum

Int

Количество строк в таблице

AbstractTable::ColsNum

Int

Количество столбцов в таблице

AbstractTable::TableName

Char[31]

Название таблицы

AbstractTable::LineThickness

Int

Толщина линий

Table::Rows

Row *

Массив строк таблицы

Table::RowsNum

Int

Количество строк в таблице

Table::ColsNum

Int

Количество столбцов в таблице

Table::TableName

Char[31]

Название таблицы

Table::LineThickness

Int

Толщина линий

2.5. ОПИСАНИЕ ФУНКЦИЙ КЛАССОВ

Функции класса Cell

Описание

Вид

Пример

Конструктор

Cell ( char * text, int x, int y)

Cell A(“Test”,1,2);

Конструктор

Cell ();

Cell A();

Получение текста ячейки

char * getText ( void)

Str = A.getText();

Получение длины текста

int getTextLength (void)

Len = A.getTextLength();

Установка текста ячейки

Int setText (char *)

a.setText(“”);

Получение координаты х ячейки

Int getCellX (void)

x = getCellX();

Получение координаты у ячейки

Int getCellY (void)

Y = getCelly();

Печать ячейки

Void printCell( ostream _FAR &);

A.printCell(cout);

Получение верт. Размера юниона

int getUVS( void);

V = A.getUVS();

Получение гор. Размера юниона

int getUHS( void);

H = A.getUHS();

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

int getVis( void);

Vis = A.getVIs();

Проверка состояния ячейки в юнионе

int getUn ( void);

Un = A.getCellUn();

Установка корд. Х

void setCellX ( int);

a.setCellX(1);

Установка корд. У

void setCellY ( int);

a.setCellY(2);

Оператор присваивания

Cell & operator = ( Cell &);

A = B;

Оператор сложения

Cell & operator + ( Cell &);

C = (A + B);

Установка верт. Размера юниона

void setUVS ( int);

A.setUVS(2);

Установка гор. Размера юниона

void setUHS ( int);

A.setUHS(4);

Установка видимости

void setVis ( int);

A.setVis(1);

Установка состояния в юнионе

void setUn ( int);

A.setUn(0);

Обновление юниона

void updateUnion ( int);

A.updateUnion();

Установка флага разрешения изменений

void setChangeFlag ( int);

a.setChangeFlag(1);

Получение флага разрешения изменений

int getChangeFlag ( void);

Flag = A.getChangeFlag();

Функции класса Row

Описание

Вид

Пример

Конструктор

Row()

Row R();

Конструктор

Row(int cell_num, int row_x)

Row R(4,2)

Печать строки

void printRow ( ostream _FAR &);

R.printRow(cout);

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

void printLineRow( ostream FAR&);

r.printRow(cout)

Получить длину

int getRowLength( void);

Len = r.getRowLength();

Получить позицию

int getRowX ( void);

X = R.getRowX();

Оператор доступа к ячейкам строки

Cell & operator [] ( int);

Row[0].printCell(cout);

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

int getVis ( void);

Vis = R.getVis();

Установка видимости

void setVis ( int);

R.setVis(1);

Добавить ячейку

int addCell ( char *);

R.addCell(“Test”);

Добавить ячейку

int addCell ( Cell &, int);

R.addCell(&A,2);

Добавить ячейку

int addCell ( int);

R.addCell(2);

Добавить ячейку

int addCell ( char *, int);

R.addCell(“Test”,3);

Удалить ячейку

int deleteCell ( int);

R.deleteCell(4);

Обновить ячейку

int updateCell ( int, char *, int, int);

R.updateCell(1,“Test”,1,1);

Оператор присваивания

Row & operator = ( Row &);

R = B;

Оператор добавления ячейки

Row & operator + ( Cell &);

R + A;

Оператор уменьшения на 1 позицию

Row & operator -- ( int);

R--;

Оператор увеличения на 1 позицию

Row & operator ++ ( int);

R++;

Функции класса AbstractTable

Описание

Вид

Пример

Конструктор

AbstractTable(char * name);

AbstractTable T(“Table”);

Конструктор

AbstractTable (int row, int cols, char * name)

AbstractTable T(,5,5,“Table”);

Добавить строку

int addRow( int, int);

T.addRow(0,5);

Добавить колонку

int addCol( int, int);

T.addCol(0,5);

Добавить ячейку

int addCell( int, int, char *);

T.addCell(1,1,”Test”);

Установить видимость ячейки

void setCellVis (int, int, int);

T.setCellVis(1,1,0);

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

int getCellVis ( int, int);

Vis = T.getCellVis(1,1);

Поменять местами содержимое двух ячеек

Void swapCells ( int, int, int, int);

T.swapCells(1,1,2,2);

Удалить строку

int deleteRow ( int);

t.deleteRow(2);

Удалить колонку

int deleteCol ( int);

T.deleteCol(2);

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

virtual void printTable ( ostream _FAR &) = 0;

Объединить в юнион ячейки начиная с с х,у размером м на н.

int uniteCells ( int, int, int, int);

T.uniteCells(1,1,4,4);

Объединить ячейки начиная с первого указателя до второго

int uniteCells ( Cell *, Cell *);

T.uniteCells(&A,&B);

Удалить из юниона все ячейки

void deuniteCell ( int, int);

A.deuniteCell(1,1);

Получить число строк

int getRowsNum ( void);

Rows = T.getRowsNum();

Получить число столбцов

int getColsNum ( void);

Cols = T.getColsNum();

Оператор вычитания из таблицы ячейки. Результат – обнуление всех ячеек с таким же содержимым

AbstractTable & operator - ( Cell &);

T – A;

Оператор доступа к строкам

Row & operator [] ( int);

T[3].printLineRow(cout);

Функции класса Table

Описание

Вид

Пример

Конструктор

Table(char * name);

Table T(“Table”);

Конструктор

Table (int row, int cols, char * name)

Table T(,5,5,“Table”);

Добавить строку

int addRow( int, int);

T.addRow(0,5);

Добавить колонку

int addCol( int, int);

T.addCol(0,5);

Добавить ячейку

int addCell( int, int, char *);

T.addCell(1,1,”Test”);

Установить видимость ячейки

void setCellVis (int, int, int);

T.setCellVis(1,1,0);

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

int getCellVis ( int, int);

Vis = T.getCellVis(1,1);

Поменять местами содержимое двух ячеек

Void swapCells ( int, int, int, int);

T.swapCells(1,1,2,2);

Удалить строку

int deleteRow ( int);

t.deleteRow(2);

Удалить колонку

int deleteCol ( int);

T.deleteCol(2);

Печати таблицы

void printTable ( ostream _FAR &);

T.printTable(cout);

Объединить в юнион ячейки начиная с с х,у размером м на н.

int uniteCells ( int, int, int, int);

T.uniteCells(1,1,4,4);

Объединить ячейки начиная с первого указателя до второго

int uniteCells ( Cell *, Cell *);

T.uniteCells(&A,&B);

Удалить из юниона все ячейки

void deuniteCell ( int, int);

A.deuniteCell(1,1);

Получить число строк

int getRowsNum ( void);

Rows = T.getRowsNum();

Получить число столбцов

int getColsNum ( void);

Cols = T.getColsNum();

Оператор вычитания из таблицы ячейки. Результат – обнуление всех ячеек с таким же содержимым

AbstractTable & operator - ( Cell &);

T – A;

Оператор доступа к строкам

Row & operator [] ( int);

T[3].printLineRow(cout);

3. ДИАГРАММА ОБЪЕКТОВ ТЕСТОВОГО ПРИМЕРА

4. ОПИСАНИЕ ТЕСТОВОГО ПРИМЕРА

См. документ «Описание тестового примера».

5. ОПИСАНИЕ ОТЛАДКИ КЛАССА

  • Использование указателей там, где удобнее было бы использовать ссылки

  • Освобождение указателя, возвращаемого функцией.

  • Освобождение не используемого указателя.

  • Отсутствие перегруженных операций присваивания.

  • При присваивании строки автоматически присваивались все ячейки со своими юнионами. Как следствие – непредсказуемые последствия с выделением памяти. Как выход – запоминание юнионов при удалении строк и столбцов и отмечание уже вновь созданных ячеек.

  • Просто забыл как-нибудь отметить неотображаемую строку и долго искал пропажу.

Характеристики

Тип файла
Документ
Размер
202 Kb
Тип материала
Высшее учебное заведение

Тип файла документ

Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.

Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.

Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.

Список файлов курсовой работы

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