Программная реализация элементов matrixCalc. — КиберПедия 

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...

Программная реализация элементов matrixCalc.

2021-04-19 97
Программная реализация элементов matrixCalc. 0.00 из 5.00 0 оценок
Заказать работу

В результате анализа предметной области была получена структурная схема системы. На данном этапе разработки пользовательской компоненты необходимо создать программную реализацию этой системы.

Общая особенность всех элементов, это то, что каждый должен иметь свой фиксированный размер и иметь метод для графического отображения, поэтому это будет является основой для матрицы.

Для сетки и ячеек со значениями (т.е. матрицы) общим элементом являются количество строк и столбцов.

Ячейка представляет из себя прямоугольник, состоящий из 4 линий, а линия состоит из 2 точек, поэтому для отображения прямоугольника необходим метод для создания линии по 2 точкам, чтобы впоследствии с его использованием построить ячейку с выбранными размерами.

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

 


 

Расчет операций.

Расчет операций производиться с использованием статического класса, который содержит в себе необходимые функции, реализация которых была осуществлена на основе теоритического материала, представленного в разделе 2.1.1.

Ввод данных

Основой для ввода данных является форма Form1 имеющая потомков Form2 и Form3.необходима для ввода данных, если был выбран режим для двух матриц, а Form3 если для одной.

При отображении Form1 кнопка button скрыта, потому что переход на следующую форму осуществлен по нажатию на Enter, причем пользователь оповещается об этом появлением всплывающей подсказки toolTip, после того, как все элементы введены в таблицу dataGridView. Переход производится на Form2, где осуществляется ввод второй матрицы.

Особенностью Form3 является отображение только одного числового поля для ввода размерности матрицы (при режимах обратной матрицы и нахождения определителя), а также не реагирование на клавишу Enter, потому что в данном случае нет необходимости вводить вторую матрицу.

Класс Matrix

Базовым классом для всех элементов матриц является класс Matrix. Он имеет следующий метод:

abstract public void Draw(int x, int y, Point resolution) - рисование элемента

Поля:

public int rowCount - количество строк

public int columnCount - количество столбцов

public Point size - размер элемента

Класс Cell

Представляет собой ячейку с указанными размерами.

Дополнительный метод: DrawLine(Point A, Point B) - рисование линии

Класс matrixTable

Используется для создания таблицы. Таблица состоит из объектов класса Cell.

Дополнительный метод:

public void drawText(TextureFont texFont, Point resolution) - рисует нумерацию строк и столбцов

Класс matrix

Является матрицей.

Дополнительное поле:

public double[,] mtx - массив значений матрицы

Дополнительные методы:

public void setMatrix(DataGridView dataGridView1) - записывает значения из dataGridView в массив

public bool Contains(Point point, int x0, int y0) - проверяет попадает ли точка в область матрицы

Класс matrixText.

Является наследником класса matrix. Представляет из себя обозначение матрицы (A, B, A*B, A+B и т.д.)

Метод:

public void draw(int x, int y, TextureFont texFont, Point resolution) - рисует текст

Поле:

public string text - текст операции

Класс cellText

Является наследником класса Cell. Служит для отображения нумерации строк и столбцов.

Поле:

public string text - номер строки или столбца

public void drawVertical(int x, int y, TextureFont texFont, Point resolution) - рисует текста слева от ячейки по вертикали(для обозначения строк)

public void drawHorizontal(int x, int y, TextureFont texFont, Point resolution) -

рисует текст над ячейкой(для обозначения столбцов)

Класс matrixOperations Содержит статические методы для расчета операций:

public static multiplication(double[,] matrix1, double[,] matrix2)-умножение

public static addition(double[,] matrix1, double[,] matrix2)-сложение

public static subtraction(double[,] matrix1, double[,] matrix2)-вычитание

public static Transpose(double[,] mtx)-транспонирование

public static double Determinent(double[,] matrix)-определитель

public static double[,] Inverse(double[,] matrix)-обратная матрица

Основные функции Form1:

public void setMatrixToData(int k,DataGridView dataGridView) - для заполнения значениями из списка матриц таблицы dataGridView, используется при загрузке формы когда происходит редактирование матриц.

public void clearData(DataGridView dataGridView) - очищает dataGridView от введенных значений

public bool checkValues(DataGridView dataGridView) - проверяет все ли ячейки таблицы dataGridView были заполнены

События Form1, обрабатываемые при вводе данных и их основные функции:

private void myTextBox1_TextChanged(object sender, EventArgs e) - устанавливает количество строк в dataGridView

private void myTextBox2_TextChanged(object sender, EventArgs e) -

устанавливает количество столбцов в dataGridView

public void myDataGridView1_CurrentCellChanged(object sender, EventArgs e)-

заносит матрицу в список если было изменены значения dataGridView

public void myDataGridView1_CellMouseEnter(object sender, DataGridViewCellEventArgs e) - заносит введенную матрицу в список при нажатии на Enter

private void myDataGridView1_SizeChanged(object sender, EventArgs e) - изменяет размер формы в зависимости от размера dataGridView

События Form2:

private void button1_Click(object sender, EventArgs e)- для занесения матрицы 2 в список и расчета выбранной операции и последующего отображения на компоненте glControl

private void Form2_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) - обновляет данные текстбоксов при их изменении на Form1

События Form3:

private void button1_Click(object sender, EventArgs e)- для занесения матрицы в список и расчета выбранной операции и последующего отображения на компоненте glControl

Событие MouseDown.

Данное события обрабатывается для осуществления редактирования матриц при клике правой кнопкой мыши в область матрицы.

 


 

 

Сохранение и воспроизведение матриц

Сохранение и воспроизведение производится в двоичный файл(.mtx) и текстовый файл(.txt).

Структура двоичного файла:

.Выбранная операция

.Количество матриц

.Размерность введенных матриц

.Массив элементов матрицы

Структура текстового файла:

. Количество матриц

. Выбранная операция

.Размерность введенных матриц

.Массивы элементов матриц

 


 

Заключение

 

В процессе выполнения данной курсовой работы была разработана пользовательская компонента для вычисления операций с матрицами, предоставляющая следующие функции:

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

.   Сохранение в двоичный и текстовый файл.

.   Редактирование матриц.

.   Масштабирования матриц.

Исходя из анализа предметной области и определения требований к системе, была разработана архитектура системы, основывающаяся на компонентном подходе разработки приложений. Т. е. было произведено разбиение системы на компоненты и последующая организация их взаимодействия.

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

Для осуществления операций был разработан класс матрицы, на основе которого строились таблицы со значениями.

Реализация рисования текста была организована с помощью библиотеки TexLib, которая инкапсулирует в себе все нюансы инициализации, настройки и применения функций технологии OpenGL.

В результате разбиения системы на модули был разработан пользовательский элемент управления matrixCalc, а именно:

.   Разработан интерфейс компоненты для предоставления своего функционала пользователю.

.   Определен алгоритм на реакцию события MouseDown.

.   Разработаны структуры данных, а именно иерархия классов элементов матриц.

Из всего вышесказанного следует, что в процессе выполнения данной курсовой работы были выполнены все поставленные первоначально задачи.

 


 


Поделиться с друзьями:

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.022 с.