1. Інкапсуляція

Інкапсуляція (encapsulation) – це механізм, який об'єднує дані і код,
маніпулює Цим даними, а також захищає і те, і інше від зовнішнього
втручання або неправильного використання. В об'єктно-орієнтованому
програмуванні код і дані можуть бути об'єднані разом; в цьому випадку
кажуть, що створюється так званий "чорний ящик". Коли коди і дані
об'єднуються таким способом, створюється об'єкт (object). Іншими словами, об'єкт
– Це те, що підтримує інкапсуляцію.


Усередині об'єкту коди і дані можуть бути закритими (private). Закриті коди
або дані доступні тільки для інших частин цього об'єкта. Таким чином,
закриті коди і дані недоступні для тих частин програми, які існують
поза об'єктом. Якщо коди і дані є відкритими, то, незважаючи на те, що вони
задані усередині об'єкту, вони доступні і для інших частин програми. Характерною
є ситуація, коли відкрита частина об'єкту використовується для того, щоб
забезпечити контрольований інтерфейс закритих елементів об'єкту.


Насправді об'єкт є змінною певного користувачем типу.
Може здатися дивним, що об'єкт, який об'єднує коди і дані, можна
розглядати як змінну. Проте стосовно об'єктно-орієнтованого
програмування це саме так. Кожен елемент даних такого типу є
складовою змінної.

2. Поліморфізм


Поліморфізм (polymorphism) (від грецького polymorphos) – це властивість,
яке дозволяє одне і те ж ім'я використовувати для вирішення двох або більше
схожих, але технічно різних завдань. Метою поліморфізму, стосовно
об'єктно-орієнтованого програмування, є використання одного імені
для завдання загальних для класу дій. Виконання кожної конкретної дії
буде визначатися типом даних. Наприклад для мови Сі, в якому поліморфізм
підтримується недостатньо, знаходження абсолютної величини числа вимагає трьох
різних функцій: abs (), labs () і fabs (). Ці функції підраховують і повертають
абсолютну величину цілих, довгих цілих і чисел з плаваючою точкою
відповідно. У С + + кожна з цих функцій може бути названа abs (). Тип
даних, який використовується при виклику функції, визначає, яка конкретна
версія функції дійсно виконується. У С + + можна використовувати одне ім'я
функції для безлічі різних дій. Це називається перевантаженням функцій
(function overloading).


У більш загальному сенсі, концепцією поліморфізму є ідея "один інтерфейс,
безліч методів ". Це означає, що можна створити загальний інтерфейс для групи
близьких за змістом дій. Перевагою поліморфізму є те, що він
допомагає мніжать складність програм, вирішуючи використання того ж інтерфейсу
для завдання єдиного класу дій. Вибір же конкретної дії, в
залежно від ситуації, покладається на компілятор. Вам, як програмісту, не
потрібно робити цей вибір самому. Потрібно тільки пам'ятати і використовувати загальний
інтерфейс. Приклад з попереднього абзацу показує, як, маючи три імені для
функції визначення абсолютної величини числа замість одного, звичайне завдання
стає більш складною, ніж це дійсно необхідно.


Поліморфізм може застосовуватися також і до операторів. Фактично в усіх
мовах програмування обмежено застосовується поліморфізм, наприклад, в
арифметичних операторах. Так, в Сі, символ + використовується для складання
цілих, довгих цілих, символьних змінних і чисел з плаваючою крапкою. У цьому
випадку компілятор автоматично визначає, який тип арифметики потрібно. У
С + + ви можете застосувати цю концепцію і до інших, заданим вами, типам даних.
Такий тип поліморфізму називається перевантаженням операторів (operator
overloading).


Ключовим в розумінні поліморфізму є те, що він дозволяє вам
маніпулювати об'єктами різного ступеня складності шляхом створення спільного для
них стандартного інтерфейсу для реалізації схожих дій.

3. Наследовніе


Спадкування (inheritance) – це процес, за допомогою якого один об'єкт
може набувати властивостей іншого. Точніше, об'єкт може успадковувати основні
властивості іншого об'єкту і додавати до них риси, характерні тільки для нього.
Спадкування є важливим, оскільки воно дозволяє підтримувати концепцію
ієрархії класів (hierarchical classification). Застосування ієрархії класів
робить керованими великі потоки інформації. Наприклад, подумайте про опис
житлового будинку. Будинок – це частина загального класу, званого будовою. З іншого
боку, будова – це частина більш загального класу – конструкції, який
є частиною ще більш загального класу об'єктів, який можна назвати
створенням рук людини. У кожному випадку породжений клас успадковує все,
пов'язані з батьком, якості і додає до них свої власні визначальні
характеристики. Без використання ієрархії класів, для кожного об'єкта довелося
б задати всі характеристики, які б ісчерпивающи його визначали. Однак при
використанні спадкоємства можна описати об'єкт шляхом визначення того загального
класу (або класів), до якого він відноситься, з тими спеціальними рисами,
які роблять об'єкт унікальним. Спадкування грає дуже важливу роль у OOP.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*