русс | укр

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

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

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

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


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

Свойства


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


Абстрактные методы

Замещенные методы

Замещение методов предполагает передачу и изменение методов от класса-предка классу-наследнику. Как мы уже отметили, только виртуальные или динамические методы могут быть замещенными. Рассмотрим пример:

type

TComponentParent = class

procedure MyProcVirtual; virtual;

procedure MyProcDynamic; dynamic;

end;

TComponentChild = class(TComponentParent)

procedure MyProcVirtual; override;

procedure MyProcDynamic; override;

end;

Применение служебного слова override после названия метода позволяет заместить оригинал метода класса-предка методом класса-наследника. При этом замещение происходит непосредственно в таблице виртуальных методов (или таблице динамических методов). При использовании служебных слов virtual или dynamic вместо override произойдет создание нового метода вместо замещения старого.

Замещение методов не работает со статическими методами — при замещении статического метода новым произойдет простая замена метода родителя в потомке.

 

Абстрактными методами называются такие методы, которые описаны внутри определения класса или компонента, но не содержат никаких действий и никогда не вызываются и соответственно не имеют реализации. Абстрактными могут быть виртуальные или динамические методы. Абстрактные методы используются только в классах-предках. Описание абстрактного метода выглядит следующим образом:

procedure MyProcedure;virtual; abstract;

Примечание

Никогда не вызывайте на выполнение абстрактные методы, т. к. они не содержат никаких команд, которые могли бы выполниться. Вызов абстрактного метода приведет к генерации исключительной ситуации EAbstractError.

 

 

Свойства так же, как и поля, определяют атрибуты объекта. Но в отличие от полей свойства реализуют механизм доступа для чтения или изменения данных в полях объекта.



Свойства позволяют изменять атрибуты объекта, в том числе, и вычисляемыми значениями. Объявление свойства объекта должно содержать его имя и тип, а также, как минимум, одно объявление способа доступа к данному свойству (описания).

Синтаксис объявления свойства объекта имеет вид:

property <Имя свойства>:<тип> <описания>;

 

<имя свойства> должно быть уникальным;

<тип> — определяет, значения какого типа могут быть записаны в данном свойстве;

<описания> — объявления способов доступа к данному свойству.

Каждое свойство объекта должно иметь, как минимум, одно обязательное объявление способа доступа к свойству. Имеется два обязательных описания доступа к свойству объекта: чтение (read) значения свойства и запись (write) значения свойства.

Синтаксис обязательных описаний read и write имеет следующий вид:

read <имя поля> |<имя метода>
write <имя поля>|<имя метода>

где <имя поля> — поле, из которого берется или в которое помещается значение свойства,

<имя метода> — метод, который берет или помещает значение свойства компонента.

Объявление read (читать) описывает поле или метод, предназначенные для чтения значения свойства, а объявление write (писать) описывает поле или метод, предназначенные для записи значения свойства компонента.

 

Пример описания свойств объекта:

type

TMyObject = class // Объявление нового класса

private
FInt: integer; // Объявление целочисленного поля

FReal: real; // Объявление вещественного поля

FChar: char; // Объявление поля символьного типа

published
property Prop1:integer read FInt write FInt;

// Объявление свойства Prop1, с помощью

// которого можно читать значение поля

// FInt и записывать данные в это же поле
property Prop2:real read FRea1;

// Свойство Ргор2 предназначено

// только для чтения значения поля FReal
property РrорЗ:char write FChar;

// Свойство Рrор3 предназначено

// только для записи данных в поле FChar

end;

 

После такого объявления программист получает доступ к полям объекта через три свойства Prop1, Prop2 и Рrор3.

 



<== предыдущая лекция | следующая лекция ==>
Конструкторы и деструкторы | Дискретная случайная величина


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


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

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

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


 


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

 
 

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

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