- •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)
Перераховуваний тип
Перераховуваний тип (enum) застосовується для даних цілого типу, що можуть приймати обмежений набір значень. Кожному значенню відповідає власне ім'я-ідентифікатор і ціле число, значення цього імені. Оголошення перераховуваного типу будується за схемою:
enum ідентифікатор_типу {список перерахування} деклараториініціалізатори;
Тут ідентифікатор_типу задає ім'я перераховуваного типу, список перерахування складається з імен, розділених комами. Кожне ім’я задається ідентифікатором_значення і, можливо, цілим значенням типу char чи int, наприклад:
enum color { RED, GREEN, BLUE } en_color; enum lex_type { CNST, VAR, OPER=3, FUNC };
Якщо значення ідентифікатора_значення у списку перерахування не задано, перший з них отримую значення 0, а кожен наступний - значення, більше на 1. Узагалі будь-який з ідентифікаторів_значень за замовчуванням має значення на 1 більше попереднього. У С/С++ прийнято записувати ці ідентифікатори великими літерами. Ідентифікатори_значення використовуються або як іменовані константи, або для присвоювання змінним перераховуваного типу.
Існує тип void, який не містить жодного значення (порожній).
28. Протокол опису класу об’єктів у мові С++: інтерфейс та реалізація.
У програмуванні існує поняття програмного інтерфейсу, що означає перелік можливих обчислень, які може виконати та чи інша частина програми, включаючи опис того, які аргументи і в якому порядку потрібно передавати на вхід алгоритмам з цього переліку, а також що і в якому вигляді вони будуть повертати . Абстрактний тип даних інтерфейс придуманий для формалізованого опису такого переліку. Самі алгоритми, тобто дійсний програмний код, який буде виконувати всі ці обчислення, інтерфейсом не задається, програмується окремо і називається реалізацією інтерфейсу.
Програмні інтерфейси, а також класи, можуть розширюватися шляхом успадкування, яке є одним з важливих засобів повторного використання готового коду в ООП. Успадкованих клас або інтерфейс буде містити в собі все, що зазначено для всіх його батьківських класів (залежно від мови програмування і платформи, їх може бути від нуля до нескінченності). Наприклад, можна створити свій варіант текстової рядки шляхом успадкування класу "моя рядок тексту" від вже існуючого класу "рядок тексту", при цьому передбачається, що програмісту не доведеться заново переписувати алгоритми пошуку та інше, тому що вони автоматично будуть успадковані від готового класу, і будь-який екземпляр класу "моя рядок тексту" може бути переданий не тільки в готові методи батьківського класу "рядок тексту" для проведення потрібних обчислень, а й взагалі в будь-який алгоритм, здатний працювати з об'єктами типу "рядок тексту", оскільки примірники обох класів сумісні з програмним інтерфейсам.
Клас дозволяє задати не тільки програмний інтерфейс до самого себе і до своїх екземплярів, а й в явному вигляді написати код, відповідальний за обчислення. Якщо при створенні свого нового типу даних успадковувати інтерфейс, то ми отримаємо можливість передавати примірник свого типу даних в будь-який алгоритм, який вміє працювати з цим інтерфейсом. Однак нам доведеться самим написати реалізацію інтерфейсу, тобто ті алгоритми, якими буде користуватися цікавить нас алгоритм для проведення обчислень з використанням нашого екземпляра. У той же час, наслідуючи клас, ми автоматично успадковуємо готовий код під інтерфейс (це не завжди так, батьківський клас може вимагати реалізації якихось алгоритмів в дочірньому класі в обов'язковому порядку). У цій можливості успадковувати готовий код і проявляється те, що в об'єктно-орієнтованої програми тип даних клас визначає одночасно і інтерфейс, і реалізацію для всіх своїх екземплярів.
29. Протокол опису функцій у мові С++: інтерфейс та реалізація.
У C++ прості частини складної програми реалізуються за допомогою функцій. В термінології ООП функції – це методи, за допомогою яких об’єкти опрацьовують повідомлення. Окремі функції об'єднують у спільну програму. У відкомпільованому вигляді така програма утворює модуль. Головна функція, що обов'язково входить до кожної програми, - main(). Розрізняють стандартні функції та функції користувача. Стандартні функції мови описані (визначені) у бібліотеках.
Функція – це поіменована послідовність описів і операторів, які виконують деякі логічно завершені дії. До функції можна звертатись (викликати) з будь-якого місця програми необхідну кількість разів. Функція може отримувати дані через параметри і повертати їх через ім’я.
Кожна функція повинна бути оголошена і означена.
2. Синтаксис функції.
[клас пам’яті] <тип ф-ї> <ім’я ф-ї> (<список формальних параметрів>)
{
<тіло функції>;
return (<змінна>); }
Клас пам’яті - задає область видимості функції. Extern – глобальна видимість у всіх модулях програми. Static – видимість в межах модуля, де означена функція.
Тип ф-ї – це тип даного, який функція повертає в основну програму. Тип функції можна не зазначати. За замовчуванням функція повертає у програму дане цілого типу int. Функцію, яка не повертає у програму жодного результату, оголошують з типом void.
Для функції, яка не залежить від жодних параметрів, у круглих дужках записують службове слово void.
Ім’я функції задає користувач за правилом створення ідентифікаторів.
У списку формальних параметрів через кому записують змінні, зазначаючи їхні типи. Тип необхідно зазначати для кожної змінної окремо. Імена змінних можна опускати. Якщо функція не набуває жодних значень, то список формальних параметрів може бути відсутній. Круглі дужки опускати не можна. Параметри: під час опису – формальні, під час виклику – фактичні.
У тілі функції записують команди, які задають дію функції. Результат виконання функції повертається в основну програму (у точку виклику) за допомогою змінної командою return. Тип змінної має збігатися з типом функції. У тілі функцій типу void команду return не зазначають. У команді return круглі дужки можна не писати.
