OP_9.ppt
- Количество слайдов: 14
Свойства Свойство - это средство Pascal Delphi, позволяющее определять интерфейс доступа к полям и методам класса. В Delphi различают: • простые или скалярные свойства; • свойства-массивы; • индексируемые свойства или свойства со спецификацией index; • процедурные свойства. 1
Простые свойства Используются для ограничения доступа к полю и при необходимости выполнения дополнительных действий при чтении и записи. Property <Имя свойства>: <Тип> [read <Метод чтения или имя поля>] [write <Метод записи или имя поля>] [stored <Метод или булевское значение>] [default <Константа>]; read - если метод чтения не определен, то свойство не доступно для чтения; write - если метод записи не определен, то свойство не доступно для записи; stored – для опубликованных свойств – хранить ли значение в файле формы. dfm; default - – для опубликованных свойств – значение по умолчанию. 2
Простые свойства (2) Пример: private FValue: integer; procedure Set. Value(AValue: integer); function Store. Value: boolean; published property Value: integer read FValue write Set. Value stored Store. Value default 10; . . . Обращение в программе: A. Value : = n; {A. Set. Value(n); } K : = A. Value; {K : = A. FValue; } 3
Примитивный графический редактор 4
Объектная декомпозиция Активизировать 5
Диаграмма классов предметной области 6
Модуль Figure Unit Figure; Interface Uses extctrls, Graphics; Type TMy. Figure=class private x, y, FRadius: Word; FColor: TColor; Image: TImage; procedure Clear; procedure Set. Size(ar: word); procedure Set. Color(a. Color: TColor); public Constructor Create(a. Image: TImage; ax, ay, ar: Word; a. Color: TColor); Procedure Draw; virtual; abstract; Property Radius: Word write Set. Size; Property Color: TColor write Set. Color; end; 7
Модуль Figure (2) TMy. Circle=class(TMy. Figure) public Procedure Draw; override; end; TMy. Square=class(TMy. Figure) public Procedure Draw; override; end; Implementation Constructor TMy. Figure. Create; Begin inherited Create; Image: =a. Image; x: =ax; y: =ay; FRadius: =ar; FColor: =a. Color; Draw; End; 8
Модуль Figure (3) Procedure TMy. Figure. Clear; Var Temp. Color: TColor; Begin Temp. Color: =FColor; FColor: =Image. Canvas. Brush. Color; Draw; FColor: =Temp. Color; End; Procedure TMy. Figure. Set. Size; Begin Clear; FRadius: =ar; Draw; End; Procedure TMy. Figure. Set. Color; Begin Clear; FColor: =a. Color; Draw; End; 9
Модуль Figure (4) Procedure TMy. Circle. Draw; Begin Image. Canvas. Pen. Color: =FColor; Image. Canvas. Ellipse(x-FRadius, y-FRadius, x+FRadius, y+FRadius); End; Procedure TMy. Square. Draw; Begin Image. Canvas. Pen. Color: =FColor; Image. Canvas. Rectangle(x-FRadius, y-FRadius, x+FRadius, y+FRadius); End. 10
Модуль Main unit Main; interface uses Windows, Messages, Sys. Utils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Com. Ctrls, Std. Ctrls, Ext. Ctrls; type TMain. Form = class(TForm) Image: TImage; Color. Button: TButton; Exit. Button: TButton; Radio. Group: TRadio. Group; r. Label: TLabel; r. Edit: TEdit; Up. Down: TUp. Down; Color. Dialog: TColor. Dialog; 11
Модуль Main (2) procedure Form. Activate(Sender: TObject); procedure Image. Mouse. Down(Sender: TObject; … ); procedure Up. Down. Click(Sender: TObject; …); procedure Color. Button. Click(Sender: TObject); procedure Exit. Button. Click(Sender: TObject); end; var Main. Form: TMain. Form; implementation uses Figure; Var C: TMy. Figure; {$R *. dfm} procedure TMain. Form. Activate(Sender: TObject); begin Image. Canvas. Brush. Color: =cl. White; Image. Canvas. Pen. Color: =cl. Black; end; 12
Модуль Main (3) procedure TMain. Form. Image. Mouse. Down(Sender: TObject; Button: TMouse. Button; Shift: TShift. State; X, Y: Integer); begin if Button=mb. Left then case Radio. Group. Item. Index of 0: begin C. Free; C: =TMy. Circle. Create(Image, X, Y, strtoint(r. Edit. Text), Image. Canvas. Pen. Color); end; 1: begin C. Free; C: =TMy. Square. Create(Image, X, Y, strtoint(r. Edit. Text), Image. Canvas. Pen. Color); end; 13 end;
Модуль Main (4) procedure TMain. Form. Up. Down. Click(Sender: TObject; Button: TUDBtn. Type); begin if C<>nil then C. Radius: =strtoint(r. Edit. Text); end; procedure TMain. Form. Color. Button. Click(Sender: TObject); begin if Color. Dialog. Execute then Image. Canvas. Pen. Color: =Color. Dialog. Color; if C<>nil then C. Color: =Image. Canvas. Pen. Color; end; procedure TMain. Form. Exit. Button. Click(Sender: TObject); begin Close; end; initialization finalization C. Free; 14 end.


