Аналіз предметної області, постановка задачі дослідження з обраної області

Автор работы: Пользователь скрыл имя, 13 Апреля 2014 в 02:42, реферат

Краткое описание

Робота присвячена розробці нескладної комп’ютерної гри. Таким чином, повинна бути обрана мова програмування, що є зручною для виконання та інші технічні засоби, що будуть враховані при розробці.
В даній курсовій роботі автор ставить перед собою наступні задачі:
1. Розробити інтерфейс Меню, в якому можна передивлятись дані розробника та гру.
2. В програмі повинні бути різні режими гри та різна складність.
3. Повинна бути присутня можливість збереження результатів та їх вивід на екран при наступному запуску програми.
4. Програма повинна бути зручною для користувача та нескладною для використання.

Вложенные файлы: 1 файл

kursova.doc

— 588.50 Кб (Скачать файл)

Погана підтримка модульності. Підключення інтерфейсу зовнішнього модуля через препроцесорну вставку заголовного файлу (#include) серйозно уповільнює компіляцію, при підключенні великої кількості модулів. Для усунення цього недоліку, багато компіляторів реалізують механізм прекомпіляциі заголовних файлів (англ. Precompiled Headers).

Недостача інформації про типи даних під час компіляції (CTTI).

Мова C++ є складною для вивчення і для компіляції.

Деякі перетворення типів неінтуїтивні. Зокрема, операція над беззнаковим і знаковим числами видає беззнаковий результат.

Препроцесор С++ (успадкований від C) дуже примітивний. Це приводить з одного боку до того, що з його допомогою не можна (або важко) здійснювати деякі завдання метапрограмування, а з іншою, в наслідку своєї примітивності, він часто приводить до помилок і вимагає багато дій з обходу потенційних проблем. Деякі мови програмування (наприклад, Scheme і Nemerle) мають набагато могутніші і безпечніші системи метапрограмування (також звані макросами, але макроси С/С++ вони мало нагадують).

Хоча декларується, що С++ мультипарадигмена мова, реально в мові відсутня підтримка функціонального програмування. Частково, даний пропуск усувається різними бібліотеками (Loki, Boost) що використовують засоби метапрограмування для розширення мови функціональними конструкціями (наприклад, підтримкою лямбд/анонімних методів), але якість подібних рішень значно поступається якості вбудованих у функціональні мови рішень. Такі можливості функціональних мов, як зіставлення зі зразком взагалі украй складно емулювати засобами метапрограмування.

 

Порівняння C++ з мовою Java

Мова С++ з появою перших трансляторів знайшла відразу ж дуже широке розповсюдження, на ній було створено величезну кількість програм і застосувань. У міру накопичення досвіду створення великих програмних систем спливли недоліки, які спонукали до пошуку альтернативних рішень. Таким альтернативним рішенням стала мова Java, яка в деяких областях стала конкурувати у популярності з C++, а фірма Майкрософт запропонувала мову C# як нову мову, що розвиває принципи C++ і що використовує переваги мови Java. Надалі з'явилася мова Nemerle, об'єднуюча переваги C# з можливістю функціонального програмування. Останнім часом з'явилася спроба об'єднання ефективності C++, безпеки і швидкості розробки, як в Java і C# — була запропонована мова D, яка поки не отримала широкого визнання.

Мова Java володіє такими особливостями, яких немає в мові C++ :

Java є типобезпечною мовою. Типобезпека  гарантує відсутність в програмах  помилок, що важко знайти і  які пов'язані з невірною інтерпретацією  пам'яті комп'ютера. Це робить  процес розробки надійнішим і  передбаченим, а отже швидшим. Так само це дозволяє привертати до розробки програмістів, що мають меншу кваліфікацію і мати великі групи розробників.

Java-код компілюються спочатку  не в машинний код, а в певний  проміжний код, який надалі інтерпретується  або компілюється, тоді як багато C++ компіляторів орієнтіровані на компіляцію в машинний код заданої платформи.

У мові Java є чіткі певні стандарти на введення-виведення, графіку, геометрію, діалог, доступ до баз даних і інших типових застосувань. Завдяки цим особливостям, застосунки на Java мають значно кращу кросплатформенність, ніж С++, і часто, будучи написані для певного комп'ютера і операційної системи, працюють під іншими системами без змін. Програмісти, що пишуть на мові Java, не залежать від пакетів, нав'язаних розробниками компіляторів на дане конкретне середовище, що різко спрощує портування програм.

У мові Java реалізована повноцінна збірка сміття, якої немає в C++. Немає в С++ і засобів перевірки правильності вказівників. З іншого боку, C++ володіє набором засобів (конструктори і деструктори, стандартні шаблони, посилання), що дозволяють майже повністю виключити виділення і звільнення пам'яті вручну і небезпечні операції з вказівниками. Проте таке виключення вимагає певної культури програмування, тоді як в мові Java воно реалізується автоматично.

Мова Java є чисто об'єктно-орієнтованою, тоді як C++ підтримує як об'єктно-орієнтоване, так і процедурне програмування.

В C++ відсутня повноцінна інформація про типи під час виконання RTTI. Цю можливість можна було б реалізувати в C++, маючи повну інформацію про типи під час компіляції CTTI.

У C++ є можливість введення призначеного для користувача синтаксису за допомогою #define, що може привести до того, що модулі у великих пакетах програм стають сильно пов'язані один з одним. Це різко знижує надійність пакетів і можливість організації розділених модулів. З іншого боку, С++ надає достатньо засобів (константи, шаблони, вбудовані функції) для того, щоб практично повністю виключити використання #define.

Ці відмінності призводять до запеклих суперечок між прихильниками двох мов про те, яка мова краща. Прихильники Java вважають ці особливості перевагами; прихильники C++ вважають, що у багатьох випадках ці особливості є недоліками, зокрема:

  • Ціною переносимості є вимога наявності на комп'ютері віртуальної Java-машини, що приводить до уповільнення обчислень і практичної неможливості використання нових можливостей апаратної архітектури.
  • Збірка сміття призводить до втрати ефективності.
  • Стандарти на графіку, доступ до баз даних тощо є недоліком, якщо програміст хоче визначити свій власний стандарт.
  • Вказівники у багатьох випадках є могутніми, або навіть необхідними засобом, а їхнє безконтрольне використання небезпечне лише в невмілих руках.
  • Підтримка процедурного програмування є корисною.[3, 4]

 

Далеко не всі програмісти є прихильниками однієї з мов. На думку більшості програмістів, Java і C++ не є конкурентами, тому що мають різні області застосування. Інші вважають, що вибір мови для багатьох завдань є питанням особистого смаку. На мою думку, саме для даного завдання буде найдоцільнішою для використання мова С++, адже вона є найуживанішою для програмування ігор та невеликих та малих за розміром програм.

 

 

 

 

 

 

 

 

 

 

 

2 РОЗРОБКА ІНТЕРФЕЙСУ

Діалогове вікно — це особливий тип вікна, яке задає запитання і дозволяє вибрати варіанти виконання дії, або ж інформує користувача. Діалогові вікна зазвичай відображаються тоді, коли програмі для подальшої роботи потрібна ваша відповідь.

     На рисунку 2.1 продемонстровані діалогові вікна, що використовуються у програмі курсової роботи.


 


 

 


 

 

 

 Рисунок 2.1 – Структурна схема графічного інтерфейсу програми.

 

У діалоговому вікні головної форми відображено два поля, вибравши яке система активізує режим «гри» чи справки. Також в додатковому полі висвічується набір параметрів для зміни.

У діалоговому вікні гри є головне поле – нова гра, та три додаткових поля – кількість параметрів гри: режим гри, режим «перший хрестик» та параметри поля. Також є вікно виходу, де користувач обирає чи вийти йому з гри.

Діалогове вікно справки складається з таблиці – інформації про розробника.

 

 

3 АНАЛІЗ ТА ПРОЕКТУВАННЯ ПРОГРАМНОЇ СИСТЕМИ

 3.1 Діаграми класів

Діаграма класів (class diagram) - діаграма мови UML, на якій представлена сукупність декларативних або статичних елементів моделі. Діаграма класів (рисунок 3.1) призначена для представлення статичної структури моделі системи в термінології класів об'єктно-орієнтованого програмування. При цьому діаграма класів може містити інтерфейси, пакети, відношення і окремі екземпляри класифікаторів.

Рисунок 3.1 – Приклад діаграми абстрактного класу в UML

 

3. 2 Діаграми кооперації 

Поняття кооперації (collaboration) є одним з фундаментальних понять у мові UML. Воно служить для позначення множини взаємодіючих з певною метою об'єктів в загальному контексті модельованої системи.

Мета самої кооперації полягає в тому, щоб специфікувати особливості реалізації окремих найбільш значущих операцій в системі. Кооперація визначає структуру поведінки системи в термінах взаємодії учасників цієї кооперації. Діаграма кооперації рівня (рисунок 3.2) специфікації показує ролі, які грають беруть участь у взаємодії елементи. Елементами кооперації на цьому рівні є класи і асоціації, які позначають окремі ролі класифікаторів і асоціації між учасниками кооперації. Діаграма кооперації рівня прикладів представляється сукупністю об'єктів (екземпляри класів) і зв'язків (екземпляри асоціацій). При цьому зв'язку доповнюються стрілками повідомлень. На даному рівні показуються тільки об'єкти, що мають безпосереднє відношення до реалізації операції або класифікатора. При цьому зовсім не обов'язково зображувати всі властивості або всі асоціації, оскільки на діаграмі кооперації присутні тільки ролі класифікаторів, але не самі класифікатори. Таким чином, у той час як класифікатор вимагає повного опису всіх своїх екземплярів, роль класифікатора вимагає опису тільки тих властивостей і асоціацій, які необхідні для участі в окремій кооперації.

Рисунок 3.2 – Приклад діаграми кооперації в UML

 

3.3 UML -  уніфікована мова моделювання

UML (англ. Unified Modeling Language) — уніфікована мова моделювання, використовується у парадигмі об'єктно-орієнтованого програмування. Є невід'ємною частиною уніфікованого процесу розробки програмного забезпечення. UML є мовою широкого профілю, це відкритий стандарт, що використовує графічні позначення для створення абстрактної моделі системи, називаної UML-моделлю. UML був створений для визначення, візуалізації, проектування й документування в основному програмних систем. UML не є мовою програмування, але в засобах виконання UML-моделей як інтерпретованого коду можлива кодогенерація.

 Перша версія (1.0) UML вийшла 13 січня 1997, вона була створена за запитом Object Management Group (OMG) — організації, відповідальної за прийняття стандартів в галузі об'єктних технологій і баз даних. Після обговорення, у вересні 1997 року, версія 1.1 UML була представлена на голосування в OMG. Розробку UML підтримали і вже тоді використовували як стандарт такі гранди ринку інформаційних технологій, як Microsoft,  IBM, Hewlett-Packard,  Oracle,  DEC, Sybase, Logic Works й інші.

UML може бути  застосовано на всіх етапах  життєвого циклу аналізу бізнес-систем  і розробки прикладних програм. Різні види діаграм які підтримуються UML, і найбагатший набір можливостей представлення певних аспектів системи робить UML універсальним засобом опису як програмних, так і ділових систем.

Діаграми дають можливість представити систему (як ділову, так і програмну) у такому вигляді, щоб її можна було легко перевести в програмний код. Основною причиною використання мови UML є спілкування розробників між собою. Крім того, UML спеціально створювалася для оптимізації процесу розробки програмних систем, що дозволяє збільшити ефективність їх реалізації у кілька разів і помітно поліпшити якість кінцевого продукту.

UML прекрасно  зарекомендувала себе в багатьох  успішних програмних проектах. Засоби автоматичної генерації кодів дозволяють перетворювати моделі мовою UML у вихідний код об’єктно-орієнтованих мов програмування, що ще більш прискорює процес розробки.

Практично усі CASE-засоби (програми автоматизації процесу аналізу і проектування) мають підтримку UML. Моделі розроблені в UML, дозволяють значно спростити процес кодування і направити зусилля програмістів безпосередньо на реалізацію системи.

Діаграми підвищують супроводжуваність проекту і полегшують розробку документації.

При модифікації системи об'єктний підхід дозволяє легко включати в систему нові об'єкти і виключати застарілі без істотної зміни її життєздатності. Використання побудованої моделі при модифікаціях системи дає можливість усунути небажані наслідки змін, оскільки вони не ламають структури системи, а тільки змінюють поведінку об'єктів.

В додатку В наведена UML діаграма класів розробленої гри. Вона зображена за допомогою середовища розробки UML та графічного редактору; програма, розроблена на С++, була тестована за допомогою середовища Eclipse.

 На діаграмі  повністю відображена ієрархія  класів та відносини між ними.  [6, 7]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4 ПРОГРАМНА РЕАЛІЗАЦІЯ  СПРОЕКТОВАНОЇ СИСТЕМИ

 

4.1 Середовище розробки  програмної системи

      Eclipse — вільне модульне інтегроване середовище розробки програмного забезпечення. Розробляється і підтримується Eclipse Foundation. Написаний в основному на Java, і може бути використаний для розробки застосунків на Java і, за допомогою різніх плагінів, на інших мовах програмування, включаючи Ada, C, C++, COBOL, Perl, PHP, Python, R, Ruby, Scala, Clojure таScheme. Середовища розробки зокрема включають Eclipse ADT (Ada Development Toolkit) для Ada, Eclipse CDT для C/C++, Eclipse JDT для Java, Eclipse PDT для PHP.

      Початок коду йде  від IBM VisualAge, він був розрахований  на розробників Java, складаючи Java Development Tools (JDT). Але користувачі могли  розширяти можливості, встановлюючи  написані для програмного каркасу Eclipse плагіни, такі як інструменти розробки під інші мови програмування, і могли писати і вносити свої власні плагіни і модулі.

 Eclipse - в першу чергу служить платформою для розробки розширень, чим він і завоював популярність: будь-який розробник може розширити Eclipse своїми модулями. Вже існують Java Development Tools (JDT), C / C + + Development Tools (CDT), розроблювані інженерами QNX разом із IBM, і кошти для мов Ada (GNATbench, Hibachi), COBOL, FORTRAN, PHP та ін.. від різних розробників. Безліч розширень доповнює середовище Eclipse менеджерами для роботи з базами даних, серверами додатків і ін.. Eclipse JDT (Java Development Tools) - найбільш відомий модуль, націлений на групову розробку: середовище інтегроване з системами управління версіями - CVS, GIT в основний постачання, для інших систем (наприклад, Subversion, MS SourceSafe) існують плагіни. Також пропонує підтримку зв'язку між IDE і системою управління завданнями (помилками). В основній поставці включена підтримка трекера помилок Bugzilla, також є безліч розширень для підтримки інших трекерів (Trac, Jira та ін.) В силу безкоштовності і високої якості, Eclipse в багатьох організаціях є корпоративним стандартом для розробки додатків.

Eclipse написаний на Java, тому є платформо-незалежним продуктом, за винятком бібліотеки SWT, яка розробляється для всіх поширених платформ Бібліотека SWT використовується замість стандартної для Java бібліотеки Swing. Вона повністю спирається на операційну систему, що забезпечує швидкість і натуральний зовнішній вигляд користувальницького інтерфейсу, але іноді викликає на різних платформах проблеми сумісності та стійкості додатків.

Информация о работе Аналіз предметної області, постановка задачі дослідження з обраної області