Курсовая работа: Створення бази відеофільмів
Першою мовою програмування, в якій були запропоновані принципи об'єктної орієнтованості, була Симула. У момент своєї появи (у 1967 році), ця мова програмування запропонувала справді революційні ідеї: об'єкти, класи, віртуальні методи і ін., проте це все не було сприйнято сучасниками як щось грандіозне. Однак, більшість концепцій була розвинена Аланом Кейем і Деном Інгаллсом в мові Smalltalk. Саме вона стала першою широко поширеною об'єктно-орієнтованою мовою програмування.
С++ додає до С об'єктно-орієнтовані можливості. Він запроваджує класи, які забезпечують три найважливіші властивості ООП:
1. Інкапсуляція;
2. Наслідування;
3. Поліморфізм.
Додаткові властивості корисні, та не обов'язкові.
Розглянемо сі ці властивості детальніше.
Інкапсуляція
Основним способом організації інформації в С++ є класи. На відміну від типу структура (struct) мови С, яка може складатися лише з полів і вкладених типів, клас (class) С++ може складатися з полів, вкладених типів і функцій-членів (member functions). Члени класу бувають публічними (відкритими, public), захищеними (protected) і власними (закритими, приватними, private). В С++ тип структура аналогічний типу клас, відмінність в тому, що за умовчанням члени і базові класи в структурі публічні, а в класі - власні.
З відкритими (публічними) членами класу можна робити зовні класу все, що завгодно. До закритих (приватних) членів не можна звертатися ззовні класу, щоб не порушити цілісність даних класу. Спроба такого звертання спричине помилку компіляції. До таких членів можуть звертвтися тільки функції-члени класу. Крім відкритих і закритих членів класу, можуть бути ще і захищені - це члени, доступні класу, що містить їх, його друзям, а також похідним від нього класам. Такий захист членів називається інкапсуляцією.
Використовуючи інкапсуляцію, автор класу може захистити свої дані від некоректного використання. Крім того, вона замислювалася для полегшення спільної розробки класів. Малося на увазі, що при зміні способу зберігання даних, якщо вони оголошені як захищені або власні, не вимагається відповідних змін в класах, які використовують змінений клас. Навіть оператор доступу operator [] може бути визначений як така стандартна функція.
Наслідування
Для створення класів з доданою функціональністю вводять наслвдування. Клас-наслідувач має поля і функції-члени базового класу, але не має права звертатися до власних (private) полів і функцій базового класу. У цьому і полягає різниця між власними і захищеними членами.
Клас-наслідувач може додавати свої поля і функції або перевизначати функції базового класу.
За умовчанням, конструктор спадкоємця без параметрів викликає конструктор базового класу, а потім конструктори нестатичних членів-даних, що є екземплярами класів. Деструкція працює в зворотном порядку. Інші конструктори доводиться визначати кожного раз наново. На щастя, це можна зробити викликом конструктора базового класу.
Наслідувач – це більш ніж базовий клас, тому, якщо спадкоємств відкрите, то він може використовуватися скрізь, де використовується базовий клас, але не навпаки.
Наслідування буває публічним, захищеним і власним. При публічному спадкоємстві, публічні й захищені члени базового класу зберігають свій статус, а до власних не можуть звертатися навіть функції-члени спадкоємця. Захищене наслідування відрізняється тим, що при ньому публічні члени базового класу є захищеними членами спадкоємця. При власному спадкоємстві всі члени базового класу стають власними членами класу-спадкоємця. Таким чином, користувач похідного класу не може звертатися до членів базового класу, навіть якщо вони оголошені я публічні. Клас-наслідувач робить їх власними за допомогою власного спадкоємства. Як правило, публічне наслідування зустрічається значно частіше за інших.
Клас може бути спадкоємцем декількох класів. Це називається множинним наслідуванням. Такий клас володіє полями і функціями-членами всіх його предків.
Поліморфізм
Поліморфізмом в програмуванні називається перевизначення снаслідувачем функцій-членів базового класу.
У C++ є як статичний, так і динамічний поліморфізм, коли функція, що викликається, визначається під час виконання. Для цього функції-члени повинні бути віртуальними.
Чисто віртуальною функцією називається функція-член, яка оголошена зі специфікатором = 0:
Чисто віртуальна функція може бути залишена без визначення, крім випадку, коли вимагається зробити її виклик. Абстрактним класом називається такій, у якого є хоча б одна чисто віртуальна функція-член. Об'єкти таких класів створювати заборонено. Абстрактні класи часто використовуються як інтерфейси.
1.2 Типові середовища програмування та особливості мови С++
1.2.1 Borland C++ Buіlder
Система програмування Borland C++ Buіlder об'єднала в собі ідеї інтегрованого середовища розробки, реалізовані компанією в системах програмування Turbo Pascal й Borland Delphі з можливостями мови програмування C++. Історія цієї системи програмування починається з інтегрованого середовища розробки Borland Turbo.
Середовище Turbo являла собою реалізацію ідей, закладених компанією-розроблювачем у системі програмування Turbo Pascal для мови програмування C. Компанія Borland прагнула перенести вдалу реалізацію ідей інтегрованого середовища розробки на нову основу. Компілятор Turbo не був однопрохідним, і тому час компіляції вихідної програми перевищувало час компіляції аналогічної програми в Turbo Pascal. Крім того, у системі програмування використався стандартний компоновщик файлів, що виконують, MSDOS.
Сучасна реалізація Borland C++ Buіlder орієнтована на розробку результуючих програм, що виконуються під керуванням ОС Mіcrosoft Wіndows всіх типів. Сама система програмування Borland C++ Buіlder, як й Borland Delphі, також функціонує під керуванням ОС типу Mіcrosoft Wіndows. Вона повністю підтримує стандарт мови C, що уможливлює створення за допомогою даної системи програмування модулів і бібліотек, використовуваних в інших засобах розробки (чого дуже складно досягти за допомогою Borland Delphі).
За можливостями, зовнішнім виглядом й технологіями система програмування Borland C++ Buіlder схожа з системою програмування Borland Delphі. Вее основу покладені ті ж основні ідеї й технології. Структура класів мови C++ у системі програмування Borland C++ Buіlder побудована в тій же бібліотеці VCL (vіsual control lіbrary), у якій будується структура класів Object Pascal у системі програмування Borland Delphі. Правда, розроблювач, що створює програми на C++, може не користуватися класами VCL і взяти за основу будь-яку іншу бібліотеку, чого не можна сказати про розроблювача, що використає Object Pascal, набір доступних бібліотек для останньої мови сильно обмежений.