Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otvety_teoria_OOP.docx
Скачиваний:
0
Добавлен:
26.12.2019
Размер:
33.98 Кб
Скачать
  • 1 Об'єктно-орієнтоване програмування. Парадигми ООП. Мета і задачі ООП

Об'є́ктно-орієнто́ване програмува́ння (ООП) — одна з 0900100040803008010031000102000018парадигм 0910031000102000018програмування, яка розглядає програму як множину «об'єктів», що взаємодіють між собою. В ній використано декілька технологій від попередніх парадигм, зокрема 031000040102000018010031000102000018успадкування, 090041018010031000102000018модульність, 0900100111070010031000102000018поліморфізм та000000110181118інкапсуляцію.

  • 2 Історичні аспекти розвитку мов і технологій програмування . Ідеологія ООП. Концепції об'єктно-орієнтованого програмування

ООП виникло в результаті розвитку ідеології 09101050411005010031000102000018процедурного програмування, де дані і підпрограми (процедури, функції) їх обробки формально не пов'язані. Для подальшого розвитку об'єктно-орієнтованого програмування велике значення мають поняття події(так зване 0900411020011101002000050100310001020000181подієво-орієнтоване програмування) і компонента (090000005010050100310001020000181компонентне програмування, КОП).

Формування КОП від ООП відбулося, так само як формування 0900410180111180100310001020000181модульного від процедурного програмування: процедури сформувалися в модулі - незалежні частини коду до рівня0900000102000180080збірки програми, так об'єкти сформувалися в компоненти - незалежні частини коду до рівня 000001000901виконання програми. Взаємодія об'єктів відбувається за допомогою 09011010001110100200005010031000102000018повідомлень. Результатом подальшого розвитку ООП, мабуть, буде 003050100011101002000080901041104агентно-орієнтоване програмування, де агенти - незалежні частини коду на рівні виконання. Взаємодія агентів відбувається за допомогою зміни середовища, в якій вони знаходяться.

Мовні конструкції, конструктивно не пов'язані безпосередньо з об'єктами, але необхідні їм для їх безпечної (09011001000020801810102виняткові ситуації, перевірки ) та ефективної роботи, інкапсулюються від них в аспекти (в 01005010001110100200005010031000102000018аспектно - орієнтованому програмуванні). 011011010001110100200005010031000102000018Суб'єктно-орієнтоване програмування розширює поняття об'єктв шляхом забезпечення більш уніфікованого і незалежної взаємодії об'єктів. Може бути перехідною стадією між ООП та агентнии програмування в частині самостійної їх взаємодії.

Першою мовою програмування, в якій були запропоновані принципи об'єктної орієнтованості, була 010801000Симула. На момент своєї появи (в [[1967 році), ця мова програмування запропонувала революційні ідеї: об'єкти, класи, 0111100018008090051004віртуальні методи тощо, однак це все не було сприйнято сучасниками як щось грандіозне. Тим не менше, більшість концепцій були розвинені 0905090000009111111Аланом Кейем та 00030000100501Деном Інгаллсом у мові Smalltalk. Саме вона стала першою широко поширеною 09011010001110100200000000200010031000102000018об'єктно - орієнтованою мовою програмування.

Ідеологія: ООП виникло в результаті розвитку ідеології 09101050411005010031000102000018процедурного програмування, де дані і підпрограми (процедури, функції) їх обробки формально не пов'язані. Для подальшого розвитку об'єктно-орієнтованого програмування велике значення мають поняття події(так зване 0900411020011101002000050100310001020000181подієво-орієнтоване програмування) і компонента (090000005010050100310001020000181компонентне програмування, КОП).

Концепції ооп

Абстракція даних – це можливість створення програмістом власних складних типів даних.

Інкапсуляція -  один з трьох основних механізмів 09011010001110100200005010031000102000018об'єктно-орієнтованого програмування. Йдеться про те, що об’єкт вміщує не тільки дані, але і правила їх обробки, оформлені в вигляді виконуваних фрагментів(09051004010031000102000018методів).

Наслідування - механізм утворення нових 090001010031000102000018класів на основі використання вже існуючих. При цьому властивості і функціональність батьківського класу переходять до класу нащадка(дочірнього).

Поліморфізм - концепція в 0910031000102000018програмуванні, відповідно до якої використовується спільний інтерфейс для обробки даних різних спеціалізованих 0208004000081%типів.

3 Класи. Формат оголошення класів. Специфікатори прав доступу. . Створення об’єктів. Доступ до елементів класу

Клас — це складний тип даних, який створюється користувачем. Містить 3 розділи: private, public, protected

Формат оголошення:

Class <name of class>

{

Private:

Public:

Protected:

};

За замовчуванням специфікатором прав доступу є Private!!!

Загальний вигляд створення об’єктів:

Для створення об'єкта необхідно використовувати наступний синтаксис:

імя_класу імя_обєкту = new імя_класу ();

Доступ до елементів класу:

Члени класу з типом доступу public є загальнодоступними (тобто доступні з будь-якої точки програми за межами даного класу), з типом доступу protected - всередині членів даного класу і його похідних, з типом доступу private - тільки для інших членів даного класу.

4.Класи. Порівняння структур та класів. Формат оголошення структур та класів.

Порівняння структур та класів:

Клас - це складний тип даних, який створюється користувачем. Містить 3 розділи: private, public, protected

Структура – містить набір полів, інколи методи, містить поля, які беруть в операторні дужки

Struct <name of structure>

{

Поле 1;

….

Поле n;

};

5.Вказівники на об’єкти. Правила доступу до елементів класу

Вказівник – це спец. Змінна, яка містить адресу іншого об’єкту.

6. Конструктори і деструктори. Конструктори за замочуванням

Конструктор – це спец. функція, яка призначена для ініціалізації об’єкту і яка викликається автоматично, неявно, після створення об’єкту.

Деструктор – це спец. програма, яка викликається автоматично, неявно в момент знищення об’єкту.

За замовчуванням – без параметрів

7. Вказівник this. Вбудовувані (inline -) функції в об’явленні класу.

Вказівник this – це вказівник, який створюється автоматично самим компілятором і вказує на даний об’єкт.

Inline-функция - это функция с модификатором ilnline, код которой компилятор может встроить в место вызова функции. Например

код C++

1:

2:

3:

4:

5:

6:

7:

8:

9:

10:

inline int func(void)

{

    return 5;

}

int main(void)

{

    int n = func();

    // ...

}

Компилятор может встроить код функции, примерно так:

код C++

1:

2:

3:

4:

5:

int main(void)

{

    int n = 5; // нет функции, есть её код

    // ...

}

8. Конструктори ініціалізації . Перевантаження конструкторів.

Конструктор ініціалізації – це конструктор, що ініціалізує відкриті й закриті дані, зовні можуть передавати дані.

В більшості мов конструктор може бути перевантаженим, що дозволяє використовувати кілька конструкторів в одному класі, причому кожен конструктор має різні параметри.

9. Конструктори копіювання. Правила ініціалізації конструктора копіювання

Конструктор копіювання – це конструктор, що приймає в якості аргументу об'єкт того ж класу, або посилання на нього

Об'єкт може бути ініціалізований у будь-який спосіб з наступних:

a. Через оголошення

Object B = A; // перекладається як Object::Object(const Object&) (виклик конструктора копіювання)

b. Через аргументи функції

type function (Object a);

c. Через повернене значення

Object a = function();

10. Створення динамічного класу Array. Створення об’єктів , які мають необмежену кількість елементів динамічного масиву

Клас Array

Не можна зрозуміти багато деталей роботи з масивами в C#, якщо не знати пристрій класу Array з бібліотеки FCL, нащадками якого є всі класи-масиви. Розглянемо наступні оголошення:

//Клас Array

        int[] ar1 = new int[5];

        double[] ar2 ={5.5, 6.6, 7.7};

        int[,] ar3 = new Int32[3,4];

Задамося природним запитанння: до якого або до яких класів належать об'єкти ar1, ar2 й ar3? Відповідь проста: всі вони належать до різних класів. Змінна ar1 належить до класу int[] - одномірному масиву значень типу int, ar2 - double[] - одномірному масиву значень типу double, ar3 - двовимірному масиву значень типу int. Наступне закономірне питання: а щозагального є в цих трьох об'єктів? Насамперед, всі три класи цих об'єктів, як й інші класи, є нащадками класу Object, а тому мають загальні методи, успадковані від класу Object і доступні об'єктам цих класів.

11. Статичні члени класу

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]