Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основные механизмы и положения объектно-ориенти...doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
261.12 Кб
Скачать

Implementation

Procedure ABC4.SetA(NewA: Double); {Описание метода SetA}

Begin

fa := NewA; {Занесение нового значения в private-свойство fa}

fc := fa * fb; {Пересчет произведения и занесение результата в свойство fc} .

end;

Procedure ABC4.SetB(NewB: Double); {Описание метода SetB}

Begin

fb := NewB; {Занесение нового значения в private-свойство fb}

fc := fa * fb; {Пересчет произведения и занесение результата в свойство fc}

end;

Function ABC4.GetA: Double; {Описание метода GetA}

Begin

Result := fa; {Результат функции — значение private-свойства fa}

end ;

Function ABC4.GetB: Double; {Описание метода GetB}

Begin

Result := fb; {Результат функции — значение private-свойства fb}

end;

Function ABC4.GetC: Double; {Описание метода GetC}

Begin

Result := fc; {Результат функции — значение private-свойства fc}

end;

end. {Окончание модуля}

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

Заметим, что вместо функции чтения и процедуры установки может, быть указано одно из обычных свойств, вне зависимости от его области видимости. В рассмотренном примере такую возможность следует применить при описании property-свойств а, b и с, указав вместо функций чтения свойства fa, fb и fc, соответственно. Модифицированный текст модуля приведен в листинге 5.9.

Листинг 5.9. Пример описания и использования property-свойства (модифицированный)

Unit Properties; {Заголовок модуля}

Interface

Type

ABC4 = class

Private

fa, fb, fc: Double; {Все свойства имеют узкую область видимости}

protected {Все методы имеют область видимости protected}

Procedure SetA(NewA: Double); {Процедура установки значения свойства fa}

Procedure SetB(NewB: Double); {Процедура установки значения свойства fb}

Published {Раздел описания property-свойств, доступных вызывающему фрагменту программы}

property A:Double read fa write SetA; {Для установки значения property-свойства используется метод SetA, а для чтения private-свойство fa}

property B:Double read fb write SetB;

{Для установки значения property-свойства используется метод SetB, а для чтения private-свойство fb}

property С:Double read fc;

{Для чтения property-свойства используется значение private-свойства fc}

end;

Implementation

Procedure ABC4.SetA(NewA: Double); {Описание метода SetA}

Begin

fa := NewA;

fc := fa * fb;

end;

Procedure ABC4.SetB(NewB: Double); {Описание метода SetB}

Begin

fb:= NewB;

fc:= fa * fb;

end;

end. {Окончание модуля}

Такой подход также не дает возможности нарушить целостность данных вызывающим фрагментом, так как не обеспечивается прямой доступ к установке значений свойств fa, fb и fc.