X Код для використання на сайті:
Ширина px

Скопіюйте цей код і вставте його на свій сайт

X Для завантаження презентації, скористайтесь соціальною кнопкою для рекомендації сервісу SvitPPT Завантажити собі цю презентацію

Презентація на тему:
Технологія візуального проектування програм (на прикладі використання Delphi-середовища)

Завантажити презентацію

Технологія візуального проектування програм (на прикладі використання Delphi-середовища)

Завантажити презентацію

Презентація по слайдам:

Слайд 1

Технологія візуального проектування програм (на прикладі використання Delphi-середовища) 1. Головні складові частини середовища програмування Delphi. 2. Технологія Two-Way Tools . 3. Обробка стандартних повідомлень Windows. 4. Нова об’єктна модель Object Pascal. Особливості використання примірників. Властивості. Механізм подій. Вказівники на методи. Область видимості published. RTTI та методи класів. Технологія візуального проектування програм

Слайд 2

Головні складові частини середовища програмування Delphi Дизайнер форм (Form Designer) Вікно текстового редактора (Editor Window) Палітра компонент (Component Palette) Інспектор об'єктів (Object Inspector) Технологія візуального проектування програм

Слайд 3

Технологія Two-Way Tools Two-Way Tools характеризується синхронізацією візуального проектування програм (на основі дизайнера форм Form Designer та інспектора об'єктів Object Inspector) із класичним ("кодовим") програмуванням (на основі текстового редактора Editor Window). Технологія візуального проектування програм

Слайд 4

Технологія Two-Way Tools (ілюстрація 1) Технологія візуального проектування програм

Слайд 5

Технологія Two-Way Tools (ілюстрація 2) Технологія візуального проектування програм

Слайд 6

Обробка стандартних повідомлень Windows Як і в OW для Windows-повідомлення в Object Pascal обробник визначається як деякий динамічний метод. Специфічною ознакою метода-обробника є наявність директиви message, за якою слідує індекс методу – ідентифікатор Windows-повідомлення Приклад (заголовок обробника): procedure WMSize(var Mes: TWMSize); message WM_Size; Приклад (реалізація обробника): procedure TForm1.WMSize(var Mes: TWMSize); begin inherited; if Mes.Width

Слайд 7

Особливості обробників стандартних Windows-повідомлень Для більшості Windows-повідомлень в Object Pascal (модуль Messages) описані спеціальні типи, як, наприклад, типи: TWMKey, TWMLButtonDown тощо. На відміну від інших віртуальних та динамічних методів, при перекритті обробників повідомлень директиву override не потрібно вказувати; належить тільки зберегти в директиві message той самий індекс. В обробниках (і тільки в них) можна викликати метод-предок, просто вказавши ключове слово inherited (предок буде знайдений за індексом методу). Усе ж при проектуванні програм значно частіше використовується розроблений у Object Pascal так званий механізм подій. TWMSize, TWMMouse, Технологія візуального проектування програм

Слайд 8

Дві об’єктні моделі в Object Pascal класична модель (відповідні об’єкти синтаксично визначаються традиційним чином – на основі використання службового слова object ); нова модель (“нові об’єкти” – “класи” – синтаксично визначаються з використанням службового слова class). TControl = class(TComponent) . . . end; Технологія візуального проектування програм

Слайд 9

Особливості використання примірників Примірники класів у новій моделі можливі тільки динамічного походження. ( (Button1)=4). Створення примірників – конструктором Create (Create = New+Init). Символ розіменування в новій моделі "^" не використовується. SizeOf Технологія візуального проектування програм

Слайд 10

Властивості Наявність властивостей можна розглядати як поглиблення концепції інкапсуляції: для всіх стандартних класів всі поля (без жодного винятку!) є безпосередньо недоступними (описуються як private). Властивості ж саме забезпечують відповідний доступ (використовуючи приписані властивостям методи читання/запису значень таких полів). (Настійливо рекомендується дотримуватись цих правил і при розробці своїх власних класів). У загальному випадку при визначенні властивості використовуються: поле (до якого ця властивість забезпечує доступ); два методи: read і write (якими забезпечують читання/запис значення зазначеного поля). Технологія візуального проектування програм

Слайд 11

Приклад (фрагменти з опису TControl) TControl = class(TComponent) { unit Controls } private FLeft: Integer; FVisible: Boolean; procedure SetLeft(Value: Integer); procedure SetVisible(Value: Boolean); public property Visible : Boolean read FVisible write SetVisible default True; published property Left: Integer read FLeft write SetLeft; end; Властивість (property) Left пов'язана з полем FLeft: write-методом властивості є SetLeft, яким встановлюється “нове” значення; замість read-метода вказано безпосередньо поле Fleft. Технологія візуального проектування програм

Слайд 12

Приклад write-метода (реальний фрагмент з Object Pascal ) property Visible : Boolean read FVisible write SetVisible default True; procedure TControl.SetVisible(Value: Boolean); begin if FVisible Value then begin VisibleChanging; FVisible := Value; Perform(CM_VISIBLECHANGED, 0, 0); RequestAlign; end; end; Технологія візуального проектування програм

Слайд 13

Використання властивостей Властивості можуть використовуватись подібно до полів в операторах присвоювання: AControl.Visible:= AValue; AVariable := AControl.Visible; Проте компілятор буде транслювати такі оператори присвоювання у виклики методів write та read (з опису відповідної властивості). (Хоча зовні використання властивостей виглядає подібно до звичайних полів, за “лаштунками” присвоювань можуть використовуватись різноманітні “побічні” дії. І це дуже важлива обставина для забезпечення візуального проектування: “побічною” дією найчастіше є “перемальовування” змінюваної візуальної компоненти). Технологія візуального проектування програм

Слайд 14

Механізм подій Події — це властивості процедурного типу, призначені для забезпечення реакції на дії користувача. (Більш того із типом властивостей пов’язуються не просто процедури, а процедури-методи, тобто методи деяких класів). Приклад: property OnMyEvent: TMyEvent read FOnMyEvent write FOnMyEvent Процедури-значення таких властивостей прийнято називати обробниками подій. Усі події у Delphi прийнято іменувати з "On": OnClick, OnDblClick, OnCreate тощо. Технологія візуального проектування програм

Слайд 15

Автоматична генерація заготівок обробників подій Двічі клацнувши лівою кнопкою миші в Інспекторі об'єктів на сторінці Events у полі події, можна одержати в програмі заготівку обробника (як метода поточної форми). Ім'я метода буде складатися з імені компонента та імені події (без "On"). Якщо, наприклад, вказані дії застосувати до кнопки Button1 із форми Form1, то події OnClick (для цієї кнопки) буде зіставлятись обробник Button1Click (з порожнім процедурним блоком) як метод форми Form1: procedure TForm1.Button1Click(Sender: TObject); begin end; (Того ж результату можна досягти двічі клацнувши на Button1). Технологія візуального проектування програм

Слайд 16

Приклад подій та обробників (фрагменти з опису TControl, що пов'язуються з подіями Click та DblClick) TControl = class(TComponent) { unit Controls } private FOnClick: TNotifyEvent; FOnDblClick: TNotifyEvent; procedure WMLButtonDblClk(var Message: TWMLButtonDblClk); message WM_LBUTTONDBLCLK; procedure WMLButtonUp(var Message: TWMLButtonUp); message WM_LBUTTONUP; protected procedure Click;dynamic; (*спричиняє появу події OnClick*) procedure DblClick;dynamic;(*спричиняє появу події OnDblClick*) property OnClick: TNotifyEvent read FOnClick write FOnClick; property OnDblClick: TNotifyEvent read FOnDblClick write FOnDblClick; end; Технологія візуального проектування програм

Слайд 17

Приклад подій та обробників (продовження) procedure TControl.Click; begin if Assigned(FOnClick) then FOnClick(Self); end; procedure TControl.DblClick; begin if Assigned(FOnDblClick) then FOnDblClick(Self); end; procedure TControl.WMLButtonDblClk(var Message: TWMLButtonDblClk); begin SendCancelMode(Self); inherited; if csCaptureMouse in ControlStyle then MouseCapture:=True; if csClickEvents in ControlStyle then DblClick; DoMouseDown(Message, mbLeft, [ssDouble]); end; (У тілі WMLButtonUp міститься виклик Click). Технологія візуального проектування програм

Слайд 18

Делегування подій Спосіб реакції на подію одного об'єкта може присвоюватись (делегуватись) іншому: MyObject1.OnClick := MyObject2.OnClick Щоб описати такий тип процедури, який по присвоюванню був би суміснім з методом (тобто фактично додатково забезпечував би передачу неявного параметра Self), слід додавати до опису процедурного типу зарезервовані слова of object. Вказівники на зазначені процедури отримали назву вказівників на методи. Вказівник на метод – це, грубо кажучи, те ж саме, що і вказівник на процедуру, але процедура має бути процедурою об'єкта (procedure … of object), тобто методом. Приклад (опис типу TNotifyEvent): TNotifyEvent = procedure (Sender: TObject) of object Технологія візуального проектування програм

Слайд 19

Визначення власних подій Delphi дозволяє визначати власні події, до того ж власних типів: type TMyEvent = procedure(Sender: TObject; var AValue: Char) of object; (* Новий тип події з передачею літерного значення *) TOb1 = class; (* Об'єкт із новою подією OnMyEvent типу TMyEvent *) private FOnMyEvent: TMyEvent; . . . property OnMyEvent: TMyEvent read FOnMyEvent write FOnMyEvent; . . . procedure MyEvent(var AValue: Char); dynamic; (* Метод MyEvent – “постачальник”, ініціатор події OnMyEvent *) end ; Технологія візуального проектування програм

Слайд 20

Визначення власних подій (продовження) procedure TOb1.MyEvent(var AValue: Char); begin if Assigned(FOnMyEvent) then FOnMyEvent(Self,AValue); end; Делегування подій (типу TMyEvent): type T0b2 = class; procedure SetVal_1(Sender: TObject; var AVal: Char); procedure SetVal_2(Sender: TObject; var AVal: Char); . . . end; var Ob1: TOb1; Ob2: T0b2; . . . Ob1 := TOb1.Create; Ob2 := TOb2.Create; if (* умова *) then Obj1.OnMyEvent := Obj2.SetVal_1 else Obj1.OnMyEvent := Obj2.SetVal_2 Технологія візуального проектування програм

Слайд 21

Типи обробників подій Спільним для усіх типів є параметр Sender, що вказує на об'єкт – джерело події. TNotifyEvent – це найпростіший тип події, він окрім Sender не має більше параметрів: TNotifyEvent= procedure(Sender:TObject) of object. Тип, призначений для подій про натискання клавіш, передбачає передачу програмісту кодів клавіш; тип, призначений для подій про пересування миші – передачу координат миші і т.п. Приклади деяких типів обробників: TMouseEvent = procedure(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer) of object; TMouseMoveEvent = procedure(Sender: TObject; Shift: TShiftState; X, Y: Integer) of object; Технологія візуального проектування програм

Слайд 22

Типи обробників подій (продовження) TKeyEvent = procedure(Sender: TObject; var Key: Word; Shift: TShiftState) of object; TKeyPressEvent = procedure(Sender: TObject; var Key: Char) of object; TDragOverEvent = procedure(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean) of object; TDragDropEvent = procedure(Sender, Source: TObject; X, Y: Integer) of object; TStartDragEvent = procedure(Sender: TObject; var DragObject: TDragObject) of object; TEndDragEvent = procedure(Sender, Target: TObject; X, Y: Integer) of object; Технологія візуального проектування програм

Слайд 23

Області видимості. Область видимості published Традиційні області видимості: public; private; protected. У Delphi використовується додатково ще одна область – published. Вона безпосередньо пов’язана з візуальним проектуванням програм: представлені у відповідній секції властивості об'єкта (їх ще називають опублікованими) видимими будуть не тільки під час виконання додатка (у run time), але й в інспекторі об'єктів під час розробки програм (у design time). У дочірніх класах можна переносити методи й властивості з однієї області видимості в іншу. Технологія візуального проектування програм