ВВЕДЕНИЕ
Использование новых информационных технологий в разных сферах деятельности человека привело к разработке программного обеспечения для создания графических объектов (файлов) и дальнейшей работы с ними. Такое программное обеспечение было востребовано на рынке информационных технологий, потому постоянно изменяется, включая в себя всё новые и новые возможности.
Первые шаги программирования на языке С#, требуют тщательного проектирования макета программы, а также наличия литературы по данному языку программирования. Однако, при внимательном изучении литературы, можно добиться хороших познаний данного языка программирования и создавать достаточно хорошее программное обеспечение для разных сфер деятельности.
В данной курсовой работе спроектировано и разработано графическое приложение управляющее движением объекта в форме круга с заданным диаметром.
Выбор обусловлен тем, что ключевым средством взаимодействия пользователя с компьютером является графический пользовательский интерфейс. Развитие и совершенствование графического интерфейса тесно связано с развитием компьютерного обеспечения и технологий. Сейчас многие составные части компьютеров разрабатываются с учетом графических режимов работы. Например, дорогие видеокарты, стоимость которых доходит до половины стоимости удовлетворительного компьютера для работы в офисе. Все графические программы разрабатываются с учётом последних новинок компьютерной техники, реагируя на все достижения и всё ближе подходя к реальности изображения и звука. На сегодняшний день существуют программы поражающие своими возможностями с хорошим графическим и звуковым оформлением. Имеется и постоянно возникает огромное количество фирм, которые предоставляют всё новые и новые программы крайне разнообразного характера.
В теоретической части курсовой работы дано краткое описание языка программирования С#. Его достоинства и недостатки.
Практическая часть заключается в разработке математической модели траектории движения объекта с учетом уменьшения скорости при столкновении с границей окна.
Задачи, которые я поставил перед собой, следующие: изучить основы языка программирования С# и особенности разработки графических приложений
Предмет исследования - возможности программирования графических пользовательских интерфейсов с помощью языка С#.
Объект исследования - графический объект перемещающийся в пространстве по определенной формуле.
Актуальность темы заключается в том,что с помощью
графического интерфейса можно в удобном виде (таблица, график, функциональная
схема, траектория движения ) отобразить почти любые процессы ( физические,
математические, химические ).
С# разрабатывался как язык программирования прикладного уровня для CLR (Common Language Runtime) и, как таковой, зависит, прежде всего, от возможностей самой CLR. Это касается, прежде всего, системы типов C#, которая отражает BCL. Присутствие или отсутствие тех или иных выразительных особенностей языка диктуется тем, может ли конкретная языковая особенность быть транслирована в соответствующие конструкции CLR.
Ниже представлена схема выполнения.NET-приложения в
среде CLR.
Рисунок 1. Схема выполнения.NET-приложения в среде
CLR.
На данной схеме наглядно видно, как выглядят взаимоотношения между исходным кодом (предусматривающим использование типов из библиотеки базовых классов), компилятором.NET и механизмом выполнения.NET.
Вследствие того, что C# представляет собой гибрид из
нескольких языков, он является таким же синтаксически чистым - если не чище -
как и Java, почти столь же простым, как VB, и практически таким же мощным и
гибким, как С++.
Рисунок 2. Генеалогическое древо С#
Список ключевых особенностей языка C#, которые характерны для всех его версий.
• Указатели использовать не требуется! В программах на C# обычно не возникает нужды в манипулировании указателями напрямую.
• Автоматическое управление памятью посредством сборки мусора. Учитывая это, ключевое слово delete в C# не поддерживается.
• Формальные синтаксические конструкции для классов, интерфейсов, структур, перечислений и делегатов.
• Аналогичная языку С++ возможность перегрузки операций для специальных типов без излишних сложностей.
• Поддержка программирования на основе атрибутов. Эта разновидность разработки позволяет аннотировать типы и их члены с целью дополнительного уточнения их поведения. Например, если пометить метод атрибутом [Obsolete], при попытке использования этого члена программисты получат соответствующее специальное предупреждение.
С выходом версии.NET 2.0 (примерно в 2005 г.), язык программирования C# был обновлен для поддержки многочисленных новых функциональных возможностей:
• Возможность создания обобщенных типов и обобщенных членов. Используя обобщения, можно создавать очень эффективный и безопасный к типам код, который определяет множество заполнителей, указываемых во время взаимодействия с обобщенными элементами.
• Поддержка анонимных методов, которые позволяют предоставлять встраиваемую функцию везде, где требуется тип делегата.
• Возможность определения единственного типа в нескольких файлах кода (или, если необходимо, в виде представления в памяти) с использованием ключевого слова partial.
В версии.NET 3.5 (вышедшей примерно в 2008 г.) в язык программирования C# была добавлена дополнительная функциональность, включая следующие средства.
• Поддержка строго типизированных запросов (т.е. LINQ), применяемых для взаимодействия с разнообразными формами данных.
• Поддержка анонимных типов, которые позволяют моделировать форму типа, а не его поведение.
• Возможность расширения функциональности существующего типа (не создавая его подклассы) с использованием расширяющих методов.
• Включение лямбда-операции (=>), которая еще больше упрощает работу с типами делегатов.NET.
• Новый синтаксис инициализации объектов, который позволяет устанавливать значения свойств во время создания объекта.
Версия.NET 4.0 (вышедшая в 2010 г.) дополнила C# еще рядом средств:
• Поддержка необязательных параметров, а также именованных аргументов в методах.
• Поддержка динамического поиска членов во время выполнения через ключевое слово dynamic это обеспечивает универсальный подход к вызову членов на лету независимо от инфраструктуры, с помощью которой они были реализованы (COM, IronRuby, IronPython или службы рефлексии.NET).
• Работа с обобщенными типами стала намного понятнее, учитывая возможность легкого отображения обобщенных данных на универсальные коллекции System.Object через ковариантность и контравариантность.
В этой версии C# появилась пара новых ключевых слов (async и await), которые значительно упрощают многопоточное и асинхронное программирование.
Ввиду высокой объектной ориентированности, язык С#
великолепно подходит для быстрого конструирования различных компонентов - от
высокоуровневой бизнес-логики до системных приложений, использующих
низкоуровневый код.
.2 Требования к функциональным возможностям
По нажатию левой кнопки мыши объект должен начать
движение по направлению к указателю мыши с заданной скоростью. При столкновении
с границей окна, программа должна рассчитать угол падения и угол отражения и
перенаправить движение объекта с уменьшением скорости.
.3 Алгоритм работы программы
графический программирование движение скорость
Алгоритм работы создаваемого приложения выглядит
следующим образом.
Рисунок 3. Алгоритм программы
1.4 Структура программы
Программа на С# состоит из одного или нескольких
файлов. Каждый файл может содержать одно или несколько пространств имен. Каждое
пространство имен может содержать вложенные пространства имен и типы, такие как
классы, структуры, интерфейсы, перечисления и делегаты- функциональные типы.
Выбираю из пункта меню Файл > Создать > Проект.
Откроется диалоговое окно позволяющее выбрать тип отображаемого шаблона.
Рисунок 4. Создание проекта.
В левой панели в узле Другие языки выбрал узел Visual C#. В центральной панели выбираю шаблон Приложение Windows
Forms.
Рисунок 5. Выбор шаблона проекта.
Шаблон Приложение Windows Forms дает возможность
создать минимальное приложение которое компилируется и запускается, но не
содержит данных или элементов управления пользовательского интерфейса, кроме
самой формы. Добавлять элементы в процессе разработки. В панели Обозреватель
решений показана решение в котором находиться курсовой проект. В списке проекта
выбираю Form1.cs правой кнопкой и из контекстного
меню выбрал пункт Перейти к коду.
Рисунок 6. Открытие редактора кода.
В шаблоне будет прописан уже заготовленный код. После объявления класса Form1 объявляю базовые переменные.
В конструкторе инициализирую переменные.
Задаю радиус круга, давая ему значение 20. Позицию задаю с помощью переменных xpos и ypos. В начале она задается произвольно. Переменным, отвечающих за скорость, задаю нулевое значение. Так же статичное значение трению и глушению скорости при отскоке объекта.
Инициализирую таймер, который будет обновлять картинку при 30 кадрах в секунду. Событию по истечению времени (Tick) задам метод, в котором будет просчитываться поведение объекта и перерисовка формы. Viewport задаю объект Graphics, в котором будет нарисован круг.
Теперь метод render. При каждом входе в кадр форма
обновляется заливая все однотонным цветом. Так же позиции круга плюсуется скорость.
Что бы круг при движении в определенную сторону не
ушел за границы окна пишу такой код. При приближении в краю окна по X скорость xVel умножается на
отрицательное число, которое уменьшает скорость в 0,7 раз. Аналогично по Y.
Так же добавляется трение, которое тормозит круг. И при приближении скорости с 0, она обнуляется и таймер останавливается.
Ну и отображение круга на форме.
Создаю событие клика по форме. Метод OnClick
переопределяет (override)
метод расширяемого класса.
В этом методе определяю позицию курсора на форме. С
помощью нее рассчитываю, какую скорость придать кругу. Запускаю таймер.
Метод force рассчитывает, с какой скоростью будет
двигаться круг. Круг движется по направлению к курсору. Чем позиция курсора
дальше от круга, тем быстрее скорость круга.
Тестирование программы - это этап, на котором проверяется, как ведет себя программа на как можно большем количестве входных наборов данных, в том числе и на заведомо неверных.
Основные принципы организации тестирования:
. необходимой частью каждого теста должно являться описание ожидаемых результатов работы программы, чтобы можно было быстро выяснить наличие или отсутствие ошибки в ней;
. следует по возможности избегать тестирования программы ее автором, т.к. кроме уже указанной объективной сложности тестирования для программистов здесь присутствует и тот фактор, что обнаружение недостатков в своей деятельности противоречит человеческой психологии (однако отладка программы эффективнее всего выполняется именно автором программы);
. по тем же соображениям организация - разработчик программного обеспечения не должна "единолично ” его тестировать (должны существовать организации, специализирующиеся на тестировании программных средств);
. должны являться правилом доскональное изучение результатов каждого теста, чтобы не пропустить малозаметную на поверхностный взгляд ошибку в программе;
. необходимо тщательно подбирать тест не только для правильных (предусмотренных) входных данных, но и для неправильных (непредусмотренных);
. следует сохранять использованные тесты (для повышения эффективности повторного тестирования программы после ее модификации или установки у заказчика);
. тестирования не должно планироваться исходя из предположения, что в программе не будут обнаружены ошибки (в частности, следует выделять для тестирования достаточные временные и материальные ресурсы);
. следует учитывать так называемый
"принцип скопления ошибок”: вероятность наличия не обнаруженных ошибок в
некоторой части программы прямо пропорциональна числу ошибок, уже обнаруженных
в этой части;
Отладка - это комплексный процесс по выявлению и исправлению дефектов в программном обеспечении. Сами же дефекты, обычно, обнаруживается в процессе тестирования ПО.
Отладка состоит из следующих этапов:
воспроизведение дефекта (любым из доступных способов);
анализ дефекта (поиск причины возникновения дефекта);
дизайн исправления дефекта;
кодирование исправления дефекта;
валидация исправления;
интеграция исправления в кодовую базу или целевую систему;
дополнительные валидации после интеграции.
На любом этапе отладки могут возникнуть новые дефекты, которые придётся отлаживать. Например, какая-то часть исправления в коде работает не так как ожидается и соответственно придётся отлаживать эту часть в изоляции и снова основное время уходит на пункты 1 и 2 и т.д.
Этап отладки можно считать законченным, если программа правильно работает на двух-трех наборах входных данных.
Некоторые методы отладки ПО используемые на данный момент в индустрии:
запуск программы из под отладчика;
анализ поведения системы;
тестирование;
анализ кода без исполнения программы;
выполнения программы (или её части) в другой среде;
отладка трансляцией кода.
При создании решения, отладки и конфигурации построения выпуска и их целевые платформы по умолчанию определяются для решения автоматически. Затем можно настраивать конфигурации или создать собственную. Конфигурации построения определяют тип построения. Можно изменить или создать конфигурацию и платформу с помощью диалогового окна Диспетчер конфигураций.
Нужно изменить конфигурации режима Debug в режим Release.