Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Мет_для_лаб_Мтзкіт_2011.docx
Скачиваний:
3
Добавлен:
01.12.2018
Размер:
126 Кб
Скачать
☆

Механізм успадкування

Кожен об’єкт, що належить якомусь класу, називається екземпляром класу.

Якщо об’єктом класу є інший клас, що породжується ним, то вищий за ієрархією клас називають батьківським, а нижчий за ієрархією клас називають похідним.

Клас, що породжується, буде мати методи та властивості батьківського класу і свої індивідуальні властивості та методи.

Для похідного класу працює механізм успадкування. Тобто, процедури та дані батьківського класу можна застосовувати у похідному класі.

Синтаксис об’яви батьківських класів наступний:

Class дитина : батько1, батько2,батько3…

Для успадкування треба виконання певної умови: «методи та факти батьківського класу, що успадковуються, повинні знаходитися в інтерфейсі батьківського класу.».

Розглянемо фрагмент програми, що ілюструє сказане:

Class батько

Predicates

Do()

Endclass батько

Implement батько

Print_s(string)

Endclass батько

Class дитина : батько

…

Метод Do() успадковується класом «дитина», його об’явлено у інтерфейсі класу «Батько». Метод Print_s не успадковується класом «дитина», його об’явлено у секції реалізації класу «батько».

Переробимо приклад програми із теми «Інкапсуляція» так, щоб вона застосовувала механізм успадкування.

Class середній_бал

Facts-s

nondeterm student(string,string,integer)

single sred(integer,integer)

predicates

nondeterm count(real)-(o)

endclass середній_бал

implement середній_бал

clauses

sred(0,0).

student("Коваль","ЛП",82).

student("Коваль","ФП",78).

count(_):-student(_,_,S),sred(S1,N),N1=N+1,Sr=S+S1,assert(sred(Sr,N1)),fail.

count(Sr):-sred(S,N1),Sr=S/N1.

endclass середній_бал

Class вивід : середній_бал

predicates

nondeterm print_s()

endclass вивід

implement вивід

clauses

print_s ():-count(Sr),student(F,_,_),write(F," Середній бал ",Sr).

endclass вивід

goal

R1= вивід::new, R1: print_s (),R1:delete.