
- •1 Аналіз сучасного стану питання та обґрунтування завдання на роботу
- •Предметна область
- •1.2 Існуючі реалізації
- •1.3 Розробка технічного завдання на роботу
- •1.4 Обґрунтування вибору мови програмування
- •1.5 Висновки
- •2 Розробка інтерфейсу програми та прикладів використання
- •2.1 Розробка інтерфейсу програми
- •2.2 Приклади використання
- •3 Розробка діаграм класів, об’єктів та стану
- •4 Розробка підсистеми графічного відображення
- •4.3 Графічні процедури підсистеми графічного відображення
- •Функція LoadImage:
- •5 Використання засобів програмування winapi
- •6 Розробка підсистеми серіалізації/десеріалізації даних
- •7 Керівництво користувача
- •7.1 Встановлення програми та необхідні файли/каталоги
- •7.2 Запуск програми
- •7.3 Користувацький інтерфейс
Міністерство освіти і науки, молоді та спорту України
Вінницький національний технічний університет
Інститут інформаційних технологій та комп’ютерної інженерії
ЗАТВЕРДЖУЮ
Зав. кафедри ПЗ, проф., д.т.н.
______________ А.М. Пєтух
(підпис)
”14” січня 2013 р.
ІНДИВІДУАЛЬНЕ ЗАВДАННЯ
на курсову роботу з дисципліни ”Об'єктно орієнтоване програмування”
студенту групи 1ПІ-12б Нікльському М. М.
РОЗРОБКА ПРОГРАМНОЇ СИСТЕМИ ДЛЯ МОДЕЛЮВАННЯ ОБ’ЄКТІВ ” ТАРГАНИ, БАНКА, ТРЕК ” З ВИКОРИСТАННЯМ UML ТА МОВИ ПРОГРАМУВАННЯ С++
Вихідні дані:
- MS Visual Studio 2010, довідники з мов С++ та WinAPI.
Вимоги до курсової роботи:
Потрібно створити Windows API-додаток, який реалізує: класи мікро та двох макрооб’єктів різних класів згідно варіанту курсової. Клас мікрооб’єкту повинен містити не менше 4 елементів змінних і не менше 4 методів. Як мінімум одна змінна повинна бути типу int, одна – типу double і як мінімум одна – рядок (будь якої реалізації); В класі повинен бути присутній конструктор та деструктор; В класі повинен бути також присутній як мінімум один елемент, що створений динамічно. Це може бути массив, структура, інший об’єкт або навіть одна змінна. Повинен бути присутній код, що створює цей елемент – наприклад у конструкторі, та код, який знищує цей елемент – найкраще всього у деструкторі. Повинно бути реалізоване глибинне копіювання шляхом перевантаження копіюючого конструктора та оператора =; три випадки виклику копіюючого конструктора; використання перевантаженого оператора =. Продемонструвати перевантаження та використання унарного та бінарного операторів (окрім = та <<). Продемонструвати перевантаження і використання оператора <<. Повинно також бути продемонстровано створення об’єкту статично та динамічно; додано у клас одну статичну змінну та одну статичну функцію – та продемонстровано їх використання. Повинно також бути продемонстровано використання наступних механізмів мови С++: friend-функцій, ініціалізатор конструктора, оператор ::, this, типів доступу public, private, protected. Зображення мікрооб’єкту повинно складатись не менше чим з трьох графічних примітивів, при цьому один з них повинен бути текст. Повинно також бути продемонстровано створення динамічного масиву мікрооб'єктів та відображення його у вікні програми. При натискуванні правої кнопки миші на мікрооб’єкті він повинен ставати активним/неактивним. При натискувань клавіш-стрілок активні об’єкти повинні рухатись у вікні програми. Повина бути реалізована можливість додавати мікрооб’єкти шляхом натискування клавіши Insert. При цьому повинне з’являтись діалогове вікно, яке повинно визначати параметри створюваного мікрооб’єкта, зокрема до якого з класів нащадків у ієрархії наслідування він належить. Крім керуючого елемента Button у діалоговому вікні також повинні бути використані як мінімум два з наступного списку: TextBox, CheckBox, ListBox, RadioButton. При натискувань клавіши Delete активні об’єкти повинні знищуватись. Якщо активного об’єкта нема – клавіша Delete ігнорується. Клавіша Esc повинна відміняти активацію обєкта. Повинно бути реалізовано наслідування мікрооб’єктів – як мінімум три рівня наслідування. Зображення об'єктів класів нащадків повинно відрізнятись від зображень об’єктів базових класів. Функцію Draw слід зробити віртуальною. Крім функції Draw в класах мікрооб'єктв повинна бути присутня ще як мінімум одна віртуальна функція. Зображення кожного з макрооб’єктів може складатись з графічних примітивів: точка, лінія, прямокутник, коло, арка, полігон, текст, графічний образ. Зображення кожного макрооб’єкту повинно складатись не менше чим з трьох елементів, при цьому один з елементів повинен бути текст. Додати класи макрооб’єктів і команди створення самих макрооб’єктів і команди їх рисування в програму. В програмі повинен бути як мінімум один макрооб’єкт кожного з двох класів макрооб'єктів. При цьому мікрооб'єкти повинні чітко розділитись на тих, які належать до макрооб’єктів і тих, які їм не належать (найбільш наглядно цен зобразити геометрично – ті що належать знаходяться всередині макрооб’єкта, ті що не належать - ззовні). Рух мікрооб’єкта всередині макрооб’єкта – не обов’язковий. Повинна бути реалізована можливість рухати якимись чином макрооб’єкт (разом з всіма мікрооб'єктами, які йому належать). Повинна бути реалізована можливість включати виділені/виділений мікрооб’єкти/мікрооб’єкт в макроб’єкт та – навпаки – виключати виділені/виділений мікрооб’єкти/мікрооб’єкт з макроб’єкту. Можливість виділення декількох мікроб’єктів не є обов’язковою. В програмі повинно бути продеморнстровано використання поліморфізму; віртуального деструктора; динамічного приведення типу dynamic_cast<>. Мікроб’єкти повинні бути як мінімум у трьох станах: А) Належать макрооб’єкту першого типу; Б) Належать макрооб’єкту другого типу; В) Не належать жодному макрооб’єкту. Не забороняється мікроооб’єкту одночасно належати декільком макрооб’єктам одночасно. Повинен бути реалізований автоматичний рух деяких мікрооб’єктів зі зміною стану (див. А) Б) В) ). По натискуванню клавіши миші/клавіши на клавіатурі/команді меню характер руху повинен змінюватись. Повинна бути запрограмована серіалізація/де-серіалізація всіх об’єктів у файл, яка обов’язково повинна зберігати не тільки власне інформацію про стан макро- та мікро-об’єктів, але й про їх позицію на екрані. При серіалізації/де-серіалізації обов’язково повинні використовуватись діалогові вікна, щоб запитати у користувача ім’я файлу (функції GetOpenFileName та GetSaveFileName). У проекті повинні запрограмовані такі відносини між класами та об'єктами, які можуть бути наглядно проілюстровані на діаграмах агрегації, композиції, асоціації, використання, взаємодії, послідовності та стану.
Зміст ПЗ до курсової роботи
Індивідуальне завдання
АНОТАЦІЯ
ВСТУП
1 АНАЛІЗ СУЧАСНОГО СТАНУ ПИТАННЯ ТА ОБҐРУНТУВАННЯ ЗАВДАННЯ НА РОБОТУ
2 РОЗРОБКА ІНТЕРФЕЙСУ ПРОГРАМИ ТА ПРИКЛАДІВ ВИКОРИСТАННЯ
3 РОЗРОБКА ДІАГРАМ КЛАСІВ, ОБ’ЄКТІВ ТА СТАНУ
4 РОЗРОБКА ПІДСИСТЕМИ ГРАФІЧНОГО ВІДОБРАЖЕННЯ
5 ВИКОРИСТАННЯ ЗАСОБІВ ПРОГРАМУВАННЯ WINAPI
6 РОЗРОБКА ПІДСИСТЕМИ СЕРІАЛІЗАЦІЇ/ДЕСЕРІАЛІЗАЦІЇ ДАНИХ
7 КЕРІВНИЦТВО КОРИСТУВАЧА
ВИСНОВКИ
ПЕРЕЛІК ПОСИЛАНЬ
Додатки (за необхідністю)
Дата видачі ”14” січня 2013 р. Керівник _________________
(підпис)
Завдання отримав _________
(підпис)
ЗМІСТ
ВСТУП 2
1 АНАЛІЗ СУЧАСНОГО СТАНУ ПИТАННЯ ТА ОБҐРУНТУВАННЯ ЗАВДАННЯ НА РОБОТУ 5
Функція LoadImage: 17
ВСТУП
Таргани (Blattoptera, Blattaria, Blattodea) — ряд комах.
Таргани живуть по всьому світу і населяють вельми різноманітні райони. Харчується цей вид комах всім, що знаходиться в полі їхньої досяжності, але тільки декілька видів тарганів стали шкідниками, поселившись в житлах людей. На волі, в основному в тропіках, мешкає значно більша кількість видів тарганів.
Для того щоб привабити самця, самка таргана виділяє особливу речовину, що називається феромоном. Перед спаровуванням відбувається ритуал залицяння, під час якого партнери використовують вусики.
Яйця розташовуються в статевих органах самки в два ряди. Після запліднення самка складає їх у міцні хітинові „кишеньки" (оотеки), які носить, аж поки не знайде належного місця, де може спокійно їх відкласти. Деякі види носять оотеки на кінці черевця аж до того моменту, коли на світ з'являться молоді личинки. У деяких видів яєчка розвиваються безпосередньо в тілі самки, а на світ виходять личинки, що вже виклюнулися. Новонароджені личинки білі, але через декілька годин темнішають. У них ще немає крил, але вони вже схожі на батьків.
Протягом подальших декількох місяців вони декілька разів линяють, щоразу, після кожної линьки, трохи підростаючи.
Такий багатий раціон, як у таргана, мають лише небагато тварин. Ротовий апарат багатьох комах зазвичай має вузьку спеціалізацію, наприклад, призначений для смоктання плодових соків, крові або для розгризання твердої поживи. У тарганів ротовий апарат не має особливої спеціалізації, що обумовлювало б обмеження у виборі їжі, тому ці комахи можуть їсти й переварювати абсолютно все, що знаходять. Тарган корм гризе і лиже. Сильними щелепами він розгризає навіть тверді шматки їжі. Основу поживи тарганів складають рослини, але вони також поїдають падаль і послід тварин. Опинившись у закритих приміщеннях, можуть обгризати шпалери і корінці книг, які містять поживний для них клей. Деякі види їдять деревину, для перетравлювання якої необхідна наявність у травному тракті спеціальних симбіотичних бактерій.
Таргани, розвиваючись, пристосувалися ло різноманітних умов життя та різних місць існування. Більша частина з існуючих 3 500 видів тарганів мешкає в тропічній зоні, деякі - в широтах з прохолоднішим кліматом. Таргани надають перевагу вологим місцям, тож вони часто трапляються в лісах і на болотах. Деякі види зуміли пристосуватися до життя в умовах пустель, існують навіть печерні види. Більшість тарганів ведуть переважно нічний спосіб життя, але деякі тропічні види є активними і вдень. Не всі таргани мають крила, шо надають їм можливість літати, а в особин деяких видів - в основному у самок - крила взагалі можуть бути відсутніми. Навіть види, що літають, в повітрі переміщаються досить незграбно.
Деякі види тарганів (що складають близько 1 відсотка всіх видів) успішно уживаються поряд з людиною. У всьому світі вони поселяються в людських житлах, отримуючи там тепло та харчуючись залишками їжі, які люди випадково залишають на підлозі або в досяжних для цих комах шафах і коморах. Плоска будова тіла дозволяє тарганам пробиратися в різні щілини і знаходити саму різноманітну поживу, їжа, що містить крохмаль і цукор, є для більшості видів тарганів ласим шматочком. Нею, окрім продуктів, також можуть бути шкіряні вироби, палітурки книг, кімнатні рослини і т.п. Чотири види тропічних тарганів поширилися в усіх частинах світу, подорожуючи на бортах торгівельних кораблів, і згодом вони перетворилися на класичних шкідників. До цих видів належать прусак, або рудий тарган, чорний тарган, американський і австралійський таргани. Види, що поселилися в помірному кліматичному поясі, виживають лише в закритих приміщеннях, де знаходять належні для них умови протягом усього року. Лапландський тарган, що мешкає в полярних районах, поселився в будинках лапландців, де він переважно харчується сушеною рибою. Таргани, що забруднюють їжу своїми відходами, стали великим лихом. Деякі з них можуть бути навіть переносниками небезпечних для людини хвороб.
У Центральній Європі найчастіше трапляються чорний, або східний, тарган, прусак і американський тарган. Прусаки і чорні таргани потрапили до Європи з тропічних областей. У наші дні цих комах можна зустріти по всьому світу. Для життєдіяльності тарганам є необхідним тепло, тому в нашому кліматі вони можуть перезимувати тільки в приміщеннях, що обігріваються, наприклад, у пекарнях, квартирах тощо. Таргани мають округле, довгасте, злегка плескате тіло. Їхнє забарвлення варіює від світло-коричневого до майже чорного. Характерні відмінності - довгі лапки, дві пари крил, а також вусики, які нерідко бувають майже однієї довжини з тілом.
Таргани не полюбляють холоду, проте існує один вид - лапландський тарган, який здатний жити в полярних районах.
Таргани поїдають своїх мертвих родичів, проте ніколи не було помічено, щоб вони нападали один на одного.
Виділення деяких видів тарганів мають дуже неприємний запах. У такий спосіб ці створіння намагаються захиститися від мурашок, птахів і жаб.
Таргани - дуже стародавня група комах. Знайдені скам'янілості свідчать про те, що вони жили вже в Палеозої - Кам'яно-вугільному та в Пермському періодах і протягом 300 млн. років майже не змінилися.
Крила: обидві пари крил складаються одне на одному вздовж тіла. Передні крила жорсткі, шкірясті і виконують захисну функцію по відношенню до задніх крил, призначених для польоту.
Задня частина тіла: м'яка частина зі слабо розвиненими м'язами. У ній поміщається більша частина внутрішніх органів комахи.
Тулуб: від нього відходять три пари ніг і дві пари крил.
Голова: велика трикутна, з могутнім гризучим ротовим апаратом, зверху захищена щитоподібною передньоспинкою. Вусики багаточленикові, щетинкоподібні.
Населяють усю планету, переважно тропіки. Немає в полярних районах.
Таргани в нашому будинку - небажані гості. Люди винайшли величезну кількість засобів для їх знищення, та, попри все, тарганам нічого не загрожує.
1 Аналіз сучасного стану питання та обґрунтування завдання на роботу
Предметна область
Таргани усіх видів є суттєвою проблемою для всього людства. Вони поїдають харчові запаси, знищують посіви будь-яких культур, їдять книжки, одяг, кімнатні рослини, ліжка, та навіть руйнують будинки людей. Швидкість розмноження цих паразитів просто вражає, і якщо не зважати увагу на тарганів у ващій оселі – вони можуть нанести великої шкоди.
Відомо багато випадків, коли таргани захоплювали оселі тварин. Людскі будинки навіть спалювали щоб знищити тарганів, але це помилка – таргани полюбляють тепло, а втікти від полум’я для них не проблема.
На відміну від багатьох небажаних гостей, тарганів не так легко здихатись. Їх навіть помітити буває складно. Якщо по кухні бігає один тарган – їх вже десятки. Вони дуже малі – якщо, наприклад мишу, можна загнати в кут і схопити, то тарган просто знайде шпаринку і втече. Цей фізіологічний фактор справді перешкоджає в їх відлові. Такош вони відрізняются неперевершеною живучістю, навіть після того, як його розтоптали, тарган може продовжити втікати.
Порівняно недавно люди винаїшли хімікати, які вбивають тарганів, проте вони шкідливі також і для людей. Одже неможливо знаходитись в прміщенні де травлять тарганів, а без періодичної травлі вони будуть повертатись знов і знов. Потреба у повторненні данної процедури викликає великий дизкомфорт, адже вся сім’я повинна десь провести час, поки хімікати не вивітрятся, що може зайняти декілька днів. Крім того, в будинках де проживає не одна сім’я обрати час для протравки ще складніше.
Існують навіть спеціальні підприємства, як займаются винищенням комах. Вони працюють швидше, але зважаючи на живучість тарганів є певний мінімум часу, протягом якого будинок повністю не придатний до життя. Якщо не витримати цей період таргани знов розмножатся и все почнется спочатку, а послуги майстрів не дешеві.
Таргани поряд з людиною це справді проблема, але в дикій природі вони їдять те, що не їдять інши, слугують їжею для птахів чи навіть деяких людей. Одже повне винищення тарганів може призвести до порушеннь в харчовому ланцюгу, що може спричинити невідновну шкоду природі планети.
1.2 Існуючі реалізації
На сьогоднішній день існує багато смуляцій взаємодії людини та тарганів, наприклад:
Гра «Зйомка», в якій необхідно вбити тарганів, поки ті не довели людину до нервового зриву (мал. 1.1) .
Мал. 1.1 – Фрагмент гри «Зйомка»
Гра «Reaction з Оггі та таргани», в якій ви маєте вбивати тарганів за допомогою молтка (мал. 1.2).
Мал. 1.2 – Фрагмент гри «Reaction з Оггі та таргани»
Гра «Bug Time», в якій ви граєте дезінсектором, вбиваючи тарганів (мал. 1.3).
Мал. 1.3 – Фрагмент гри «Bug Time»
Гра «Виживання», в якій ви в ролі таргана втікаєте від ящірки в середовищі існування людини (мал. 1.4).
Мал. 1.4 – Фрагмент гри «Виживання»
Недоліком данних реалізацій є прив’язка таргана до людини та взаємодія з нею та недостатня степінь відтворення поведінки справжнього таргана.
Тому було прийнято рішення розробити власну реалізацію программи симуляції поведінки тарганів в незалежних від людини умовах.