Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП_KAZYMYR.doc
Скачиваний:
14
Добавлен:
09.11.2019
Размер:
3.71 Mб
Скачать

2.12.Абстрактні методи

У всіх розглянутих мовах ООП можуть бути оголошені абстрактні методи без вказівки їхньої реалізації.

У С++ ці методи називаються чистими віртуальними функціями:

сlass A {...………......

virtual void f()=0;

………………};

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

В Java абстрактні класи й методи оголошуються шляхом використання слова abstract:

public abstract class A {

……………………......

public abstract void f();

………………………}

Клас є абстрактним, якщо він містить хоча б одну абстрактну функцію. Існують класи, у яких всі функції є абстрактними. Такі класи називається інтерфейсами:

public interface B {

void h();

void g();

…………………}

В інтерфейсах всі методи мають специфікатори public і abstract за замовчуванням.

В Delphi також можуть бути визначені абстрактні класи, які не мають конструкторів. Методи цього класу повинні закінчуватися ключовим словом abstract:

procedure SetData(...…....), abstract;

Таким чином, абстрактні класи визначають деяку функціональність без реалізації. Реалізація виробляється в класі-нащадку. Більш докладно абстрактні методи розглядаються в розділі 4.

Контрольні питання:

  1. З яких розділів складається визначення класу?

  2. Який стан об'єкта визначають поля даних?

  3. Що задають методи об'єкта?

  4. Змінні яких видів можуть бути задані при визначенні класу?

  5. Як розрізняються змінні в мові Smalltalk?

  6. Як викликаються методи в Smalltalk?

  7. Як оголосити змінну класу в С++?

  8. Які рівні доступу до змінних й методів існують в Object Pascal?

  9. Чи можна конструктор оголосити в закритій частині визначення класу?

  10. Чи існують покажчики на об'єкти в Java?

  11. Як визначити абстрактну функцію в С++?

  12. Що є аналогом дружніх функцій в Delphi?

  13. Які існують способи визначення функцій-операцій в С++?

  14. Яким чином визначаються властивості в Java?

Розділ 3 успадкування

3.1.Форми успадкування

Через успадкування реалізується метод ієрархії, що використовується при створенні програмних систем. Тиммоті Бадд уводить наступні форми успадкування:

  1. Спеціалізація. Дочірній клас є більше конкретним, приватним або спеціалізованим випадком батьківського класу. Інакше кажучи, дочірній клас є підтипом батьківського класу.

  2. Специфікація. Батьківський клас описує поведінку, що реалізується в дочірньому класі, але залишилася нереалізованою у батьківському класі.

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

  4. Узагальнення. Дочірній клас модифікує або перевизначає деякі методи батьківського класу з метою одержання об'єкта більше загальної категорії.

  5. Розширення. Дочірній клас додає нові функціональні можливості до батьківського класу, але не міняє успадковану поведінку.

  6. Обмеження. Дочірній клас обмежує використання деякі методів батьківського класу.

  7. Варіювання. Дочірній і батьківський класи є варіаціями на одну тему, і зв'язок «клас-підклас» довільний.

  8. Комбінування. Дочірній клас успадковує риси більш ніж одного батьківського класу. Це, так зване, множинне успадкування.

Перераховані форми успадкування можуть проявлятися двома способами:

  1. Просте успадкування - будь-який клас має тільки одного предка. Вся ієрархія має вигляд дерева (рис. 3.1).

Р ис. 3.1. Ієрархія простого успадкування

  1. М ножинне успадкування - клас має кілька батьківських класів (рис.3.2).

Рис. 3.2. Ієрархія множинного успадкування

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

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