Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЯП / lec_11.ppt
Скачиваний:
20
Добавлен:
19.04.2015
Размер:
1.07 Mб
Скачать

Свойства

Свойства – это особые характеристики класса, специально введенные для

обеспечения принципа инкапсуляции.

Свойства в своем роде замещают поля класса, к которым происходит обращение

извне.

Следование стилю ООП подразумевает

недоступность полей объекта извне и

обращение к ним с помощью

соответствующих свойств.

1

При запросе значения свойства оно считывается

из соответствующего поля.

При попытке присвоить свойству какое-либо значение

вызывается процедура, изменяющая значение поля.

В таком стиле написаны компоненты библиотеки визуальных компонентов VCL (visual component library) Delphi.

2

Физически после компиляции программы

свойства как таковые не существуют

они заменяются на соответствующие методы или

поля.

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

свойство нельзя передавать в подпрограмму как параметр-переменную,

к свойству нельзя применять адресную операцию.

3

Объявление свойства:

…..

prorerty имя свойства: тип свойства способ чтения и записи значения свойства;

тип свойства – может быть любым за

исключением файлового типа.

способ чтения и записи значения свойства

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

4

Эта часть имеет вид:

read имя метода или поля write имя метода или поля default значение по умолчанию

Зарезервированные слова не соответствуют одноименным стандартным процедурам.

Здесь они используются для обозначения частей конструкции, с помощью которой объявляется свойство.

Методы здесь представляются только названиями, без списка параметров и типа возвращаемого результата (для функций).

5

Часть read - представляет механизм для считывания (возвращения) значения свойства.

Указанный здесь метод должен быть функцией без параметров, возвращающей результат того же типа, что и свойство.

Если после read идет имя поля, то и оно должно

быть аналогичного типа.

В случае отсутствия части read получить значение этого свойства нельзя,

то есть это свойство только для записи.

6

В части write - дается механизм задания значения свойства.

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

Значение, передаваемое параметру определяет

новое значение свойства.

Если же вместо процедуры используется поле, то оно должно быть

того же типа, что и свойство.

7

В случае отсутствия части write изменить значение этого свойства нельзя, то есть это свойство только для чтения

Часть default -

используется в том случае, если соответствующему свойству необходимо

присвоить некоторое значение по умолчанию.

Задаваемое таким образом значение должно иметь тот же тип, что и свойство.

8

Уровень инкапсуляции свойства Поля класса располагаются в скрытой секции.

Для свойств может быть предусмотрен один из следующих уровней инкапсуляции:

Свойства, имеющие статус published,

автоматически доступны для редактирования в окне инспектора объектов.

Свойства, объявленные в секции public,

доступны только во время выполнения.

9

Пример

Объявление свойства, которое может использоваться для разрешения или запрета импорта каких-либо данных

в компонент.

Значением свойства можно управлять, и программно, и, в том числе, через инспектор объектов в процессе проектирования приложения.

10

Соседние файлы в папке ЯП