- •1 Мета роботи 16
- •1 Мета роботи 18
- •Модульне проектування систем структурним методом
- •1 Мета роботи
- •2 Порядок виконання лабораторної роботи
- •3 Опис середовища функціонування design/idef
- •4 Методичні вказівки до виконання лабораторної роботи
- •6 Контрольні запитання для самоперевірки
- •Тема: модульне програмування методами логічного програмування
- •«Дорога» 2 «Автомобіль» 3 «Руль»
- •Модульне програмування на visual prolog
- •Об’єктно-орієнтоване програмування на visual prolog
- •6 Контрольні запитання для самоперевірки
- •Застосування функціональних моделей idef0 до створення функціональної структури програми
- •Реалізація моделей засобами інструментального засобу design/idef
- •Модульне програмування на visual prolog
- •Інкапсуляція
- •Механізм успадкування
Механізм успадкування
Кожен об’єкт, що належить якомусь класу, називається екземпляром класу.
Якщо об’єктом класу є інший клас, що породжується ним, то вищий за ієрархією клас називають батьківським, а нижчий за ієрархією клас називають похідним.
Клас, що породжується, буде мати методи та властивості батьківського класу і свої індивідуальні властивості та методи.
Для похідного класу працює механізм успадкування. Тобто, процедури та дані батьківського класу можна застосовувати у похідному класі.
Синтаксис об’яви батьківських класів наступний:
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.
