АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Procedure ShowBal;

Читайте также:
  1. ABOUT MYSELF
  2. ACCURACY, RELIABILITY AND VALIDITY
  3. Active Vocabulary
  4. Active Vocabulary
  5. Bibliography
  6. C. Find an appropriate equivalent for each modal verb in the articles from the contract below and translate them faithfully into Ukrainian.
  7. CHAPTER 3. COMBUSTION CHAMBER
  8. CLEARING OF THE SHIP IN
  9. Dialogue
  10. Electrosecurity
  11. Else begin
  12. EMERGENCY DRILL GUIDANCE

Procedure ShowAll;

END;

Методи ShowName, ShowDate, ShowRate і ShowBal виводять прізвище, дату народження, розмір стипендії і середній бал відповідно. Метод Get Sum використовує Bal для розрахунку суми стипедії від середнього балу. Метод ShowAll виводить значення всіх полів одночасно.

Для екземпляру St1 типу TStudent1 можна використовувати набір методів для непрямої роботи з полями даних, наприклад:

WITH St1 DO BEGIN

Init(‘Ляшук С.Т.’,’10.02.1995’,700,4.5);

ShowAll;

END;

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

ПЕРЕВИЗНАЧЕННЯ МЕТОДІВ ______________________________________________________

 

При використанні стандартних методів 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. Синтаксис виклику успадкованого методу такий:

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

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

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


1 | 2 | 3 | 4 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.)