Мегаобучалка Главная | О нас | Обратная связь


Листинг 5.4. Описание класса с перегружаемыми методами



2015-11-27 352 Обсуждений (0)
Листинг 5.4. Описание класса с перегружаемыми методами 0.00 из 5.00 0 оценок




Туре

AClass = class

Function Mult(A, B: Integer): Integer; overload;

{Заголовок метода Mult с двумя целочисленными параметрами, возвращающий целочисленное значение}

Function Mult(A, В: Double): Double; overload;

{Заголовок метода Mult с двумя вещественными параметрами, возвращающий вещественное значение}

end;

Function AClass.Mult(A, B: Integer): Integer;

Begin

Result:= A* B;

end; {Описание первого варианта метода Mult}

Function AClass.Mult(A, B: Double): Double;

Begin

Result: = A* B;

end; {Описание второго варианта метода Mult}

 

Области видимости элементов класса

 

Для разграничения доступа к свойствам и методам экземпляров классов между различными частями программы предусмотрены модификаторы доступа («видимости»), приведенные в табл. 5.1.

 

Модификатор доступа в Delphi (как и в Pascal, но в отличие от некото­рых других языков программирования) относится не к конкретному свой­ству или методу класса, а ко всем элементам класса (свойствам и методам), описание которых располагается после указания модификатора. Один и тот же модификатор может указываться в описании класса более одного раза.

Сравнительная таблица модификаторов доступа в Pascal и Delphi Таблица 5.1

Модификатор Область видимости свойства или метода, помеченного модификатором
    Pascal Delphi
Private описание класса и модуль, в котором описан класс, в том числе и для других классов также
Protected не используется как у private + в классах, унаследованных от этого класса
Public любая часть программы так же
Published не используется как у public + в Инспекторе объектов Delphi для визуального построения программ

 

Стандартное описание класса содержит свойства и методы, расположенные в порядке возрастания их видимости, но это правило не является обязательным.

Туре

……………………..

<Имя класса> = class

Private

<Имя свойства 1>: <Тип свойства 1>;

{Описание свойств класса, имеющих область видимости private}

………………..

<Имя свойства N>: <Тип свойства N>;

<Заголовок метода 1>;

{Описание методов класса, имеющих область видимости private}

<3аголовок метода М>;

Protected

<Имя свойства 1>: <Тип свойства 1>;

{Описание свойств класса, имеющих область видимости protected}

………………..

<Имя свойства N>: <Тип свойства N>;

<Заголовок метода 1>;

{Описание методов класса, имеющих область видимости protected}

………………..

<Заголовок метода М>;

Public

<Имя свойства 1>: <Тип свойства 1>;

{Описание свойств класса, имеющих-область видимости public}

………………..

<Имя свойства N>: <Тип свойства N>;

<Заголовок метода 1>;

{Описание методов класса, имеющих область видимости public}

………………..

<Заголовок метода М>;

Published

.........

{Описание специальных свойств

класса (property), имеющих область видимости published}

End;

Различные области видимости свойств и методов объекта предназначены для упрощения поддержания целостности информации в объектах. Рассмотрим класс, в котором содержатся три свойства — а, b и с, причем с является произведением а и b. Если свойства а, b и с будут иметь широкую область видимости public, то есть будут доступны из любого фрагмента программы, то объект — экземпляр такого класса может содержать некорректные данные, так как существует возможность изменения свойств а и b без пересчета свойства с. Для выхода из такой ситуации можно предложить два подхода, и оба они связаны с использованием областей видимости свойств объекта.

Первый подход (см. листинг 5.5) состоит в том, чтобы скрыть свойства а и b от вызывающих подпрограмм, назначив им узкие области видимости, например private или protected. Выбор того или иного модификатора определяется необходимостью использования скрываемых свойств в классах-потомках данного класса. Если такой необходимости нет, то назначается область видимости private, если объекты-потомки должны иметь прямой доступ к свойствам, то назначается область видимости protected.

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

Заметим, что методы установки должны иметь широкую область видимости, чтобы к ним можно было обратиться из любого места программы.

 

Листинг 5.5. Задание областей видимости. Первый подход

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

Interface {Начало интерфейсной части}

Туре

ABC= class {Заголовок класса ABC}

private {Начало области видимости private)

a, b: Double; (Свойства а и b имеют узкую область

видимости}

public {Начало области видимости public}

с: Double;{Свойство с имеет широкую область

видимости}

Procedure SetA(NewA: Double);

{Метод SetK имеет широкую область видимости}

Procedure SetB(NewB: Double);

{Метод SetB имеет широкую область видимости}

end;

Implementation {Начало описательной части}

Procedure ABC.SetA(NewA: Double);

{Описание метода SetA класса А В С}

Begin

а : = NewA; {Установка значения свойства а.]

с := а * Ь; {Обновление значения свойства c-

поддержание целостности данных}

end;

Procedure ABC.SetB(NewB: Double);

{Описание метода SetB класса ABC

Begin

b := NewB; {Установка значения свойства b}

с := a* b; {Обновление значения свойства с -

поддержание целостности данных}

end;

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

 

При такой конструкции класса вызывающая подпрограмма не сможет изменить значения свойств а и Ь, не повлияв тем самым на значение свойства с, поэтому целостность данных не будет нарушена. Однако свойство с доступно для изменения, даже если его значение пересчи­тано при установке значений а и Ь. В итоге оно может измениться, вызвав несоответствие данных. Таким образом, лучше было бы скрыть свойство с, реализовав специальный метод доступа к его значению (листинг 5.6).

 



2015-11-27 352 Обсуждений (0)
Листинг 5.4. Описание класса с перегружаемыми методами 0.00 из 5.00 0 оценок









Обсуждение в статье: Листинг 5.4. Описание класса с перегружаемыми методами

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ...
Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (352)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.007 сек.)