русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Перевизначення методів


Дата додавання: 2014-04-22; переглядів: 1114.


При використанні стандартних методів Pascal-ю дуже важко або й зовсім неможливо створювати гнучкі процедури, які б працювали з формальними параметрами змінних типів, як це робить, наприклад, процедура writeln, що може виводити на екран дані типу string, real, integer, boolean і споріднені з ними.

Ця проблема вирішується об’єктно-орієнтованим програмуванням за допомогою механізму успадковування: якщо визначений породжений тип, то методи батьківського типу успадковуються, однак при бажанні вони можуть перевизначатися. Для перевизначення успадкованого типу просто описується новий метод з тим же іменем, що і успадкований метод, але з іншим тілом, а у випадку потреби – і з новою множиною параметрів.

Пояснимо цей процес на прикладі. Попередньо ми створили два об’єктні типи:

Type

TStudent=OBJECT

Name:String[30];

Date:String[10];

Rate:Real;

Procedure Init(Nm,Dt:String; Rt:Real);

Function GetName:String;

Function GetDate:String;

Function GetRate:Real;

Procedure ShowName;

Procedure ShowDate;

Procedure ShowRate;

END;

 

TStudent1=OBJECT(TStudent)

Bal:Real;

Procedure Init(Nm,Dt:String; Rt,Bl:Real);

Function GetBal:Real;

Function GetSum:Real;

Procedure ShowBal;

Procedure ShowAll;

END;

 

Дочірній тип успадковує від батьківського процедуру Init. Але, оскільки цей дочірній тип має додаткове поле даних Bal, яке батьківською процедурою Init не визначається, то цю процедуру необхідно перевизначити. Зробимо це так:

PROCEDURE TStudent1.Init(Nm,Dt:string;rt,bl:real);

Begin

TStudent.Init(Nm,Dt,Rt);

Bal:=bl;

End;

Зверніть увагу, що ми використовуємо метод ініціалізації об’єкту TStudent. Синтаксис виклику успадкованого методу такий:

Предок.Метод;

де Предок – ідентифікатор батьківського типу, а Метод – ідентифікатор методу цього типу.

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

 


<== попередня лекція | наступна лекція ==>
Інкапсуляція | Підсумок


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн