русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

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

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

ОБЪЕКТЫ


Дата добавления: 2014-11-28; просмотров: 562; Нарушение авторских прав


Последние версии языка Turbo Pascal расширены возможностью обрабатывать новый тип данных - объекты. Идея объекта заключается в объединении данных и алгоритмов обработки этих данных. Данные называют полями объекта, алгоритмы - методами, а само объединение — инкапсуляцией.Методы работают с полями и внешними данными, и именно они реализуют идею объекта. Объекты владеют свойством наследования,которое обеспечивает использование объектом-потомком полей и методов объекта-предка. Каждый объект может иметь произвольное количество потомков и лишь одного предка, что дает возможность создавать иерархические деревья наследования. Потомок может перекрывать некоторые методы предка, то есть метод с одним именем может выполняться по-разному для различных объектов. Это называют полиморфизмомметодов.

1. Инкапсуляция.Создание нового объекта аналогично созданию новой записи:

 

type<имя объекта> = object

<поля объекта> : <тип полей>;

<декларации методов объекта>;

end;

Создадим, например, объект TPoint — тип точка, содержащий координаты точки и следующие методы: засвечивания, гашения и перемещения точки. Описание типа имеет вид

typeTPoint = object

Private

X, Y : integer; {Координаты}

Public

constructorCreate(a, b : integer);

{Инициализирует поля координат числами а и b}

procedure On;

{Рисует точку текущим цветом}

procedure Off;

{Стирает точку - рисует ее цветом фона}

procedureDraw(color : word); virtual;

{Рисует точку цветом color}

procedureMove(dx, dy : integer);

{Перемещает точку по экрану на dx вправо и на dy вниз}

end;

Метод Create создает объект и заполняет его поля конкретными значениями. Такую процедуру называют конструктором и вместо служебного слова procedureиспользуют слово constructor.

Значение ключевого слова virtualв описании метода Draw будет разъяснено ниже.



Директива privateделает поля и методы объекта доступными внешним процедурам того же модуля (программы). Чтобы избежать ошибок, значение полей объекта желательно менять с помощью методов. Например, поменять расположение точки можно с помощью метода Move.

Директива publicобеспечивает доступность элементов объекта для процедур из других модулей. Компоненты, описанные как protected,будут доступны лишь потомкам данного объекта.

В разделе реализаций заголовок метода имеет вид:

 

procedure<имя объекта>.<имя метода>(<список формальных параметров>);

 

Опишем методы созданного объекта:

constructorTPoint.Create(a, b : integer);

Begin

X := a; Y := b

end;

procedureTPoint.Draw(color : word);

Begin

PutPixel(X, Y, color);

end;

procedureTPoint.On;

Begin

Draw(GetColor)

end;

procedureTPoint.Off;

Begin

Draw(GetBkColor)

end;

procedureTPoint.Move(dx, dy : integer);

Begin

Off;

X := X + dx;

Y := Y + dy;

On;

end;

Экземпляр (переменную) объектного типа объявляют в разделе var. Объектный метод вызывают так:

 

<имя экземпляра объекта>.<имя метода>(<список фактических параметров>);

 

Объявить и использовать экземпляр Point объектного типа TPoint можно, например, так:

varPoint : TPoint;

Begin

Point.Create(250, 100);

Point.On;

Point.Move(35, 70);

Point.Off;

или с помощью динамических переменных:

varPointPtr : ^TPoint;

Begin

New(PointPtr); PointPtr^.Create(250, 100);

Point Ptr^.On;

Point Ptr^.Move(35, 70);

Point Ptr^.Off;

Заметим, что две команды New(PointPtr); PointPtr.Create(250, 100); можно заменить одной:

New( PointPtr, Create(250, 100));

К объектным типам, как и к записям, можно применить команду присоединения, например:

withPoint do

Begin

Create(100, 100);

On;

Move(50, -10);

end;

2. Наследование.Наследование осуществляется так:

 

type<имя потомка> = object(<имя родительского типа>)

<добавленные поля объекта> : <тип полей>;

<декларации добавленных и переопределенных методов>;

end;

Проиллюстрируем механизм наследования созданием, исходя из типа точки, иерархического дерева типов других объектов -типа окружность, типа линия, типа прямоугольник:

 

TRect

 

 

Tline Tcircle

 

Tpoint

 

Тип TPoint выбран родительским, так как он имеет общие для всех графических объектов свойства: координаты, методы засвечивания, гашения и движения, которые вполедствии будут унаследованы другими объектами. Тип TCircle (окружность) как потомок типа TPoint будет дополнен полем радиуса(R), тип TLine (отрезок) - полями смещений (ShiftX, ShiftY) второго конца отрезка вдоль осей ОХ и OY. Тип TRect (прямоугольник) во всем аналогичный типу TLine: противоположные вершины прямоугольника задаются координатами точки и ее смещением. Во всех унаследованных объектах перекрываться будут лишь конструктор и метод Draw.

Объявление и реализация типа TCircle имеют вид:

typeTCircle = object(TPoint)



<== предыдущая лекция | следующая лекция ==>
ГРАФИКА | Private


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.042 сек.