В соответствии с заданием необходимо создать настольное приложение на базе WPF/XBAP. Данное приложение реализовано в соответствии с концепцией объектно-ориентированного программирования. Все классы находятся в пространстве имен app1. Файловый состав приложения имеет следующий вид:
· Файл Page1.xaml.cs - в нем находится класс Page1, в котором описан интерфейс взаимодействия с пользователем (описаны обработчики события - нажатие кнопки, проверки вводимы данных и т.д);
· Файл Page1.xaml - в нем находится код разметки формы;
· Файл Point.cs - содержит класс Point;
· Файл IceCream.cs - содержит классы Triangle, Circle, Rectangle и IceCream.
Класс Page1
содержит методы, необходимые для взаимодействия с пользователем. Диаграмма
класса Page1 представлена на рис. 3.
Рис.3. Диаграмма класса Page1
Класс Page1 содержит следующий конструктор:
Page1() - вызывает инициализацию компонентов формы.
Класс Page1 содержит следующие методы:
Button1_Click(object sender, RoutedEventArgs e):void - обработчик события нажатия на кнопку Button1, вызывает метод check класса Page1, вызывает методы расчёта площади фигуры, осуществляет вывод результатов;
Button2_Click(object sender, RoutedEventArgs e):void - обработчик события нажатия на кнопку Button2, очищает поля для ввода координат;
Button3_Click(object sender, RoutedEventArgs e):void - обработчик события нажатия на кнопку Button3, инициализирует точки, необходимые для контрольного примера, заполняет поля для ввода координат;
Check():bool - проверка введенных координат;
LostFocusTB():void - изменение введенных координат.
Класс Point необходим для более удобной работы с
точками. Диаграмма класса Point
представлена на рис. 4.
Рис. 4. Диаграмма класса Point
Класс Point содержит следующий конструктор:
Point(int a, int b) - инициализация точки по двум ее координатам
Класс Point содержит следующие свойства:
PointX:float - ордината точки;
PointY:float - абсцисса точки.
Класс Circle предоставляет необходимые методы для
работы с полуокружностью, как частью геометрической фигуры. Диаграмма класса Circle представлена на рис. 5.
Рис. 5. Диаграмма класса Circle
Класс Circle содержит следующий конструктор:
Circle(Point p1, Point p2) - инициализация полуокружности по двум точкам
Класс Circle содержит следующие свойства:
CentrPoint:Point - центр полуокружности;
MinX:float - минимальный Х геометрической фигуры;
Класс Circle содержит следующие методы:
Square():float - возвращает площадь полуокружности;
PointInCircle(Point p):bool - проверяет попадание точки в полуокружность.
Класс Triangle предоставляет необходимые методы для
работы с треугольником, как частью геометрической фигуры. Диаграмма класса Triangle представлена на рис.6.
Рис. 6. Диаграмма класса Triangle
Класс Triangle содержит следующий конструктор:
Triangle(Point p1, Point p2, Point p3) - инициализация треугольника по трем точкам
Класс Triangle содержит следующие свойства:
MaxX:float - максимальный Х геометрической фигуры;
MaxY:float - максимальный Y геометрической фигуры;
MinY: float - минимальный Y геометрической фигуры;
Класс Triangle содержит следующие методы:
PointInLines(Point P): bool - проверяет попадание точки в треугольник;
Square(): float - возвращает площадь треугольника.
Класс Rectangle предоставляет необходимые методы для
работы с прямоугольником, описанного вокруг геометрической фигуры. Диаграмма
класса Rectangle представлена на рис. 7.
Рис. 7. Диаграмма класса Rectangle
Класс Rectangle содержит следующий конструктор:
Rectangle(float MiX, float MaX, float MiY, float MaY)- инициализирует прямоугольник по четырем точкам;
Класс Rectangle содержит следующие методы:
Square():float - возвращает площадь прямоугольника.
Класс IceCream предоставляет необходимые методы для
работы с геометрической фигурой. Данный класс использует четыре вышеописанных
класса. Диаграмма класса IceCream представлена
на рис. 8.
Рис. 8. Диаграмма класса IceCream
Класс IceCream содержит следующий конструктор:
IceCream(Point a, Point b, Point e)- инициализирует полуокружность ab, треугольник abd и прямоугольник abcd
Класс IceCream содержит следующие свойства:
maxX:float - максимальный Х геометрической фигуры;
maxY:float - максимальный Y геометрической фигуры;
minx:float - минимальный Х геометрической фигуры;
minY:float - минимальный Y геометрической фигуры.
Класс IceCream содержит следующие методы:
realSquare():float - возвращает реально посчитанную площадь геометрической фигуры;
PointInIceCream(Point p): bool - проверяет попадание точки в геометрическую фигуру;
MonteCarloSquare(int count, out int numberPoints, out float rel_delta):
float - возвращает площадь геометрической
фигуры посчитанную методом Монте-Карло, схема метода изображена на рис. 9.
Рис.
9. Схема метода MonteCarloSquare
Для корректной работы приложения требуется:
· операционная система Windows Vista с пакетом обновления (SP2) и выше;
· архитектура 32-разрядная (x86)/64-разрядная (x64);
· процессор мощностью 1,6 ГГц или выше;
· 1 ГБ ОЗУ (1,5 ГБ для виртуальной машины);
· наличие 1 Мб свободного дискового пространства;
· видеоадаптер, совместимый с DirectX 9;
· установленный .NET Framework 4.5.
Результаты работы настольного приложения представлены на рис. 10.
Рис. 10. Результаты работы настольного приложения на базе WPF/XBAP
ASP (Active Server Pages, активные серверные страницы) - это среда выполнения приложений, встроенная в веб-сервер IIS (Internet Information Server, информационный сервер Интернета). В активных серверных страницах (файлах с расширением .asp) обычно имеются сценарии на скриптовых языках (например,VBScript или JScript), которые выполняются на сервере (в контексте IIS) до передачи HTML кода клиенту. Для обозначения сценариев, исполняющихся на стороне сервера, применяются специальные теги <% %>.
Данное приложение реализуется с помощью языков скриптов - JScript и JavaScript. В качестве интерпретатора скриптов использовался IIS и встроенный в Microsoft Visual Studio сервер. Разработка приложения велась в JetBrains WebStorm 6.0.1.
Приложение состоит из двух страниц: MonteKarlo.html и MonteKarlo.asp.
На странице MonteKarlo.html реализуется ввод данных
пользователем в таблицу (координат вершин треугольника, площадь которой
необходимо посчитать). После чего, при нажатии кнопки «Расчитать», введенные
данные будут отправлены с помощью метода Post на страницу MonteKarlo.asp, которая будет
производить необходимые вычисления. Код, реализующий выше приведенные действия,
выглядит следующим образом:
<form action = "MonteKarlo.asp" method = "POST"
name = "MonteKarlo">
Параметр action указывает
имя серверной страницы, которой посылаются данные для обработки, а параметр method определяет способ отсылки данных на
сервер. Имя формы используется для доступа к ее элементам. На форме расположены
шесть полей для ввода текста - по одному на координату каждой точки. Пример
тега для редактирования поля для ввода текста:
<input type="text" value = "10"
name="KoordinX_B" size="20" onchange =
"changeBX();" id = "bx">
Страница MonteKarlo.asp, реализует вычисление площади геометрической фигуры, относительной погрешности вычислений и времени. Данная страница написана на языке скриптов Jscript.
На активной серверной странице MonteKarlo.asp выполняются все функции по расчету требуемых параметров и вывод результатов. Ниже описаны все используемые клиентские функции.() - возвращает площадь полуокружности;
TriangleSquare() - возвращает площадь треугольника;
PointInTriangle(x, y)- проверяет попадание точки в треугольник;
PointInCirle(x,y) - проверяет попадание точки в полуокружность;
PointInIceCream(x,y) - проверяет попадание точки в геометрическую фигуру;
area()- возвращает реальную площадь геометрической фигуры;
Calculate(amountPoints) - расчет площади методом Монте-Карло.
Для корректной работы приложения требуется:
· операционная система Windows XP с пакетом обновления (SP2) и выше;
· архитектура 32-разрядная (x86) /64-разрядная (x64);
· процессор мощностью 1,6 ГГц или выше;
· 512 МБ ОЗУ;
· 1 ГБ (NTFS) свободного дискового пространства.
Для выполнения ASP приложения необходимо наличие следующих программных пакетов:
· операционная система MS Windows 2000 или выше;
· информационный сервер Интернета (Internet Information Server, IIS 5.1 или выше);
· наличие браузера MS Internet
Explorer 5.0 или выше.
Результаты работы веб-приложения представлены на рис. 11.
Рис. 11. Результаты работы веб-приложения на базе ASP/JScript
Программные средства разработки данного приложения описаны в п.4.1
В соответствии с заданием, необходимо создать веб-сервис XML, который будет вычислять
геометрической фигуры ambd
методом Монте-Карло. Сервис будет называться WebSevice_MonteKarlo и иметь один веб-метод MK_Square, который принимает координаты точек треугольника и
количество итераций, и возвращает количество попавших в область геометрической
фигуры точек, реальную площадь, площадь, посчитанную методом Монте-Карло,
погрешность и время работы метода. Диаграмма класса WS_MonteKarlo представлена на рис. 12.
Рис. 12. Диаграмма класса WS_MonteKarlo
_Square(float ax, float ay, float bx, float by, float ex, float ey, int count, out int numberPoints, out float real_delta, out float realsquare, out DateTime start, out DateTime end):float - вызывает метод MonteKarloSquare(count, out numberPoints, out real_delta) класса IceCream;
Класс Point
необходим для более удобной работы с точками. Диаграмма класса Point представлена на рис. 13.
Рис. 13. Диаграмма класса Point
Класс Point содержит следующий конструктор:
Point(int a, int b) - инициализация точки по двум ее координатам
Класс Point содержит следующие свойства:
PointX:float - ордината точки;
PointY:float - абсцисса точки.
Класс Circle предоставляет необходимые методы для
работы с полуокружностью, как частью геометрической фигуры. Диаграмма класса Circle представлена на рис. 14.
Рис. 14. Диаграмма класса Circle
Класс Circle содержит следующий конструктор:
Circle(Point p1, Point p2) - инициализация полуокружности по двум точкам
Класс Circle содержит следующие свойства:
CentrPoint: Point - центр полуокружности;
MinX: float - минимальный Х геометрической фигуры;
Класс Circle содержит следующие методы:
Square():float - возвращает площадь полуокружности;
PointInCircle(Point p):bool - проверяет попадание точки в полуокружность.
Класс Triangle предоставляет необходимые методы для
работы с треугольником, как частью геометрической фигуры. Диаграмма класса Triangle представлена на рис. 15.
Рис. 15. Диаграмма класса Triangle
Класс Triangle содержит следующий конструктор:
Triangle(Point p1, Point p2, Point p3) - инициализация треугольника по трем точкам
Класс Triangle содержит следующие свойства:
MaxX: float - максимальный Х геометрической фигуры;
MaxY: float - максимальный Y геометрической фигуры;
MinY: float - минимальный Y геометрической фигуры.
Класс Triangle содержит следующие методы:
PointInLines(Point P): bool - проверяет попадание точки в треугольник;
Square(): float - возвращает площадь треугольника.
Класс Rectangle предоставляет необходимые методы для
работы с прямоугольником, описанного вокруг геометрической фигуры. Диаграмма
класса Rectangle представлена на рис. 16.
Рис. 16. Диаграмма класса Rectangle
Класс Rectangle содержит следующий конструктор:
Rectangle(float MiX, float MaX, float MiY, float MaY)- инициализирует прямоугольник по четырем точкам;
Класс Rectangle содержит следующие методы:
Square():float - возвращает площадь прямоугольника.
Класс IceCream предоставляет необходимые методы для
работы с геометрической фигурой. Данный класс использует четыре вышеописанных
класса. Диаграмма класса IceCream представлена на рис. 17.
Рис. 17. Диаграмма класса IceCream
Класс IceCream содержит следующий конструктор:
IceCream(Point a, Point b, Point e)- инициализирует полуокружность ab, треугольник abd и прямоугольник abcd
Класс IceCream содержит следующие свойства:
maxX:float - максимальный Х геометрической фигуры;
maxY:float - максимальный Y геометрической фигуры;
minx:float - минимальный Х геометрической фигуры;
minY - минимальный Y геометрической фигуры.
Класс IceCream содержит следующие методы:
realSquare():float - возвращает реально посчитанную площадь геометрической фигуры;
PointInIceCream(Point p): bool - проверяет попадание точки в геометрическую фигуру;
MonteCarloSquare(int count, out int numberPoints, out float rel_delta):
float - возвращает площадь геометрической
фигуры посчитанную методом Монте-Карло.
Реализуем клиентское WPF приложение, которое будет обращаться к созданному ранее веб-сервису. Для этого добавим в решение новый веб-сайт и создадим веб-ссылку на веб-метод.
Класс Page1 содержит методы, необходимые для
взаимодействия с пользователем. Диаграмма класса Page1 представлена на рис. 18.
Рис. 18. Диаграмма класса Page1
_Click(object sender, RoutedEventArgs e):void - обработчик события нажатия на кнопку Button1, вызывает метод MK_Square веб-сервиса WebSevice_MonteKarlo, выводит результаты выполнения веб-метода в таблицу;_Click(object sender, RoutedEventArgs e):void - обработчик события нажатия на кнопку Button2, очищает поля для ввода координат;3_Click(object sender, RoutedEventArgs e):void - обработчик события нажатия на кнопку Button3, инициализирует точки, необходимые для контрольного примера, заполняет поля для ввода координат;
KoordinX_A_TextChanged(object sender, EventArgs e)- проверка вводимых координат;_B_TextChanged(object
sender, EventArgs e)- проверка вводимых координат;_E_TextChanged(object
sender, EventArgs e)- проверка вводимых координат;_A_TextChanged(object
sender, EventArgs e)- проверка вводимых координат;_B_TextChanged(object
sender, EventArgs e)- проверка вводимых координат;_E_TextChanged(object
sender, EventArgs e)- проверка вводимых координат.