- •1.Охарактеризуйте розвиток структуризації у мовах програмування. Технології програмування.
- •2. Охарактеризуйте особливості та переваги об’єктно-орієнтованого програмування, використовуючи його базові поняття та терміни.
- •3.Охарактеризуйте такі поняття об’єктно-орієнтованої парадиґми, як клас, об’єкт, повідомлення та метод.
- •Означте такі базові властивості об’єктно-орієнтованого програмування як абстрагування, наслідування, інкапсуляція та поліморфізм.
- •Охарактеризуйте поняття абстрагування при створенні класу об’єктів. Проаналізуйте відмінності між поняттям класу та об'єкту.
- •6. Специфікація представлення та функціональна специфікація класів.
- •8.Опишіть такий агрегатний тип даних як масив. Приклади
- •10.Охарактеризуйте поняття ідентифікації об’єктів. Проаналізуйте способи ідентифікації об’єктів.
- •11. Об'єкти з точки зору концепцій інкапсуляції і абстракції.
- •12. Проаналізуйте структуру опису та реалізації класу: компоненти-дані і компоненти-функції.
- •13. Проаналізуйте особливості доступу до компонентів об’єкта (використання специфікаторів public, private, protected).
- •14. Ініціалізація об’єктів (конструктори). Опис конструкторів та порядок їх виклику.
- •15. Опишіть процес руйнування об’єкта (деструктори).
- •21).Охарактеризуйте віртуальні функції. Приклади.
- •Проаналізуйте поняття «час життя» об'єкта та його «область видимості».
- •23).Класи пам’яті. Використання автоматичної, статичної та динамічної пам’яті для розміщення об’єктів.
- •24). Розкрийте суть проблеми "висячих" посилань і “сміття”.
- •1)Цілі, 2)раціональні (із плаваючою крапкою),3) символьні;4) рядкові.
- •1) Константи цілого типу
- •2) Константи раціонального типу
- •3) Символьні константи
- •Керуючі коди
- •4) Рядкові константи
- •Перераховуваний тип
- •30. Охарактеризуйте особливості inline-функцій та inline-методів класів.
- •33. Опишіть такі аґреґатні типи даних, як структура і об’єднання, їх основні відмінності.
- •34. Охарактеризуйте поняття вказівника і посилання. Їх основні відмінності.
- •Типові обмеження та помилки програмування при роботі з посиланнями.
- •35. Ініціалізація вказівників. Операції над ними.
- •Операції з вказівниками.
- •Типові помилки програмування при роботі з вказівниками.
- •36. Охарактеризуйте зв'язану організацію пам'яті та використання вказівників у програмах.
- •37.Дайте аналіз динамічним структурам об’єктів на прикладі асоціативних структур даних.
- •38.Проаналізуйте такі динамічні структури об’єктів як лінійні списки.
- •39Дайте оцінку такій динамічні структури об’єктів як черги, стеки та деки.
- •40.Опишіть та дайте приклади використання зв’язаної організації пам’яті для реалізації рекурсивних структур.
- •48). Використання маніпуляторів при вводі-виводі даних.( незнайдено повністю)
- •49). Способи форматування даних при використанні потоків.
- •51). Роз’ясніть поняття модуля як програмного еквівалента класу об’єктів.
- •52). Розясніть основні концепції модульного програмування.(додатково у 51)
36. Охарактеризуйте зв'язану організацію пам'яті та використання вказівників у програмах.
Зв’язана організація пам’яті задає множину структур даних, зв’язки між якими організовуються за допомогою вказівників. Кожен елемент такої структури володіє властивістю - „мати зв’язок з іншими елементами” (асоціація). Динамічна структура об’єктів (ДСО) володіють властивістю мати змінний склад структури, яка дозволяє розглядати ДСО як асоціацію зв’язаних об’єктів.
Змінні, значеннями яких є адреси ділянок пам’яті, називаються вказівниками. Вказівник вказує на початок області оперативної пам'яті комп'ютера, де зберігається дане. Вказівники дають змогу оперувати не з іменами даних, а безпосередньо звертатись до областей пам'яті комп'ютера
В С++ існує три види вказівників : 1)на об’єкти; 2)на функції; 3)на void.
1) Вказівник на об’єкти містить адреси діялнок пам’яті, де зберігаються значення певного типу. Формат запису наступний: <тип> *<ім’я вказівника>
2) Вказівник на функцію містить адресу в сегменті коду, за якою розташовується виконуваний код функції, тобто адресу, на яку передається керування в момент виклику функції. Вказівник на функцію використовують для опосередкованого виклику функції (не через її ім’я, а через вказівник, який містить її адресу), а також для передачі імені функції в іншу в якості параметра.
Формат запису: <тип> (*<ім’я>) (список типів, агрументів)
Наприклад int (*abc) (double, double);
3) Вказівнику на void можна присвоїти значення будь-якого вказівника і порівнювати його з довільним вказівником, але перед виконанням будь-яких дій з ділянкою пам’яті, на яку він посилається, потрібно зводити його до вказівника на конкретний тип явним чином.
37.Дайте аналіз динамічним структурам об’єктів на прикладі асоціативних структур даних.
Зв’язана організація пам’яті задає множину структур даних, зв’язки між якими організовуються за допомогою вказівників. Кожен елемент такої структури володіє властивістю - „мати зв’язок з іншими елементами” (асоціація). ДСО володіють властивістю мати змінний склад структури, яка дозволяє розглядати ДСО як асоціацію зв’язаних об’єктів. Асоціативність – це групова властивість (приклад - кількість елементів в структурі). Асоціація об’єктів, як правило, впорядкована за певною системою правил – відношенням порядку на множині об’єктів.
Приклади правил впорядкування:
виділення окремих властивостей об’єкта: „вік”, „пріоритет” і т.п.;
можуть бути побудовані на основі часу модифікації складу членів об’єктів (LIFO, FIFO - див. далі по тексту стек, черга).
Загальна властивість багатьох асоціацій – це можливість відображення їх членів на деяку підмножину натуральних чисел, тобто їх нумерація, що дозволяє задавати відношення лінійного порядку (між елементами першим і наступним немає інших): „предок - нащадок”, „попередній - наступний”... Ця властивість дає можливість реалізовувати багато асоціацій у вигляді лінійних списків:
38.Проаналізуйте такі динамічні структури об’єктів як лінійні списки.
Лінійний список - це така ДСО (такий спосіб організації даних), яка для кожного елемента дозволяє вказати:
Який елемент є наступним для заданого;
Який елемент є попереднім для заданого;
Який лемент є наступним і який є попереднім.
Для організації лінійних списків використовують структури або класи, поля яких поділяють на дві частини – інформаійна і зв’язкова (як правило, це набір вказівників).
class List
{
int data; // інформаційна частина
List *next; // зв’язкова (набір вказівників)
}
Head (голова) - це елемент, від якого можна перейти до будь-якого іншого елемента списку.
Tail (хвіст) – це елемент, зв’язок якого є нульовим.
Порожній список – кількість його елементів рівна 0.
Список, в якого всі елементи мають однаковий тип – однорідний, якщо до складу списку входять різнотипні елементи – неоднорідний.
Списки поділяються на :
- однозв’язні
або
- двозв’язні (мінімум 2 з’язки)
Лінійні списки можуть бути кільцевими:
- однозв’язний кільцевий
- двозв’язний кільцевий
Типовими представниками лінійних списків є стеки і черги.
Стек – це такий лінійний список, який має одну точку доступу: з однієї сторони дані додаються і з тієї ж сторони дані вилучаються. Стек організований за принципом LIFO (Last In First Out - останній ввійшов – перший вийшов). Черга - це такий лінійний список, який має дві точки доступу: з однієї сторони дані в чергу додаються, а з іншої – вилучаються. Черга організована за принципом FIFO (First In First Out – перший ввійшов – перший вийшов).
Head – точка видалення, Tail – точка додавання.
Отже, черга – це асоціація об’єктів, що очікують доступу до системи обслуговування.
