Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Структури даних та діаграми класів





 

Відповідно об’єктному аналізу предметної галузі, в курсовій роботі спроектовано три основні класи:

· Клас «Лук»(Bow) – використовується для моделювання процесів прицілювання та пострілу.

· Клас «Стріла»(Arrow) – використовується для відображення польоту стріли.

· Клас «Мішень»(Target) – використовується для відсліжування влучання стріли у мішень.

 

BOW
+positionBow: double[] +geometryHand: string +lengthBow: double +baseSize: double +pullingForce: int +weight: double +sight: bool +stabilizer: bool +tension: double +angle: double
+Bow(PictureBox bow, double[] positionBow) +Aim(double[] positionBow, double[] positionArrow, double tension, double angle) +Calculation(double angle, string geometryHand, int lenghtBow, double baseSize, int pullingForce, double weight, bool sight, bool stabilizer,)

 

Клас «Bow». Масив positionBow має тип double, містить дві змінніх, Х та Y. X задається програмно, а Y задається користувачем у параметрі «зріст спортсмена». Змінна geometryHand має тип
string, може приймати два значення defl и refl. Ця змінна позначає геометрію рукоятки, якщо вибрана дефлексивна рукоятка то дисперсія тремтіння рук буде менше впливати на точність пострілу, якщо ж рефлексивна то дисперсія буде набувати більш вагомого значення до пострілу. Змінна lenghtBow типу double позначає довжину лука, має допустимі значення від 32 до 48 дюймів. Чим більша довжина лука, тим менша дисперсія. Змінна baseSize має тип double та позначає розмір бази лука. Має допустимі значення від 20.5 до 24.5 дюймів. Чим менший розмір бази тим більше дисперсія тремтіння рук впливає на точність пострілу.

Змінна pullingForce має тип int та допустимі значення від 30 до 80 фунтів. Позначає зусилля натягу лука. Ця змінна регулює початкову швидкість польоту стріли. Змінна weight має тип double, позначає масу лука та має допустимі значення від 1.5 до 2.2 кілограм. Чим важчий лук, тим менше дисперсія тремтіння рук впливає на точність. Змінна sight має тип bool, позначає наявність прицілу. Якщо є приціл, то дисперсія тремтіння рук менше впливає на точність пострілу. Змінна stabilizer типу bool позначає наявність стабілізатора. Якщо є стабілізатор, то дисперсія лука найменша. Змінна tension типу double визначає час прицілювання, максимальне значення якої 10 секунд. Змінна angle позначає кут нахилу лука та стріли яка розміщена на тятиві.

 

Конструктор Bow приймає змінну PictureBox та змінну яка відповідає за позицію лука.
Інтерфейс Aim приймає дві змінні позиції лука та стріли, змінну яка відповідає за час прицілювання та змінну яка позначає кут прицілювання. Надає змогу користувачу прицілитись та зробити постріл за допомогою лівої клавіші мишки. Викликається як тільки користувач затисне ЛКМ у районі хвостика стріли. Коли відбувається постріл всі отриманні дані передає методу Calculation та повертає змінній positionBow початкове значення.

Метод Calculation приймає всі змінні які позначають характеристики лука та змінні опрацьовані інтерфейсом Aim, вираховує всі потрібні дані(V, positionArrow та angle) для знаходження функції польоту стріли та передає методу Trajectory об’єкту класу Arrow.

 

 

Arrow
+positionArrow: double[] +V: double +m: double +angleArrow: double
+Arrow(PictureBox arrow, double[] positionArrow) +Trajectory(double[] positionArrow, double V, double m, double angle)

 

Клас «Arrow». Масив positionArrow має дві змінні X та Y, типу double. Початкове значення задається програмно. Змінна V позначає швидкість польоту стріли, має тип double. Значення отримується у результаті обчислень методом Calculation класу Bow. Змінна m позначає масу стріли, задається програмно та має тип double. Змінна angleArrow позначає кут нахилу стріли та має тип double. Значення отримується у результаті обчислень методом Calculation.

 

Конструктор Arrow приймає змінну PictureBox та змінну яка відповідає за позицію стріли.

Метод Trajectory приймає змінні необхідні для обчислення траєкторії руху стріли, обчислює її та змінює дані positionArrow згідно з розрахунками. Перестає «рухати» об’єкт класу Arrow як тільки об’єкт зустрічається з поверхнею землі або з мішенню, після чого визиває метод Hit класу Target.

 

Target
+positionTarget: double[] +bullet: bool
+Target(PictureBox target, double[] positionTarget) +Hit(bool bullet)

 

Клас «Target». Масив positionTarget має дві змінні X та Y, типу double. Значення задається програмно.

Змінна bullet типу bool позначає влучання стріли у мішень. Значення отримує в результаті роботи метода Trajectory класу Arrow.

Конструктор Target приймає змінну PictureBox та змінну яка відповідає за позицію мішені.

Метод Hit приймає змінну bullet та повідомляє про результати влучання.

Рис. 1.8 – діаграма класів UML

 

На рисунку 1.8 зображено діаграму класів, де ми бачимо агрегацію класу Arrow до класу Bow. Клас Arrow спочатку свого функціонування залежить від класу Bow, отримує від нього необхідні дані для пошуку траєкторії руху, та отримує самостійне функціонування. Тому це відношення агрегація. Кратність між цими класами 1 до 1, тому що одночасно декілька стріл не може взаємодіяти з луком. Кратність між класом Arrow и класом Target (0..2) до 1. Мішень може містити на собі 0 стріл, коли жодна стріла не потрапила у ціль, або ж 1 чи 2 та не більше, тому що коли створюється третій об’єкт класу Arrow викликається деструктор для першого об’єкта. Також при розробці програми використовуються класи засобів Windows Forms.

 

Date: 2016-01-20; view: 320; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию