Главная страница
Навигация по странице:

  • Листинг

  • реферат Простые операторы. Характеристика форм.docx. Лр операторы и выражения Delphi


    Скачать 1.3 Mb.
    НазваниеЛр операторы и выражения Delphi
    Дата17.04.2023
    Размер1.3 Mb.
    Формат файлаdoc
    Имя файлареферат Простые операторы. Характеристика форм.docx.doc
    ТипПрограмма
    #1067638
    страница13 из 26
    1   ...   9   10   11   12   13   14   15   16   ...   26

    Ограничение видимости членов класса


    При описании класса программист имеет право определять степень доступности (видимости) его полей, свойств и методов. Это один из способов защиты наиболее критичных элементов класса от несанкционированного вмешательства сторонних разработчиков. Область видимости поля (метода) класса зависит от того, в какой из четырех возможных секций оно объявлено: private, protected, public и published (листинг 3.11).


    Листинг 3.11. Секции видимости членов класса




    type

    TAutomobile = class private

    ... { секция частных объявлений }

    protected

    ... { секция защищенных объявлений }

    public

    ... { секция общих объявлений }

    published

    ... { секция опубликованных объявлений }

    end;
    Поля и методы, доступ к которым нежелателен, обычно размещаются в секциях private и protected. Наиболее защищена секция private. К размещенным в ней полям и методам возможно обращение только из того же программного модуля, в котором описан этот класс. Секция protected несколько приоткрывает завесу секретности — находящаяся в ней информация без каких-либо ограничений доступна для классов-потомков. Секция public предоставляет объявленные в ней поля и методы для общего пользования всем желающим. Секция published самая доброжелательная. Например, объявленными в ней данными умеет пользоваться Инспектор объектов. Это возможно благодаря тому, что для этой секции класса генерируется информация о времени выполнения (Run Time Type Information, RTTI). Поэтому в секции published обычно объявляют все свойства и обработчики событий объекта.

    Свойства объекта


    Как правило, объект не должен предоставлять прямой доступ к своим полям. Это требование инкапсуляции, благодаря которому поддерживается целостность объекта. Поэтому при проектировании класса одновременно с полями объявляют особых посредников, называемых свойствами (properties).

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

    property Имя_свойства: Тип_свойстваRead (способчтения)

    Write (способзаписи);

    За инструкциями Read и Write могут следовать названия процедур, соответственно отвечающих за чтение данных из поля и запись данных в поле.

    Возьмем в качестве примера класс двигателя TEngine, он обладает парой полей fEnabled и fAutomobile, которые следует обязательно защитить. Листинг 3.12 демонстрирует один из возможных сценариев усовершенствования класса.


    Листинг 3.12. Объявление свойств




    type TEngine=class private

    fEnabled :boolean; //двигатель включен - true, выключен - false fAutomobile:TAutomobile; //ссылка на автомобиль

    public

    procedure SetEnabled(Value:Boolean); //запуск или останов двигателя

    function GetEngineState:boolean; //состояние двигателя

    published

    property Enabled:boolean Read fEnabled Write SetEnabled;

    property Automobile:TAutomobile Read fAutomobile;

    end;
    Все поля класса "спрятаны" в секцию private, что существенно усложнит обращение к полям извне. Наоборот, методы и свойства, к которым мы намерены разрешить полный доступ, размещены в секции публичных объявлений. Теперь для включения/отключения двигателя надо воспользоваться свойством Enabled. Еще большую степень защиты мы обеспечили полю

    fAutomobile, хранящему ссылку на автомобиль, в который установлен двигатель — свойство допускает только чтение информации из поля.

    1   ...   9   10   11   12   13   14   15   16   ...   26


    написать администратору сайта