ВУЗ:
Составители:
Рубрика:
24
Гораздо лучший подход - написать метод для доступа к полям объекта, что позволит
добиться настоящей инкапсуляции и исключит возможность прямой модификации данных
объекта. В этом случае вместо доступа к полю объекта вызывается соответствующий метод. У
такого подхода много преимуществ, например:
1) Надежность данных. Можно предотвратить некорректные изменения данных, выполнив
в методе дополнительную проверку значения на допустимость. Тем самым повышается гарантия
того, что экземпляр объекта будет всегда находиться в “хорошем” состоянии.
2) Целостность ссылок. Перед доступом к объекту, связанному с данным объектом,
можно удостовериться, что косвенное поле содержит корректное значение. Более того, если
обнаружится некорректное значение (например, если экземпляр объекта, на который указывает
ссылка, больше не существует), то можно инициировать действия по исправлению положения,
например, заново создать связанный экземпляр объекта.
3) Предусмотренные побочные эффекты. Можно гарантировать, что каждый раз, когда
выполняется обращение к полю объекта, синхронно с обращением выполняется какое-либо
специальное действие. Например, можно прослеживать изменения в объекте или подсчитывать
число обращений к нему для целей сбора статистики.
4) Сокрытие информации. Когда доступ к данным осуществляется только через методы,
можно скрыть детали реализации объекта. Позднее, если реализация изменится, придется
изменить лишь реализацию методов доступа к полям. Те же части программы, которые
использовали задействованный класс, не будут затронуты.
3 Видимость элементов объекта
До сих пор предполагалось, что все поля и методы какого-либо объекта одинаково
видимы и доступны при условии, что для доступа к ним используется ссылка на действительного
представителя класса. Если в случае переменных типа record (запись) это действительно так, то в
случае объектов такое допущение относительно видимости элементов не всегда приемлемо.
Техника сокрытия информации - одна из базовых концепций ООП. Object Pascal
определяет несколько стандартных ключевых слов, называемых директивами , которые
изменяют видимость элементов, объявленных внутри интерфейса класса.
Определение класса может быть разделено на произвольное количество разделов, каждый
из которых начинается с одного из ключевых слов, известных как стандартные директивы
:
private, protected, public и published.
Синтаксис для разделения определения класса на разделы видимости:
type
ИмяКласса = class(Родитель)
<объявление поля или метода>
. . .
<объявление поля или метода>
<директива>
<объявление поля или метода>
. . .
<объявление поля или метода>
. . .
<директива>
<объявление поля или метода>
. . .
<объявление поля или метода>