Вход/Регистрация
Технологии программирования
вернуться

Костерин В В

Шрифт:

4. ИНКАПСУЛЯЦИЯ

Классическое правило объектно-ориентированного программирования утверждает, что для обеспечения надежности нежелателен прямой доступ из других объектов к полям объекта: чтение и обновление их содержимого должно производиться посредством вызова соответствующих методов. Это правило и называется инкапсуляцией. До сих пор идея инкапсуляции внедрялась в программирование только посредством призывов и примеров в документации, но в языке же Object Pascal появилась соответствующая конструкция. В объектах Object Pascal пользователь объекта может быть полностью отгорожен от его полей при помощи свойств.

Работу со свойствами рассмотрим на следующем примере. Пусть мы создали при помощи дизайнера форм Delphi экранную форму Forml с двумя элементами визуальных компонент: Button 1 и Label 1 (рис. 1).

Рис. 1. Экранная форма примера

Кликнем кнопку Button1 и отредактируем исходный текст модуля до следующего текста:

unit testir;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

Label1: TLabel;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

type

TSomeType = String;

type

TAnObject = class(TObject)

private

FValue: TSomeType;

function GetAProperty: TSomeType;

procedure SetAProperty (ANewValue: TSomeType);

public

property AProperty: TSomeType

read GetAProperty

write SetAProperty;

end;

var

Form1: TForm1;

AnObject: TAnObject;

implementation

{$R *.DFM}

procedure TForm1.ButtonlClick(Sender: TObject);

begin

AnObject:= TAnObject.Create;

AnObject.AProperty:= 'Привет!';

Label1.Caption:= AnObject.AProperty;

end;

procedure TAnObject.SetAProperty(

ANewValue: TSomeType);

begin

FValue:= ANewValue; {Засылка значения в поле}

end;

function TAnObject.GetAProperty: TSomeType;

begin

GetAProperty:= FValue; {Чтение значения из поля}

end;

end.

Сохраним проект (Save Project As). При сохранении проекта укажем новое имя модуля — testir и новое имя проекта — PrTestir. Рассмотрим текст получившегося файла проекта (пункты меню View и далее Project Source):

program PrTestir;

uses

Forms,

testir in 'testir.pas' {Form1};

{$R *.RES}

begin

Application.Initialize;

Application.CreateForm(TForm1, Form1);

Application.Run;

end.

Данный файл содержит текст основной программы PrTestir. К основной программе подключаются модуль Forms (для работы с формой) и исходный код модуля testir. Три исполняемых оператора основной программы последовательно организуют новый вычислительный процесс выполнения написанной программы PrTestir, создадут объект формы Form1, осуществят запуск программы на выполнение (Run).

  • Читать дальше
  • 1
  • ...
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: