Файл: Исследование вычислительной эффективности объектноориентированных приложений.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 05.05.2024

Просмотров: 64

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

ПОСТАНОВКА ЗАДАЧИ

2. РАЗРАБОТКА ТЕХНИЧЕСКОГО ЗАДАНИЯ

2.1. Анализ вариантов использования программы

2.2. Требования к приложениям

3.АНАЛИЗ АЛГОРИТМА РЕШЕНИЯ

3.1. Метод Монте-Карло

3.2. Определение попадания точки внутрь фигуры

4. ПРОЦЕДУРНОЕ ПРИЛОЖЕНИЕ НА БАЗЕ WPF/C#

4.1. Программные средства разработки

4.3. Системные требования

4.4. Структура приложения

4.5. Результаты работы

5. ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРИЛОЖЕНИЕ НА БАЗЕ WPF/C#

5.1. Программные средства разработки

5.2. Логическое проектирование

5.4. Руководство системного программиста

5.5. Руководство программиста

5.6. Руководство оператора

5.7. Результаты работы

6. АНАЛИЗ ВЫЧИСЛИТЕЛЬНОЙ ЭФФЕКТИВНОСТИ ПРИЛОЖЕНИЙ

7. УЛУЧШЕНИЕ ХАРАКТЕРИСТИК КАЧЕСТВА ПРИЛОЖЕНИЙ

7.1. Использование встроенной оптимизации кода

7.2. Профилирование

ЗАКЛЮЧЕНИЕ

СПИСОК ЛИТЕРАТУРЫ

ПРИЛОЖЕНИЕ

Файл MainWindow.xaml.cs (процедурное приложение)

Файл MainWindow.xaml

Файл MainWindow.xaml.cs (объектно-ориентированное приложение)

Файл MainWindow.xaml

Файл Figure.cs

Файл Rectangle.cs

Файл Triangle.cs

Файл MonteCarlo.cs

и ;

3) если , то точка принадлежит фигуре.

4. ПРОЦЕДУРНОЕ ПРИЛОЖЕНИЕ НА БАЗЕ WPF/C#

4.1. Программные средства разработки


При создании процедурного приложения была использована среда разработки MS Visual Studio 2019. Данная среда разработки имеет удобный интерфейс и поддерживает все элементы, используемые в программе.

Для полноценной работы процедурного приложения на базе Windows Presentation Foundation необходимо подключить несколько пространств имён, а именно:

System.Collections.Generic – содержит интерфейсы и классы, определяющие универсальные коллекции, которые позволяют пользователям создавать строго типизированные коллекции, например List, Queue, обеспечивающие повышенную производительность и безопасность типов по сравнению с не универсальными строго типизированными коллекциями.

System.Data - обеспечивает доступ к классам, представляющим архитектуру ADO.NET, позволяющую создавать компоненты, эффективно управляющие данными из нескольких источников данных. Используется для работы объекта DataTable, в котором будут представлены результаты работы программы;

System.Diagnostics – предоставляет классы, позволяющие взаимодействовать с системными процессами, журналами событий и счетчиками производительности, в данной программе отвечает за работу таймера выполнения расчётов;

System.Windows – предоставляет несколько важных Windows Presentation Foundation (WPF) классов базовых элементов, различные классы, поддерживающие WPF системы свойств и событий логики и другие типы, более широко применяемые в WPF ядре и инфраструктуре. Позволяет использовать объекты Point в программе.


4.2. Логическое проектирование


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

На первом этапе создаётся массив точек, который содержит координаты «x» и «y» всех точек базовой фигуры: a, b, c, d, n, e, o, k. Это рассчитывается в методе private void Coordinates ().

Следующий этап – расчёт по математическим формулам реальной площади фигуры в методе private double RealSquare(). Это делается для последующего сравнения результатов вычисления через формулы и методом Монте-Карло.

Затем при помощи коллекции создаётся для каждого количества точек набор рандомно заданных координат.

И с помощью метода Монте-Карло проверяется вхождение точки в фигуру. Затем рассчитывается площадь фигуры.

На рис. 4 представлена диаграмма класса



Рис. 4. Диаграмма класса

Блок-схема алгоритма работы представлена на рис. 5.


Рис. 5. Схемы функций Btn_Start_Click и MonteKarlo

4.3. Системные требования


Для корректной работы приложения требуется:

  • операционная система Windows 10 и выше;

  • платформа .NET Framework 4.8 и выше;

  • архитектура 32-разрядная (х86)/64-разрядная (х64);

  • оперативная память 512 МБ и более;

  • устройства ввода: клавиатура, мышь.

4.4. Структура приложения


Структура программы представлена на рис. 6.



Рис. 6. Проект процедурного приложения

Настольное процедурное приложение на базе WPF/C# включает следующие файлы:

MainWindow.xaml – разметка формы;

MainWindow.xaml.cs – описания методов и события формы;

ClassDiagram1.cd – диаграмма класса MainWindow;

App.config – конфигурация программы;

App.xaml – объявление ресурсов, используемых по всему приложению.

4.5. Результаты работы


На рис. 7 представлены результаты работы настольного процедурного приложения на базе WPF/C#.



Рис. 7. Результаты работы настольного процедурного приложения на базе WPF/C#

5. ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРИЛОЖЕНИЕ НА БАЗЕ WPF/C#

5.1. Программные средства разработки


При создании процедурного приложения была использована среда разработки MS Visual Studio 2019. Данная среда разработки имеет удобный интерфейс и поддерживает все элементы, используемые в программе.

Для полноценной работы приложения потребовалось подключить несколько пространств имён, а также разработать собственные классы.

5.2. Логическое проектирование


Предметная область задания содержит следующие сущности:

Для эффективного проектирования для начала выделяются сущности предметной области. В данной задаче сущности:

  • точка;

  • треугольник;

  • прямоугольник;

Эти сущности можно реализовать посредством создания классов, а также при помощи использования уже встроенных в язык пространств имён. Так, для реализации точки можно использовать структуру пространства имён System.Windows, а именно Point.

Для треугольника и прямоугольника будут созданы классы MyTriangle и MyRectale.


Диаграмма классов настольного приложения WPF/С# представлена на рис.8.



Рис. 8. Диаграмма классов объектно-ориентированного приложения

Диаграмма структуры Point, описывающей точку, представлена на рис. 9.



Рис. 9. Диаграмма структуры Point

Структура Point содержит следующие свойства:

public double X { get; set; } – координата x точки;

public double Y { get; set; } – координата y точки.

Структура Point содержит следующий конструктор:

public Point (double x, double y) – конструктор инициализации.

Абстрактный класс Figure, который используется для того, чтобы выделить общие свойства для производных классов Triangle и Rectangle содержит следующие методы:

abstract public bool IsInFigure(Point point) – проверка принадлежности точки данной фигуре;

abstract public double Square() – вычисление площади данной фигуры.

Диаграмма абстрактного класса показана на рис. 10.



Рис. 10. Диаграмма абстрактного класса Figure

Класс Triangle, как и все создаваемые вручную классы, содержит три базовых конструктора:

public Triangle() – конструктор по умолчанию;

public Triangle (Point с, Point k, Point d) – конструктор инициализации;

public Triangle (Triangle triangle) – конструктор копии.

Так же у класса есть скрытые поля:

private Point a, n, b – точки a, n и b.

От абстрактного класса Figure тут присутствует реализация методов абстрактного класса:

override public bool IsInFigure(Point point) – проверка принадлежности точки данному треугольнику;

override public double Square() – вычисление площади данного треугольника.

На рис. 11 представлена диаграмма класса Triangle.



Рис. 11. Диаграмма класса Triangle

На рис. 12 представлена диаграмма класса Rectangle, описывающего прямоугольник и являющегося производным от Figure.



Рис. 12. Диаграмма класса Rectangle

Класс Rectangle содержит следующие поля:

private Point a, c – диагональные точки, определяющие прямоугольник.

Класс Rectangle содержит следующие конструкторы:

public Rectangle () – конструктор по умолчанию;


public Rectangle (Point a, Point c) – конструктор инициализации;

public Rectangle (Rectangle rect) – конструктор копии.

Класс Rectangle содержит следующие методы:

override public bool IsInFigure(Point point) – проверка принадлежности точки данному прямоугольнику;

override public double Square() – вычисление площади данного прямоугольника.

На рис. 14 представлена диаграмма класса MonteCarlo, описывающего реализацию метода Монте-Карло.



Рис. 14. Диаграмма класса MonteCarlo

Класс MonteCarlo содержит следующие поля:

private Point d, a, n, e – точки d, a, n и e соответственно;

private Figure ode – треугольник ode;

private Figure abcd – прямоугольник abcd;

private Figure kco – треугольник kco;

private Figure anb – треугольник anb;

private double s_find – площадь, вычисляемая методом Монте-Карло;

private double s_rect – площадь прямоугольника abcd;

private List points – множество генерируемых точек;

private double time – время, затрачиваемое на вычисление площади по N точкам;

private double err – погрешность вычисления площади.

Класс MonteCarlo содержит следующее свойство:

public double S_real {get; } – точная площадь искомой фигуры.

Класс MonteCarlo содержит следующий конструктор:

public MonteCarlo (Point A, Point C, Point n) – конструктор инициализации.

Класс MonteCarlo содержит следующие методы:

public void Start(int N) – выполнение основного алгоритма Монте-Карло;

private void Distribution(int N) – генерация точек;

private void MonteCarloSquare(int N) – вычисление площади фигуры по методу Монте-Карло;

private double Error() – вычисление относительной погрешности площади, определенной методом Монте-Карло;

private bool IsInFigure(Point p) – проверка точки на принадлежность искомой фигуре anbkoe

public string[] Print() – возврат результаты вычислений.

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

private void Start_Btn_Click(object sender, RoutedEventArgs e) –нажатие кнопки «Вычислить»: начало выполнения программы;

private void WindowLoaded(object sender, RoutedEventArgs e) – загрузка окна Window;

private void Clear_Btn_Click(object sender, RoutedEventArgs e) –нажатие кнопки «Очистить»: очистка полей ввода и таблицы результатов;

private void Example_click(object sender, RoutedEventArgs e) – выбор варианта ввода данных «Контрольный пример»: автоматическое заполнение полей ввода данных значениями из примера;

На рис. 15 представлены схемы методов Start_Btn_Click (а) класса MainWindow, Start (б) и MonteCarloSquare (в) класса MonteCarlo.



Рис. 15. Схемы методов Start_Btn_Click (а), Start (б) и MonteCarloSquare (в)

5.3. Описание программы

5.3.1. Общие сведения о приложении

Приложение, разработанное на языке программирования C# с использованием интерфейса Windows Presentation Foundation, создано для решения задачи по нахождению площади фигуры с заданными координатами методом Монте-Карло.

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

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

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

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

5.3.2. Структура программы

Настольное объектно-ориентированное приложение на базе WPF/C# включает следующие файлы, которые представлены на рис. 16:

App.config – конфигурация программы;

App.xaml – объявление ресурсов, используемых по всему приложению;

ClassDiagram1.cd – диаграмма классов данного приложения;

Image1.png – изображение исходной фигуры;

MainWindow.xaml – разметка формы;

MainWindow.xaml.cs – описание методов и событий формы;

MonteCarlo.cs – класс MonteCarlo, реализующий вычисление площади фигуры по методу Монте-Карло;

Figure.cs – класс Figure, описывающий абстрактную фигуру;

Rectangle.cs – класса Rectangle, описывающий прямоугольник;

Triangle.cs – класса Triangle, описывающий треугольник.



Рис. 16. Проект объектно-ориентированного приложения

5.3.3. Системные требования

Технические средства должны отвечать следующим системным требованиям приложения: 

  • операционная система Windows 10 и выше;

  • платформа .NET Framework 4.8 и выше;

  • архитектура 32-разрядная (х86)/64-разрядная (х64);

  • оперативная память 512 МБ и более;

  • устройства ввода: клавиатура, мышь.

5.3.4. Входные и выходные данные

На вход в программу поступают координаты трёх основных точек, по которым можно рассчитать координаты всех других точек фигуры. Данные заполняет пользователь вручную или из тестового примера.

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

5.4. Руководство системного программиста


5.4.1. Общие сведения о приложении

Приложение, разработанное на языке программирования C# с использованием интерфейса Windows Presentation Foundation, создано для решения задачи по нахождению площади фигуры с заданными координатами методом Монте-Карло.

5.4.2. Системные требования

Для корректной работы приложения требуется:

  • операционная система Windows 10 и выше;

  • платформа .NET Framework 4.8 и выше;

  • архитектура 32-разрядная (х86)/64-разрядная (х64);

  • оперативная память 512 МБ и более;

  • устройства ввода: клавиатура, мышь.

5.4.3. Настройка приложения

Дополнительная настройка не требуется.

5.5. Руководство программиста


5.5.1. Назначение и условия применения приложения

Приложение, разработанное на языке программирования C# с использованием интерфейса Windows Presentation Foundation, создано для решения задачи по нахождению площади фигуры с заданными координатами методом Монте-Карло.

Приложение создано при помощи среды разработки MS Visual Studio Community 2019 на платформе .NET Framework 4.8.

5.5.2. Входные и выходные данные

Входными данными являются три координаты прямоугольника abcd: a, c, n.

Выходными данными является таблица, содержащая:

  • общее количество точек;

  • площадь фигуры, вычисленная методом Монте-Карло;

  • точная площадь фигуры, вычисленная по геометрическим формулам;

  • относительная погрешность вычисления площади;

  • время выполнения расчётов.


5.6. Руководство оператора


5.6.1. Назначение приложения

Программа создана с целью нахождения площади заданной фигуры с помощью метода Монте-Карло. Программа вычисляет саму площадь, погрешность измерений и показывает время выполнения расчётов.

5.6.2. Условия выполнения приложения

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