Студопедия  
Главная страница | Контакты | Случайная страница

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

SetColor(c);

Graph.Circle(x,y,r);

f:=true

END;

PROCEDURE CIRCLE.OFF;

BEGIN

SetColor(0);

Graph.Circle(x,y,r);

f:=false

END;

 

Аналогічним чином можна побудувати наступного нащадка „круг” на основі класу „коло”, при цьому структура класу буде та ж сама, тільки зміниться реалізація двох методів.

Аналогічно класу point можна побудувати класи „прямокутник” та „рівнобедрений трикутник”

VAR

a1,a2:POINT;

b1,b2:CIRCLE;

.........

BEGIN

.........

With a1 do

Begin

SETCOORD(100,100);

SETCOL(5);

ON

End;

With b1 do

Begin

SETCOORD(200,200);

SETCOL(6);

SETR(20);

ON

End;

a2:=a1;

A2.ON;

b2:=b1;

B2.ON;

a1:=b2;

b1:=a2;

Стосовно даного прикладу можна зробити наступні зауваження:

Подібно до записів в іменах полів даних і методів об’єктів використовують складені ідентифікатори. З метою зменшення кількості узагальнюючого імені об’єкта можна користуватися оператором над записів with do.

Об’єкт-нащадок b1 використовує методи від об’єкта класу точка, а також перевизначений метод ON.

Між об’єктами одного класу можна виконувати операцію присвоєння, при цьому об’єкт, якому присвоюється деяке значення a2, b2 отримує той самий стан, що і об’єкт, від якого здійснюється присвоєння.

При присвоєнні копіюється лише стан, а сама поведінка повинна бути реалізована явним викликом відповідних методів.

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

В розглянутому прикладі вже з'явилися перші прояву ефективності ООП, зокрема побудова ієрархії класів за принципом наслідування. Наслідування дозволило використовувати один раз оголошену структуру батьківського класу у всіх класів нащадка.

Ще один важливий момент ООП пов’язаний із використанням такої властивості об’єктів, як поліморфізм.

Тема: Поліморфізм. Віртуальні методи.

Розглянутий раніше приклад побудови нащадка Circle на перший погляд є довершений і правильним. Особливо ефективним видається метод ruh, який оголошений у структурі класу предка.

Цей метод повністю успадковується нащадками. Реалізація його використовує два методи, що перевизначаються у кожному класі нащадка.

Виконаємо цей метод для двох об’єктів класу point та circle.

VAR

a:POINT;

b:SIRCLE;

BEGIN

......

A.SETCOORD(100, 100);

A.SETCOL (5);

A.ON;

A.RUH (50,50)

END.

Така послідовність команд переведе в активний стан об’єкт „точка” в положення з координатами (100,100) з кольором (5), потім починається виконуватися метод рух, який у свою чергу передбачає виклик методів ON, OFF.

Точка переміститься на 50 пікселів вліво і вниз.




Дата добавления: 2015-09-11; просмотров: 15 | Поможем написать вашу работу | Нарушение авторских прав

USES CRT; | Заголовок. | Xx: real; | Rewrite (Output); | Процедура | Процедура | Процедура | Процедури обслуговування переривань. | Процедура | Процедура |


lektsii.net - Лекции.Нет - 2014-2024 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав