1   2   3
Ім'я файлу: Курсова Робота ООП.docx
Розширення: docx
Розмір: 153кб.
Дата: 22.11.2021
скачати

ПРИВАТНЕ АКЦІОНЕРНЕ ТОВАРИСТВО «ВИЩИЙ НАВЧАЛЬНИЙ ЗАКЛАД

МІЖРЕГІОНАЛЬНА АКАДЕМІЯ УПРАВЛІННЯ ПЕРСОНАЛОМ”»


ФАКУЛЬТЕТ КОМП’ЮТЕРНО-ІНФОРМАЦІЙНИХ ТЕХНОЛОГІЙ
Курсова робота з дисципліни:

" Об’єктно-орієнтоване програмування"

Спеціальність:

Інженерія Программного Забезпечення

Студент:____

Викладач: ______.

Тема: Розробка гри на мові С++

Анотація

В даній курсовій роботі була виконана розробка програми на мові програмування С++ з використанням об’єктно-орієнтованого програмування, яка включала в себе роботу з файлами, класами, обробку числової інформації і роботу з графікою.

Зміст:



  1. Історія С++

  2. Історія Гри «Камінь, Ножниці, Бумага»

  3. Опис Коду Програми

Мова програмування Сi була розроблена в 1972 р. Деннисом Рiтчi, який є одним з авторів операцiйноi системи UNIX. Мова програмування Сi пізніше була використана для програмування цiеi системи, а також багатої бібліотеки обслуговуючих програм, оскільки, являлася універсальною мовою загального призначення, мова Сi зручна для програмування системних задач. Поява мікрокомп’ютерів закріпила позицii мови Сi. Було створено близько 30 його нових компіляторів, а після проведення Американським національним інститутом стандартів (American National Standards Institute) робiт по стандартизацii в області програмування почали розроблятися компілятори, що вiдповiдали опублікованому весною 1986 р. проекту стандарту. Першим компілятором по стандарту ANSI являлась система Турбо Сi версii 1.0 фiрми Borland International. Ця система, що складається з компілятора мови Сi, пов'язаного з ним редактора, компоновщика i бібліотек, забезпечила користувачам зручну інтегровану операційну оболонку, а також суттєво полегшувала професійне програмування, в якому визначальними параметрами є висока швидкість компiляцii, висока якість згенерованого коду та невеликий об’єм оперативної пам’ять. Мова С серед сучасних мов програмування є однією iз найбільш поширених. Вона універсальна, але найбільш ефективне її використання в задачах системного програмування - розробки трансляторів, операційних систем, інструментальних засобів. Мова С добре зарекомендувала себе ефективністю, лаконічністю запису алгоритмів, логічною стрункістю програм. У багатьох випадках програми, написані на мові С, можна порівняти по швидкості з програмами, написаними на мові Асемблера, при цьому вони більш наглядні i прості у супроводі. Основними перевагами мови С вважаться висока переча написаних на нiй програм мiж комп'ютерами з різною архітектурою, мiж різними операційними середовищами. Транслятори мови С дiять практично на всiх персональних комп'ютерах, які використовуються в наш час. Перечислимо окремі особливості мови С: -в мові С реалізовані окремі операцii низького рівня (а саме операцii над бітами). Окремі з таких операцій напряму вiдповiдають машинним командам; - мова С підтримує механізм показчикiв на змiннi i функцii; -базовi типи даних мови С відображають тi ж об’єкти, з якими потрібно мати справу програмі на мові Асемблера,- байти, машинні слова, символи, строки; - як в нiякiй iншiй мові програмування високого рівня в мові С накладаються лише незначні обмеження на перетворення типів даних; - не дивлячись на ефективність і потужність конструкцii мови С, він відносно малий по об'єму, але в системне оточення мови С входить бібліотека стандартних функцій, в який реалізовані встроенi оператори введення - виведення, динамічного розподілу пам’ять, управління процесами i т.д.

1. Історія С++

Чому C ++ :

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

С # - це нова мова, розроблений Мiсгоsоft для мережевої платформи. По суті С # є різновидом С ++, і незважаючи на ряд принципових відмінностей, мови С # і С ++ збігаються приблизно на 90%. Ймовірно, пройде чимало часу, перш ніж мова С # складе серйозну конкуренцію мови С ++; але навіть якщо це і станеться, то знання мови С ++ виявиться істотною перевагою.

С ++ є мовою програмування загального призначення. Природна для нього область застосування - системне програмування, що розуміється в широкому сенсі цього слова. Крім того, С ++ успішно використовується в багатьох областях додатки, далеко виходять за зазначені рамки. Реалізації С ++ тепер є на всіх машинах, починаючи з найскромніших мікрокомп'ютерів - до найбільших супер-ЕОМ, і практично для всіх операційних систем.

Виникнення і еволюція мови C ++ :

Бйорн Страуструп є розробником мови С ++ і творцем першого транслятора. Він - співробітник науково-дослідного обчислювального центру AT & T Bell Laboratories в Мюррей Хілл (Нью-Джерсі, США). Він отримав звання магістра математики та обчислювальної техніки в університеті м Аарус (Данія), а лікарське звання з обчислювальної техніки в Кембриджський університет (Англія). Він спеціалізується в області розподілених систем, операційних систем, моделювання та програмування. Разом з М. А. Елліс він є автором повного керівництва по мові С ++ - "Керівництво по С ++ з примітками".

Безумовно С ++ багатьом зобов'язаний мови С, який зберігається як його підмножина. Збережені і всі властиві З кошти низького рівня, призначені для вирішення найбільш нагальних завдань системного програмування. С, в свою чергу, багато чим зобов'язаний своєму попередникові мови BCPL . Коментар мови BCPL був відновлений в С ++. Ще одним джерелом натхнення була мова SIMULA-67; саме з нього була запозичена концепція класів (разом c похідними класами і віртуальними функціями). Можливість в С ++ перевантаження операцій і свобода розміщення описів всюди, де може зустрічатися оператор, нагадують мову Алгол-68.

Більш ранні версії мови, що отримали назву "С з класами", використовувалися, починаючи з 1980 р. Ця мова виникла тому, що автору знадобилося написати програми моделювання, керовані перериваннями. Мова SIMULA-67 ідеально підходить для цього, якщо не враховувати ефективність. Мова "С з класами" використовувався для великих завдань моделювання. Суворій перевірці піддалися тоді можливості написання на ньому програм, для яких критичні ресурси часу і пам'яті. У цій мові бракувало перевантаження операцій, посилань, віртуальних функцій і багатьох інших можливостей. Вперше С ++ вийшов за межі дослідницької групи, в якій працював автор, в липні 1983 р проте тоді багато можливостей С ++ ще не були розроблені.

Назва С ++ (Сі плюс плюс), було придумано Ріком Маскітті влітку 1983 г. Це назва відображає еволюційний характер змін мови С. Позначення ++ відноситься до операції нарощування С. Трохи більше коротку назву З + є синтаксичної помилкою. Крім того, воно вже було використано як назва зовсім іншої мови. Знавці семантики З знаходять, що С ++ гірше, ніж ++ С. Мова не отримав назви D, оскільки він є розширенням С, і в ньому не робиться спроб вирішити будь-які проблеми за рахунок відмови від можливостей С.

Спочатку С ++ був задуманий для того, щоб автору і його друзям не треба було програмувати на асемблері, С або інших сучасних мовах високого рівня. Основне його призначення - спростити і зробити більш приємним процес програмування для окремого програміста. До недавнього часу не було плану розробки С ++ на папері. Проектування, реалізація і документування йшли паралельно. Ніколи не існувало "проекту С ++" або "Комітету з розробки С ++". Тому мова розвивалася і продовжує розвиватися так, щоб подолати всі проблеми, з якими зіткнулися користувачі. Поштовхами до розвитку служать також і обговорення автором всіх проблем з його друзями і колегами.

З моменту виходу в світ першого видання цієї книги мова С ++ зазнав суттєвих змін і уточнень. В основному це стосується вирішення неоднозначності при перевантаженні, зв'язуванні і управлінні пам'яттю. Разом з тим, були внесені незначні зміни з метою збільшити сумісність з язиком С. Були також введені деякі узагальнення і суттєві розширення, як то: множинне спадкування, функції-члени зі специфікаціями static і const, захищені члени (protected), шаблони типу і обробка особливих ситуацій. Всі ці розширення і доопрацювання були націлені на те, щоб С ++ стала мовою, на якому можна створювати і використовувати бібліотеки.

Інші розширення, введені за період між 1985 і одна тисяча дев'ятсот дев'яносто один р.р. (Такі як множинне спадкування, статичні функції-члени і чисті віртуальні функції), швидше з'явилися в, результаті узагальнення досвіду програмування на С ++, ніж були почерпнуті з інших мов.

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

Приблизно в 1987 р стало очевидно, що робота по стандартизації С ++ неминуча і що слід негайно приступити до створення основи для неї [22].

Фірма AT & T Bell Laboratories внесла основний внесок в цю роботу. Близько ста представників з близько 20 організацій вивчали і коментували те, що стало сучасною версією довідкового керівництва і вихідними матеріалами для ANSI по стандартизації. С ++. Нарешті, з ініціативи фірми Hewlett-Packard в грудні 1989 р в складі ANSI був утворений комітет X3J16. Очікується, що роботи по стандартизації С ++ в ANSI (Американський стандарт) стануть складовою частиною робіт по стандартизації силами ISO (Міжнародної організації зі стандартизації).

С ++ розвивався одночасно з розвитком деяких фундаментальних класів.

Зауваження по проекту мови

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

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

З мови виключалися можливості, які можуть привести до накладних витрат пам'яті або часу виконання, навіть якщо вони безпосередньо не використовуються в програмі. Наприклад, було відкинуто пропозицію зберігати в кожному об'єкті деяку службову інформацію. Якщо користувач описав структуру, яка містить дві величини, що займають по 16 розрядів, то гарантується, що вона поміститься в 32-х розрядний регістр.

Мова С ++ проектувався для використання в досить традиційному середовищі, а саме: в системі програмування С операційної системи UNIX. Але є цілком обґрунтовані аргументи на користь використання С ++ в багатшою програмному середовищі. Такі можливості, як динамічне завантаження, розвинені системи трансляції та бази даних для зберігання визначень типів, можна успішно використовувати без шкоди для мови.

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

Порівняння мов С ++ і С

Вибір С в якості базової мови для С ++ пояснюється наступними його перевагами:

(1) універсальність, стислість і відносно низький рівень;

(2) адекватність більшості завдань системного програмування;

(3) він йде в будь-якій системі і на будь-якій машині;

(4) повністю підходить для програмного середовища UNIX.

В С існують свої проблеми, але в мові, що розробляється "з нуля" вони з'явилися б теж, а проблеми С, добре відомі. Більш важливим є те, що орієнтація на С дозволила використовувати мову "С з класами" як корисний (хоча і не дуже зручний) інструмент протягом перших місяців роздумів про введення в С класів в стилі Симула.

С ++ став використовуватися ширше, але в міру зростання його можливостей, що виходять за межі С, знову і знову виникала проблема сумісності. Ясно, що відмовившись від частини спадщини С, можна уникнути деяких проблем. Це не було зроблено з наступних причин:

(1) існують мільйони рядків програм на С, які можна поліпшити за допомогою С ++, але за умови, що повною перепису їх на мову С ++ не буде потрібно;

(2) існують мільйони рядків бібліотечних функцій і службових програм на С, які можна було б використовувати в С ++ за умов сумісності обох мов на стадії зв'язування і їх великого синтаксичного подібності;

(3) існують сотні тисяч програмістів, які знають С; їм досить опанувати тільки новими засобами С ++ і не треба вивчати основ мови;

(4) оскільки С і С ++ будуть використовуватися одними і тими ж людьми на одних і тих же системах багато років, відмінності між мовами повинні бути або мінімальними, або максимальними, щоб звести до мінімуму кількість помилок і непорозумінь. Опис С ++ було перероблено так, щоб гарантувати, що будь-яка допустима в обох мовах конструкція означала в них одне і те ж.

Як мова, так і стандартні бібліотеки С ++ проектувалися в розрахунку на переносимість. Наявні реалізації мови будуть працювати в більшості систем, що підтримують С. В програмах на С ++ можна використовувати бібліотеки С. Більшість службових програм, розрахованих на С, можна використовувати і в С ++.

Мова С сам розвивався в останні кілька років, що частково було пов'язано з розробкою С ++ . Стандарт ANSI для С містить, наприклад, синтаксис опису функцій, запозичений з мови "С з класами". Відбувається взаємне запозичення, наприклад, тип покажчика void * був придуманий для ANSI С, а вперше реалізований в С ++. Як було обіцяно в першому виданні цієї книги, опис С ++ було доопрацьовано, щоб виключити невиправдані розбіжності. Тепер С ++ більш сумісний з мовою С, ніж це було спочатку. В ідеалі С ++ повинен максимально наближатися до ANSI C, але не більше. Стовідсоткової сумісності ніколи не було і не буде, оскільки це порушить надійність типів і узгодженість використання вбудованих і призначених для користувача типів, а ці властивості завжди були одними з головних для С ++.

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

Зауваження для програмістів на С

Чим краще програміст знає С, тим важче буде для нього при програмуванні на С ++ відійти від стилю програмування на С. Так він втрачає потенційні переваги С ++.

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

Ефективність і структура

Розвиток мови С ++ відбувалося на базі мови С, і, за невеликим винятком, С був збережений як підмножини C ++. Базова мова С був спроектований таким чином, що є дуже тісний зв'язок між типами, операціями, операторами і об'єктами, з якими безпосередньо працює машина, тобто числами, символами і адресами. За винятком операцій new, delete і throw, а також перевіряється блоку, для виконання операторів і виразів С ++ не потрібно прихованої динамічної апаратної або програмної підтримки.

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

У проекті С ++ особлива увага приділяється структуруванню програми. Це викликано збільшенням розмірів програм з часу появи С. Невелику програму (скажімо, не більше 1000 рядків) можна змусити з упертості працювати, порушуючи всі правила хорошого стилю програмування. Однак, діючи так, людина вже не зможе впоратися з великою програмою. Якщо у вашої програми в 10 000 рядків погана структура, то ви виявите, що нові помилки з'являються в ній так само швидко, як видаляються старі. С ++ створювався з метою, щоб більшу програму можна було структурувати таким чином, щоб одній людині не довелося працювати з текстом в 25000 рядків. В даний час можна вважати, що ця мета повністю досягнута.

Існують, звичайно, програми ще більшого розміру. Однак ті з них, які дійсно використовуються, зазвичай можна розбити на кілька практично незалежних частин, кожна з яких має значно менший згаданого розмір. Природно, труднощі написання і супроводження програми визначається не тільки числом рядків тексту, а й складністю предметної області. Так що наведені тут числа, якими обґрунтовувалися наші міркування, не треба сприймати надто серйозно.

На жаль, не всяку частину програми можна добре структурувати, зробити незалежною від апаратури, досить зрозумілою і т.д. В С ++ є кошти, безпосередньо і ефективно представляють апаратні можливості. Їх використання дозволяє позбутися від занепокоєння про надійність і простоті розуміння програми. Такі частини програми можна приховувати, надаючи надійний і простий інтерфейс з ними.

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

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

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

  1   2   3

скачати

© Усі права захищені
написати до нас