Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Логическое проектирование приложения

Поиск

Настольное приложение испольуюет GUI для взаимодействия с пользователем. Предлагается ввести координаты точек, либо вырбрать контрольный пример. После завершения экспериментов выводится таблица результатов. Схема приложения показана на рис.4

Рис. 4. Схема программы настольного приложения

В процессе создания приложения были спроектированы классы и методы, которые отображены на рис.5

Рис. 5. Структура приложения WPF

В настольном приложении определены следующие классы:

    • класс точки Point
    • класс четырехугольника, состоящий из четырех точек Rect
    • класс окна приложения Window1

В классе Point определены следующие типы данных и методы:

· double x, double y – координаты х и у соответствующей точки

· конструкторы

· get Curve

· getRand

В классе Rect определены следующие данные и методы:

    • point A, point B, point C, point E
    • double points
    • TimeSpan time
    • конструкторы
    • GetHeigth
    • GetWidth
    • GetMinX
    • GetMinY
    • S_Monte
    • S_O_Rect
    • S_Teor

Cтруктура перечисленных классов, созданная средствами Microsoft Visual Studio, приведена на рис. 6. Пояснения по свойствам методов классов будут даны ниже.

Рис. 6. Классы Point и Rect

Дадим краткие комментарии. Class Window – стандартный класс окна (формы) в приложении WPF. Он генерируется конструктором Visual Studio автоматически, и пересекается с файлом *.xaml, содержащим оформление этого окна. В этом классе определены следующие поля и методы:

private void button_Click(object sender, RoutedEventArgs e) – это обработчики событий, соответствующие нажатию на ту или иную кнопку.

double Ax, Ay, Bx, By, Cx, Ex – в эти переменные записываются введенные пользователем координаты, либо координаты, созданные случайным образом, производится их проверка на корректность и дальнейшее использование классом Point в качестве координат x и у.

int n – количество точек, для которых проводится эксперимент.

BitmapImage bitmap1, bitmap2, bitmap3, bitmap4, bitmap5- содержат 5 изображений, которые используются в настольном приложении в зависимости от того,какой случай четырехугольника будет рассматриваться.

В классе Point определены следующие поля и методы:

double x, y – содержат координаты х и у какой-либо точки

public double getCurve(point one, point two, double x3) – рассчитывает уравнение прямой, для последующего использования в методе MonteCarlo(для определения принадлежности точки заданному четырехугольнику). В качестве аргументов принимает значения 2 точек(A,B или C,E) и координаты х случайной точки.

public point getRand(double x, double y) – Создание новой точки для последующей генерации координат случайной точки в методе Монте-Карло.

В классе Rect определены следующие поля и методы:

point A,B,C,E – Содержат 4 вершины четырехугольника

TimeSpan time – Время проведения эксперимента. Используется тип TimeSpan, так как к этому типу можно применять стандартную функцию для извлечения времени в миллисекундах.

double points – Количество точек, попавших в четырехугольник. При каждом новом эксперименте это значение обнуляется.

public double GetMinX(Rect ABCE)

public double GetMinY(Rect ABCE) – Нахождение минимальных х и у, для расчета ширины и высоты описанного прямоугольника и задания диапазона значений для генератора случайных чисел.

public double S_O_Rect(Rect ABCE) – Нахождение площади описанного четырехугольника.

public double S_Monte(Rect ABCE, int n) – реализует алгоритм расчет площади методом Монте-Карло. Вначале определяется площадь описанного четырехугольника, затем на основании этого определяется диапазон координат случайных точек, после этого определяется принадлежность точки заданному четырехугольнику. При попадании точки, выполняется увеличение количества точек, попавших в четырехугольник. Результаты метода Монте-Карло(количество точек, попавшие точки, площадь Монте-Карло, погрешность, время) записываются в массив типа double, из которого потом в таблицу вносятся результаты.

public double S_Teor(Rect ABCE) - вычисляет площадь прямоугольника ABCE по формулам геометрии.

public double GetHeigth(Rect ABCE)

public double GetWidth(Rect ABCE)- два метода для определения Высоты и ширины описанного четырехугольника

4.3 Тестирование приложения

Результаты тестирования представлены на рис. 7

Рис. 7. Результат работы приложения WPF

 

5. Веб-приложение на базе скриптов haXe/PHP

5.1 Программные средства для разработки приложения

Для разработки приложения была использована интегрированная среда разработки FlashDevelop, которая является свободной средой разработки и редактором, написанным на C#, позволяющим создавать Flash/Flex, MTASC или haXe (C++, JavaScript, PHP, Flash, NekoVM) приложения.

Так же интегрированная среда разработки FlashDevelop является одной из альтернатив среды FlashBuilder для разработки веб-приложений (благодаря своей бесплатности и заметно большему быстродействию) хотя и не обладает всеми возможностями последнего. Поддерживает профилирование, отладку Adobe Flex и имеет умное автодополнение при написании кода на языке ActionScript.

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

Веб-приложение haXe/PHP является простой с точки зрения взаимодействия пользователя и программы, так как в ней отдельно реализуется интерфейс приложения(.html страница), и отдельно реализовывается страница(.hx), которая потом преобразовывается компилятором haxe в текст файлов на языке PHP и будет выполнять расчет площади Монте-Карло. Особенность языка haxe в том, что это универсальный объектно- ориентированный язык высокого уровня, синтаксис которого напоминает язык Java или C#.

Рисунок 8. Компилятор haXe

Как видно из рисунка, особенностью этого языка является то, что программа, написанная на haxe может компилироваться во множество других различных языков(по умолчанию haxe поддерживает преобразование в php(как в нашем примере), Neko,.Java, swf файлы, но этот список можно значительно расширить, скачивая дополнительные языковые библиотеки с официального сайта, либо с помощью консольной команды haxelib install.

Например, установка библиотеки для компиляции в файлы на языке C++, необходимо ввести следующую команду:

>haxelib install cpp

После этого, при установленном соединении с Интернетом, будет произведено скачивание с официального репозитория haxe, Расположенного по адресу http://lib.haxe.org и последующая установка данной библиотеки.

При создании приложения на haxe, необходимо 1 раз написать исходный код на языке haxe, а потом выбирать, во что его компилировать. В нашем случае выходным языком будет являться PHP. Предположим, что файл исходного кода имеет название Main.hx. Чтобы получить из него PHP код, необходимо сделать следующее:

· Создать файл с расширением.hxml

· Занести в него директивы

-cp src //Указание на компиляцию исходных кодов

-php www //Указание выходной папки,куда будут помещены php файлы

-main Main //Точка входа в программу

· После этого требуется сохранить данный файл, и щелкнуть по нему два раза в проводнике Windows. При установке haXe этот тип файлов автоматически ассоциируется с файлом haxe.exe, который примет этот файл как параметры командной строки, и выполнит его компиляцию. Иными словами, мы создали командный файл, который автоматически выполняет действия, записанные в нем, не требуя их ручного вызова

Если все прошло удачно, и исходный текст программы не содержит ошибок, компилятор создаст директорию www, которая будет являться файлами исходного кода на языке php, которые в дальнейшем требуется поместить в директорию с Web-сервером.

Скажем несколько слов о Web-сервере. В нашем случае использовался Web-сервер Denwer, который распространяется свободно, обладает бесплатной поддержкой, прост в установке и обслуживании, и представляет собой идеальный вариант для новичков. Процесс установки начинается со скачивания дистрибьютива программы с сайта http://www.denwer.ru. После этого выполняется процесс установки. В итоге будет создан виртуальный диск, который будет представлять собой «мини копию» файловой системы LINUX. В комплект Denwer входят уже настроенные исполняемые файлы Web-Сервера Apache, языка PHP версии 5.2, Perl и так далее.

Стандартный набор Денвер включает в себя:

· Веб-сервер Apache с поддержкой SSI, SSL, mod_rewrite, mod_php

· Интерпретатор PHP с поддержкой GD, MySQL, SQLite

· СУБД MySQL с поддержкой транзакций (mysqld-max)

· Система управления виртуальными хостами, основанная на шаблонах

· Система управления запуском и завершением

· Панель phpMyAdmin для администрирования СУБД

· Ядро интерпретатора Perl без стандартных библиотек (поставляются отдельно)

· Эмулятор sendmail и сервера SMTP с поддержкой работы совместно с PHP, Perl, Parser и др

Структура файловой системы виртуального диска показана на рис. 9

Рис. 9. Файловая система Web-Сервера Denwer.

Не будем подробно расписывать, что представляет из себя каждая конкретная папка, так как легко провести аналогию с системой LINUX. Отметим лишь то, что для развертывания Web-сайта необходимо создать в директории home папку, соответствующую названию нашего сайта, по которому мы хотим вызывать его из браузера. После этого, необходимо поместить полученную директорию www, созданную компилятором haxe в эту папку, и также добавить в нее html файлы и какие –либо другие данные, например рисунки(если это необходимо для реализации Web-сайта).

При запуске Web-сервера, он добавляет в файл hosts записи, которые ассоциируют названия директорий из папки home с адресом 127.0.0.1, который означает, что мы будем по этому адресу обращаться к серверу, расположенному на локальной машине. При запуске требуется проверять, чтобы приложение запускалось с правами администратора, так как файл hosts является системным, и вносить в него изменения может только администратор. После этого, по указанному адресу будет доступен наш Web-сайт.

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

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

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

Index.html – модуль, содержащий интерфейс взаимодействия с пользователем(GUI). Представляет собой документ html-разметки.

Рисунок 10. Пользовательский интерфейс приложения haXe/PHP

Main.hx – модуль, содержащий функции, реализующие логику программы. При компиляции, на его основе, создаются PHP-файлы.

Рисунок 11. Результаты эксперимента haXe/PHP

Проектирование приложения.

Приложение состоит из страницы index.html реализующей пользовательский интерфейс и страницы index.php, которая была автоматически сгенерирована компилятором haXe, и содержит в себе алгоритм расчета площади по методу Монте-Карло. После заполнения пользователем входных данных и нажатия клавиши “Рассчитать”, данные с помощью метода Post передаются на вход скрипту, который производит математические вычисления. После завершения работы, отображается страница с результатами эксперимента.

В процессе создания приложения на языке haxe были спроектированы следующие функции и классы:

Class Main

Static function main() - определяют точку входа в программу.

Static function Math_Square – вычисление площади четырехугольника по правилам геометрии.

static function getCurve - вывод уравнения прямой, для проверки принадлежности точки четырехугольнику(используется в функции MonteKarlo_Square)

static function MonteKarlo_Square – собственно сам метод Монте-Карло. Вначале определяется площадь описанного четырехугольника, затем на основании этого определяется диапазон координат случайных точек, после этого определяется принадлежность точки заданному четырехугольнику. При попадании точки, выполняется увеличение количества точек, попавших в четырехугольник.

В листинге приведено определение попадания точки в четырехугольник:

Листинг №1. Определение попадания точки в четырехугольник. haXe.

if(x3<x4) //esli c<e(slychai 1)

{

if(randx<x2)

{

newy = getCurve(x1,y1,x2,y2,randx);

if(randy<=newy)

{

points+=1;

}

}

if(randx==x2)

{

points+=1;

}

if(randx==x3)

{

points+=1;

}

if(randx>x2&&randx<x3)

{

points+=1;

 

}

if(randx>x3)

{

newy= getCurve(x3,y3,x4,y4,randx);

if(randy>=newy)

{

points+=1;

}

}

}

if(x3==x4) //esli c==e(slychai 2)

{

if(randx<x2)

{

newy = getCurve(x1,y1,x2,y2,randx);

if(randy<=newy)

{

points+=1;

}

}

 

if(randx>=x2&&randx<=x3)

{

points+=1;

}

}

if(x3>x4) //esli c>e(slychai 3)

{

if(randx<x2)

{

newy = getCurve(x1,y1,x2,y2,randx);

if(randy<=newy)

{

points+=1;

}

}

if(randx==x2)

{

points+=1;

}

if(randx==x3)

{

points+=1;

}

if(randx==x4)

{

points+=1;

}

if(randx>x2&&randx<x4)

{

points+=1;

}

if(randx>x4&&randx<x3)

{

newy = getCurve(x3,y3,x4,y4,randx);

if(randy>=newy)

{

points+=1;

}

}

 

 

6. Клиент-Серверное приложение на базе ASP.NET



Поделиться:


Последнее изменение этой страницы: 2016-09-20; просмотров: 422; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.117.254.221 (0.01 с.)