- •Базові поняття об’єктно-орієнтованого програмування.
- •Технології та інструментальні засоби проектування програмних систем.
- •Оголошення та структура класу.
- •Потокове введення – виведення.
- •Елементи класу.
- •Конструктори та деструктори.
- •Об’єкти класу.
- •Перевантаження операцій.
- •Види класів.
- •Одинарне наслідування класів.
- •Множинне наслідування класів.
- •Поліморфізм віртуальних функцій.
- •Параметризовані функції та класи.
- •Перетворення типів.
- •Керування виключними станами.
- •Програмування для Windows.
ІІ. Дисципліна – „Об’єктно-орієнтоване програмування”
1. Аргументи функцій мови С++ з типом посилання мають властивості:
г) розіменованого вказівника д) класу |
2. Функції мови С++ можуть бути перевантажені, якщо вони: а) відрізняються типами результату б) відрізняються кількістю або типами аргументів в) відрізняються типами аргументів T, T&, const T, const T&, volatile T, де T – деякий тип г) відрізняються типами аргументів T*, const T* д) відрізняються аргументами за замовчуванням |
3. Принцип інкапсуляції полягає у: а)об’єднанні даних та методів у класі б)здійсненні однакових дій різними способами в)перевантаженні операцій г)перевизначенні функцій д) заховуванні елементів класу оголошенням класу |
4. Принцип наслідування полягає у:
в) імпорті оголошень даних та методів базового класу у похідний клас г) оголошенні одного класу у межах іншого класу д) оголошенні об’єкта одного класу у протоколі іншого класу |
5. Принцип поліморфізму полягає у:
|
6. Принцип пізнього зв’язування полягає у:
|
7. Клас мови С++ - це:
|
8. Об’єкт (екземпляр) класу – це:
|
9. Встановіть відповідність між оголошенням рівнів захисту та правами доступу до елементів класу. Рівні захисту:
Права доступу: A. дані та методи класу доступні з усіх місць програми у межах дії встановленого простору імен B. дані та методи доступні тільки для методів і друзів даного класу C. дані та методи доступні для методів і друзів даного класу та похідних від нього класів D. дані та методи доступні тільки для методів даного класу
|
10. Метод класу не може бути:
|
11. Які властивості не притаманні конструктору:
|
12. Вкажіть, яке твердження для конструктора копіювання є хибним:
|
13. Які властивості притаманні деструктору:
|
14. Друг класу:
|
15. Операторні методи, крім (), [], ->, =, new, delete, не можуть бути:
|
16. Вкажіть порушення доступу до елементів класу при наслідуванні:
|
17. Віртуальний метод не може бути:
|
18. Вкажіть правильну відповідність між рівнями захисту даних для protected-режиму наслідування класів. Базовий клас: 1-private; 2-protected, 3-public Наслідуваний клас: A-private; B-protected, C-public
|
19. Вкажіть яке твердження стосовно віртуальних методів є неправильним:
|
20. Виберіть невірне твердження:
|
21. Визначіть дію, яка порушує послідовність виклику конструкторів при множинному наслідуванні класів:
|
22. Для забезпечення існування тільки одного екземпляра класу при множинному наслідуванні з загальною базою режим наслідування повинен бути:
|
23. Який із операторів забезпечує поліморфне приведення типів:
|
24. Нехай А є іменем базового, а B – похідного класу. Визначіть, який обробник буде викликано при викиданні виключної ситуації throw B:
|
25. Визначіть, яке твердження про операцію приведення типу є невірним:
|
26. Якщо бінарна операція перевантажується як член класу, то вона:
|
27. Визначіть варіант, коли не викликається конструктор перетворення типу:
|
28. Статичні дані класу:
|
29. Вкажіть правильний варіант потокового введення з клавіатури дійсного числа (float х;):
|
30. Вкажіть правильний варіант потокового введення дійсного числа з двійкового файлу: char fname[]="1.txt"; float x; ifstream ifs(fname,ios::in|ios::binary);
|
ІІ. Дисципліна – „Об’єктно-орієнтоване програмування”
Базові поняття об’єктно-орієнтованого програмування.
Об'єктно-орієнтоване програмування - це новий спосіб підходу до програмування. Таке програмування, узявши кращі риси структурного програмування, доповнює його новими ідеями, які переводять в нову якість підхід до створення програм. Найбільш важливе поняття мов об'єктно-орієнтованого програмування - це поняття об'єкту (object). Об'єкт - це логічна одиниця, яка містить дані і правила (методи) обробки цих даних. У мові С++ як такі правила обробки виступають функції, тобто об'єкт в Borland C++ об'єднує в собі дані і функції, оброблювальні ці дані. Одним з найголовніших понять мови С++ є поняття класу (class). На мові С++ для того, щоб визначити об'єкт, треба спочатку визначити його форму за допомогою ключового слова class. Найближчою аналогією класу є структура. Пам'ять виділяється об'єкту тільки тоді, коли клас використовується для його створення.
Цей процес називається створенням екземпляра класу (class instance). Будь-який об'єкт мови С++ має однакові атрибути і функціональність з іншими об'єктами того ж класу. За створення своїх класів і поведінку об'єктів цих класів повну відповідальність несе сам програміст. Працюючи в деякому середовищі, програміст дістає доступ до обширних бібліотек стандартних класів. Зазвичай, об'єкт знаходиться в деякому унікальному стані, визначуваному поточними значеннями його атрибутів. Функціональність об'єктного класу визначається можливими операціями над екземпляром цього класу. Шаблони, або типи, що параметризуються, дозволяють конструювати сімейство зв'язаних функцій або класів. Узагальнений синтаксис визначення шаблону має вигляд:template список шаблонних типів. Розрізняють шаблони функцій і шаблони класів. Шаблон класів задає зразок визначень сімейства класів. Над елементами цього класу, що типізуються, виконуються однакові базові операції незалежно від конкретного типу елементів.
Технології та інструментальні засоби проектування програмних систем.
Розширення мови С++.
Перш ніж перейти безпосередньо до дослідження конструктивних особливостей мови програмування C #, розглянемо хід його розвитку.
Історія основної гілки мов програмування, яка призвела до появи C #, сходить до 60-х років, а саме, до часу виникнення мови B. Останній є типовим представником ранніх імперативних мов програмування. Мова B була придумана у 1963 році творчим колективом розробників, основним творцем мови прийнято вважати К. Томпсона з Технологічного інституту Массачусетсу (Ken Thompson, MIT). Основною метою розробки мови була реалізація операційної системи UNIX. Вже існувала мова PL / I, що застосовувалася у той час для мейнфреймів виробництва компанії IBM, була досить громіздкою і менше підходила для поставленої задачі, ніж нове, оригінальне рішення вчених-практиків.
Наступним кроком в "алфавіті" мов програмування, провідному до мови C #, стала мова C, яка була винайдена на основі мови B в 1972 році. Авторами нової мови програмування стали К. Томпсон і Д. Рітчі (Dennis Ritchie), які працювали в дослідницькій лабораторії компанії AT & T (AT & T Bell Telephone Laboratories). У варіанті C мови B розширився за рахунок явного використання типів, структур і ряду нових операцій. Подальший розвиток мови відбувалося в тій же організації. І знову приблизно через 10 років, в 1984 році, Б. Страуструп (Bjarne Stroustrup, Bell Labs) виступив з проектом мови С + + - ООП-розширення мови C, в якому вводиться поняття класу як об'єкта даних.
Зауважимо, що назва C + + для нової мови запропонував Р. Маскітті (Rics Mascitti, Bell Labs).
Нарешті, вже в 2000 році, тобто більш ніж через 15 років, корпорація Microsoft випустила у світ C + + нового покоління під назвою C # ("Сі шарп"), основним постулатом якого є вислів: "будь-яка сутність є об'єкт". Мова заснована на строгій компонентній архітектурі і реалізує передові механізми забезпечення безпеки коду.
Як вже зазначалося в ході лекції, мова програмування C # об'єднала кращі риси цілого ряду попередників. Крім згаданої раніше гілки мов BC-C + +, необхідно вказати ще кілька знакових для нашого часу мов програмування, а саме, Java і Visual Basic.
Незважаючи на дуже серйозні розбіжності між компонентною об'єктною моделлю COM (основного стандарту Microsoft для компонентного проектування та реалізації програмного забезпечення) і моделлю Java Beans, базовим стандартом Sun Microsystems для компонента (залежної від мови реалізації), мова програмування C # має досить багато спільного з мовою Java . Природно, чимало рис мова програмування C # успадкував і від свого попередника, створеного корпорацією Microsoft, мови Visual Basic.
Як вже зазначалося, мова програмування C # заснований на строгій компонентній архітектурі і реалізує передові механізми забезпечення безпеки коду.
Перелічимо найбільш характерні риси подібності мов програмування C # і Java. Перш за все, обидві мови належать до категорії об'єктно-орієнтованих і припускають єдиність наслідування. Іншими важливими особливостями, які зближують мови програмування C # і Java, є механізми інтерфейсів, обробки виняткових ситуацій, а також процесів або "ниток" (threads). "Збірка сміття" і простору імен реалізовані у цих двох мовах подібним чином. Обидві мови програмування характеризуються сильною (суворою) типізацією та динамічним завантаженням коду при виконанні програми.
Від свого прямого попередника, мови програмування C + +, мовою C # успадковані наступні механізми: "перевантажені" оператори, небезпечні арифметичні операції з плаваючою точкою, а також ряд інших особливостей синтаксису. Але незважаючи на те, що цілий ряд конструктивних синтаксичних механізмів і особливостей реалізації успадкований мовою програмування C # від прабатьків (C + +, Visual Basic і Java), можливості цього нового мови програмування не обмежуються сумою можливостей його історичних попередників.