|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Procedure ShowBal;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. Синтаксис виклику успадкованого методу такий: Предок.Метод; де Предок – ідентифікатор батьківського типу, а Метод – ідентифікатор методу цього типу. Відзначимо також, що перевизначати можна тільки методи, але в жодному випадку не поля даних. Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.) |