- •1 Теоретические основы ооп
- •2 Техническое задание
- •2.1 Анализ предметной области
- •2.2.1 Функциональные требования
- •2.2.2 Требования к интерфейсу
- •3 Рабочий проект
- •3.1 Общие сведения (среда функционирования (ос), способ загрузки, способ инсталляции, требования к по, требования к то)
- •3.2 Укрупненный алгоритм
- •3.2.1 Классы
- •3.2.3 Схема алгоритма
- •3.2.4 Обработка исключений
- •3.2 Руководство пользователя
- •5 Список использованной литературы
- •6 Приложение а
2 Техническое задание
2.1 Анализ предметной области
Предлагается разработать калькулятор для матричных вычислений, следовательно, предметной областью будет являться теория матриц. Теория матриц нашла огромное применение в решении систем линейных уравнений и не только, поэтому целесообразно было бы создать такой калькулятор.
2.2 Проектирование программного продукта
Любая матрица представляется в виде двухмерного массива целых десятичных чисел типа int. Кроме того, каждой таблице соответствует еще 2 положительных целых числа типа unsigned char хранящие размеры матрицы.
2.2.1 Функциональные требования
В программе должны быть реализованы:
- представление матрицы в формате, описанном выше. Для этого должен использоваться отдельный класс – класс матриц;
- операции изменения размеров матриц;
- операции преобразования матриц (транспонирование);
- операции инициализации матриц (инициализация единичной, нулевой, случайной матриц);
- операции сложения, и умножения матриц;
- операции умножения матрицы на скаляр и возведение в скалярную степень;
- удобная память калькулятора (буфер).
2.2.2 Требования к интерфейсу
Интерфейс должен обеспечивать пользователю возможность:
удобного ввода данных с клавиатуры;
изменять размер вычисляемых матриц и контролировать текущие размеры рабочих матриц и результирующей;
производить все операции, перечисленные в «Функциональных требованиях» интуитивно понятным и удобным способом;
визуально контролировать содержимое буферной памяти калькулятора;
не допускать обработки исходных данных, противоречащих логике работы программы путем вывода сообщений об ошибке.
Внешний вид программы:
Рисунок 1 - Интерфейс программы
3 Рабочий проект
3.1 Общие сведения (среда функционирования (ос), способ загрузки, способ инсталляции, требования к по, требования к то)
Среда функционирования:
Borland C++ Builder – это среда быстрой разработки, в которой в качестве языка программирования используется язык C++ Builder (C++ Builder Language). Можно сказать, что язык C++ Builder – это расширенный С++. Например, в С++ Builder есть строковый (AnsiString) и логический (Bool) типы, которых нет в классическом С++. К тому же несомненным преимуществом языка C++ Builder является встроенная RAD (rapid application development) которая обеспечивает быструю разработку приложений.
Запуск программы:
Стандартный, т.е. двойной клик на иконке программы.
Способ инсталляции:
Копирование исполняемого файла программы на нужный носитель.
Требования к ПО и к ТО:
операционная система Windows 9x/ME/2000/XP/2003
16 Мб оперативной памяти
1 Мб свободного пространства на жестком диске
Pentium 133 MHz
3.2 Укрупненный алгоритм
3.2.1 Классы
В данном проекте реализованы 4 класса:
class TMatrix {...}
класс матриц;
class TForm1 : public TForm {...}
главная форма
class TAboutBox1 : public TForm {...}
форма окна About;
class TErrorBox1 : public TForm {...}
форма окна ошибок;
Класс Tmatrix
Переменные:
- квадратный массив целых чисел **_mat;
- беззнаковые целые _NNUM1 и _NNUM2 определяющие размеры массива mat.
Методы
Изменение размера:
1) void DeleteOldMatrix() - удаляет старую матрицу;
2) void InitNewMatrix1() - выделяет память под новую матрицу размером 3x3;
3) void InitNewMatrix1(int M, int N) - выделяет память под новую матрицу размером MxN.
Инициализация:
1) void InitRandom() - заполняет матрицу случайными числами;
2) void InitZero() - заполняет матрицу нулями;
3) void InitE() - если матрица квадратная, то инициализирует единичную матрицу.
Действия с одним элементом:
1) void InitElem(int i, int j, int NewInt) - присваивает элементу с индексом [i][j] значение NewInt;
2) int GetElem(int, int) - возвращает значение элемента с индексом [i][j].
Операции с двумя матрицами:
1) void MSumm(TMatrix &A, TMatrix &B) - возвращает значение суммы матриц A и B;
2) void MDiff(TMatrix &A, TMatrix &B) - возвращает значение разности матриц A и B;
3) void MMult(TMatrix &A, TMatrix &B) - возвращает значение произведения матриц A и B.
Операции с одной матрицей:
1) void MScalMult(int ScalInt) - возвращает значение умножения матрицы на скаляр ScalInt;
2) void MNegative() - возвращает значение умножения матрицы на -1;
3) void MTrans() - возвращает значение транспонированной матрицы.
Класс TForm1
Переменные:
Элементы интерфейса программы в форме указателей на объект;
Четыре переменные матрицы типа TMatrix:
- _Mat1, _Mat2 – Матрицы привязанные к таблицам строк StringGrid 1 и 2 соответственно;
- _Res - Матрица привязанная к таблице StringGrid3 (хранит результат выполнения операций);
- _Mem – Матрица являющаяся памятью калькулятора.
Четыре переменные целого типа, хранящие размеры таблиц строк StringGrid1 и 2:
_SG1_R, _SG1_C, _SG2_R, _SG2_C;
- указатель типа TStringGrid *_SGFocus, определяющий какая таблица строк StringGrid активна в данный момент;
- указатель типа TMatrix *_MatFocus, определяющий какая матрица соответствует активной таблице строк StringGrid;
- переменная целого типа _Edit1Num хранящая значение поля Edit1(поля для значения какого-то целого скаляра);
- переменная целого типа _SGFocusInt определяющая номер активной таблицы StringGrid;
- переменная целого типа _Memory определяющая, используется ли память калькулятора.
Методы:
Конструктор:
__fastcall TForm1(TComponent* Owner);
Функции нажатия на кнопки формы:
Функции чтения формы:
1) ReadMemory() - заносит значения из активной StringGrid в матрицу памяти;
2) ReadForm() - заполняет матрицы _Mat1 и _Mat2 значениями из соответствующих StringGrid;
3) ReadMatrix() - заполняет соответствующую матрицу значениями из активной StringGrid.
Функции вывода значений в интерфейс:
1) Print(int Index) - заполняет соответствующую параметру Index StringGrid из соответствующей матрицы;
2) WriteMemory() -выводит значение памяти калькулятора в активную StringGrid;
3) WriteForm() - заполняет StringGrid3 значениями из матрицы _Res (выводит результат);
4) WriteMatrix() - заполняет активную StringGrid значениями из активной матрицы;
5) SGRight(int SGNUM) - проверяет допустимость значений каждой строки соответствующей параметру SGNUM StringGrid;
6) ExceptCatch(int ErrCode) - хранит инструкции по обработке каждого исключения.
Класс TAboutBox1
Переменные:
Элементы интерфейса формы в форме указателей на объекты;
Методы
Конструктор:
__fastcall TForm1(TComponent* Owner);
Класс TErrorBox1
Переменные:
Переменные типа *TLabel, используемые для вывода в форму сообщений об ошибке;
Остальные элементы интерфейса формы в форме указателей на объекты:
Методы
Конструктор:
__fastcall TForm1(TComponent* Owner).
3.2.2 Модули
Исходный текст программы размещается в четырех модулях (восьми файлах) и двух дополнительных файлах:
Unit1.h - используется для хранения класса TForm1;
Unit2.h - используется для хранения класса TMatrix;
Unit3.h - используется для хранения класса TAboutBox;
Unit4.h - используется для хранения класса TErrorBox;
Unit1.cpp - используется для хранения методов класса TForm1 с формой доступа published;
File1.cpp - используется для хранения методов класса TForm1 с формой доступа public(описанные программистом);
Unit2.cpp - используется для хранения методов класса TMatrix;
Unit3.cpp - используется для хранения методов класса TAboutBox;
Unit4.cpp - используется для хранения методов класса TErrorBox;
File2.h - используется для хранения глобальных констант.
