Добавил:
Рыльский филиал МГТУ ГА. Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Теория / Конспект Лекций

.pdf
Скачиваний:
0
Добавлен:
29.03.2024
Размер:
851.63 Кб
Скачать

РАЗДЕЛ 2. Объектно - ориентированное программирование Тема 2.1. Основные понятия визуального программирования

2.1.1. Структурная единица визуального программирования - компонент

Объектно-ориентированное программирование (ООП) представляет собой дальнейшее развитие идей структурного программирования, основной целью которого является создание программ простой структуры. Это достигается за счет разбиения программы на максимально обособленные части – декомпозиции.

ООП это такой подход к написанию программ, который основывается на объектах, а не на функциях и процедурах. При представлении реального объекта с помощью программного необходимо выделить в первом его существенные особенности. Их список зависит от цели моделирования. Выделение существенных с точки зрения рассмотрения свойств называется абстрагированием. Таким образом, программный объект — это абстракция. Детали реализации объекта, то есть внутренние структуры данных и алгоритмы их обработки, скрыты от пользователя и недоступны для непреднамеренных изменений.

Визуальное программирование — способ создания программы для ЭВМ путём манипулирования графическими объектами.

Технология визуального программирования позволяет строить интерфейс будущей программы из специальных компонентов, реализующих нужные свойства. Количество таких компонентов достаточно велико. Каждый компонент содержит готовый программный код и все необходимые для работы данные, что избавляет программиста от создания того, что уже создано ранее. Подобный подход во много раз сокращает время написания программы. Кроме того, быстрота создания программного кода достигается за счёт того, что значительная часть текста формируется автоматически.

Компонент - визуальный объект, скрывающий программный код для реализации определённой задачи.

Понятие формы

Языки визуального программирования делятся на несколько типов, одним из которых являются языки, в интегрированной среде разработки которых на этапе проектирования интерфейса применяются формы, с возможностью настройки их свойств. Примеры: Delphi, C++ Builder, Microsoft Visual Studio, Visual Basic, Lazarus.

Среда визуального программирования позволяет увидеть объекты на экране на этапе проектирования приложения, дает возможность настроить объекты, изменяя их расположение, размеры и другие свойства. Форма является контейнером объектов, в то же время форма также является объектом. При размещении объекта на форме основные параметры объекта

31

сохраняются в исполняемом программном коде. При этом объектами также являются программные блоки или фрагменты программного кода, из которых «собирается» проектируемое приложение.

Форма (Form) –это объект, представляющий собой окно, на котором размещаются элементы управления. Форм в приложении может быть несколько — по требуемому числу открываемых при выполнении диалога окон, их можно добавлять и удалять.

Основные элементы среды разработчика

Lazarus это богатая возможностями среда разработки для создания самостоятельных графических и консольных приложений. В настоящее время она работает на Linux, FreeBSD и Windows и предоставляет настраиваемый редактор кода и визуальную среду создания форм вместе с менеджером пакетов, отладчиком и графическим интерфейсом, полностью интегрированным с компилятором FreePascal.

Среда Lazarus состоит из нескольких окон. Месторасположение любого окна можно изменить на экране независимо от других.

Рисунок 7 – Окна среды Lazarus

На рисунке 7 отображены основные окна: главное окно программы, Object Inspector (Инспектор объектов), Source Editor (Редактор исходного кода), Form1 (Окно формы) и Messages (Сообщения).

32

Главное окно системы Lazarus обычно расположено в верхней части экрана. Как и в других программах, главное окно состоит из нескольких частей: строки заголовка, строки меню и панели инструментов

В строке заголовка главного окна указано название открытого в данный момент проекта: project1. (Рисунок 8). Под строкой заголовка находится строка меню – один из наиболее важных элементов каждой программы или системы. Здесь можно найти основные команды системы. Ниже строки меню расположена панель инструментов с наиболее часто используемыми кнопками команд. Для того чтобы узнать название кнопки, достаточно навести на нее указатель мыши. В главном окне есть панель инструментов, которая отличается от тех, что были известны вам ранее. Эта панель называется палитрой компонентов. Здесь находятся компоненты, которые будут необходимы во время программирования. Если навести указатель мыши на кнопку компонента, отобразится его название.

Рисунок 8 – Главное окно Lazarus

В левой части экрана находится очень важное окно Object Inspector (Инспектор объектов). По ходу программирования это окно используется особенно часто. Объекты программы настраиваются именно здесь. Выбрав любой объект, здесь можно просмотреть и изменить его свойства.

Форма – это бланк будущей программы. Каждая программа имеет, по крайней мере, одно окно и, следовательно, не менее одной формы. Поэтому во время работы с программой вы всегда видите на экране окно формы. Макет первого окна называется Form1. Если в программе будет два окна, то второму макету будет дано название Form2 и т.д. Изначально окно формы пустое. При создании программы, на форму размещают необходимые элементы управления. Сетка из точек в окне формы позволяет размещать объекты правильно и аккуратно. Во время работы программы сетки не видно.

Окно Редактор исходного кода содержит программный код программы, и само окно очень похоже на обычный текстовый редактор. Для удобства при редактировании текста программы строки пронумерованы, предусмотрено выделение цветами:

все служебные слова выделяются жирным шрифтом;

знаки препинания становятся красными;

строки с ошибками выделяются коричневым цветом;

33

комментарии могут заключаться в фигурные скобки {} и выделяются синим.

Большую часть кода программы система Lazarus автоматически формирует сама, так как самые простые программы современных графических операционных систем состоят из нескольких тысяч операторов языка программирования. Если надо добавить какой-то оператор в свою программу, это можно сделать именно в этом окне.

Окно сообщений содержит информацию о результатах компиляции проекта. Здесь можно получить список ошибок в коде приложения, а также список предупреждений и подсказок компилятора.

2.1.2. Обзор визуальных компонентов

Структурной единицей визуального программирования является компонента. Компонента представляет собой разновидность объекта, который можно перенести (агрегировать) в приложение из специальной Палитры компонент (Рисунок 9).

Компоненты бывают визуальными и не визуальными. Первые предназначены для организации интерфейса с пользователем. Это различные кнопки, списки, статический и редактируемый текст, изображения и многое другое. Эти компоненты отображаются при выполнении разрабатываемого приложения. Не визуальные компоненты отвечают за доступ к системным ресурсам: драйверам баз данных, таймерам и т.д. Во время разработки они отображаются своей пиктограммой, но при выполнении приложения, как правило, невидимы. Компонента может принадлежать либо другой компоненте, либо форме.

Рисунок 9 – Палитра компонент

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

34

Таблица 2. Группы компонент на палитре.

Группа

Содержание

Standard

Стандартные интерфейсные элементы

Additional

Дополнительныt компоненты

Common Controls

Обычные элементы управления

Dialogs

Стандартные диалоговые окна

Data Controls

Компоненты для управления данными

Misc

Разное

Data Access

Компоненты доступа к базе данных

System

Системные компоненты

Syn Edit

Редакторы кода с визуальной поддержкой синтаксиса

RTTI

Элементы для доступа к данным

IPro

Элементы для системы IPro

SQLdb

Элементы для SQL запросов к базам данным

После создания проекта по умолчанию открывается список группы Standard, содержащий основные интерфейсные элементы, без которых не обходится практически ни одна программа (Таблица 3).

Просмотреть другие группы можно, раскрывая их щелчком по соответствующей вкладке.

Таблица 3. Компоненты группы Standard

 

Компонент

Описание

 

TMainMenu

Главное меню программы

 

 

 

 

TPopupMenu

Локальное меню

 

 

 

 

TButton

Командная кнопка

 

 

 

 

TLabel

Метка. Для размещения однострочных

 

надписей

 

 

 

TEdit

Однострочный текстовый редактор

 

 

 

 

TMemo

Многострочный текстовый редактор

 

 

 

 

TToggleBox

Зависимый переключатель

 

 

 

 

TCheckBox

Независимый переключатель

 

 

 

 

TRadioButton

Радиокнопка

 

 

 

 

TListBox

Список выбора

 

 

 

 

TComboBox

Раскрывающийся список выбора

 

 

 

 

TScrollBar

Линейка скроллинга (прокрутки)

 

 

 

 

 

35

 

TGroupBox

Группа элементов

 

 

 

 

TRadioGroup

Группа радиокнопок

 

 

 

 

TCheckGroup

Группа независимых переключателей

 

 

 

 

TPanel

Панель для объединения нескольких

 

компонентов

 

 

 

TActionList

Список действий

 

 

 

Основные приёмы работы с компонентами

Задача программиста – используя панель компонентов, заполнить форму различными интерфейсными элементами, создавая тем самым внешний вид своей программы.

Для того чтобы расположить компонент на форме необходимо в Палитре Компонент выбрать страницу, где он находится, выбрать мышью компонент и указать на форме место размещения. Отрисованный компонент будет выделен. В инспекторе объектов отобразятся его свойства.

Компоненты на форме можно объединять в группы выделив мышью в рамку. Перемещение выделенной компоненты в пределах формы осуществляется мышью, а для точного позиционирования используется комбинация клавиш управления курсором и клавиши <Ctrl>. Изменить положение также можно заданием соответствующих координат в инспекторе объектов. Мышью удобно изменять размер компонент, точное изменение производиться комбинацией клавиш управления курсором и клавиши <Shift>.

Над компонентами и их группами возможны операции удаления, вырезания, копирования в буфер обмена и вставки из буфера обмена.

Тема 2.2. Свойства и события

2.2.1. Понятие свойства компоненты. Простые, перечислимые и вложенные типы

Компонента имеет набор свойств, которые можно изменять, не изменяя исходный код программы.

Свойства определяют внешний вид, положение и поведение компонента. Перечень всех свойств, доступных для текущего компонента на этапе проектирования содержится в окне Инспектора объектов.

В момент создания компонента Lazarus автоматически присваивает всем его свойствам некоторые начальные значения (значения по умолчанию).

Одними и теми же свойствами могут обладать разные компоненты (Таблица 4).

36

Среди всех свойств компонентов особенно выделяется свойство Name – внутреннее имя компонента. Это свойство имеет каждый компонент (в том числе и форма). Обычно Lazarus автоматически формирует это свойство, добавляя к имени типа компонента его порядковый номер в пределах типа, это имя можно изменить. Однако следует иметь в виду, что для имени компонента можно использовать только латинские символы, цифры и некоторые специальные символы (например, символ подчеркивания). Символы кириллицы и пробелы использовать нельзя. Это связано с тем, что имя компонента, указанное в свойстве Name используется для ссылок на компонент в программном коде (например, для доступа к его свойствам). В этой связи с именем каждого компонента надо определиться на ранней стадии разработки проекта, еще до написания программного кода, чтобы не пришлось корректировать код при изменении имен компонент. Это касается и форм.

Таблица 4. Основные свойства компонент.

Свойство

Назначение

Height

Высота компонента в пикселях

Width

Ширина компонента в пикселях

Left

Положение левой кромки компонента относительно формы

Top

Положение верхней кромки компонента относительно формы

Align

Положение компонента относительно формы: alTop (сверху),

 

alBotton (снизу), alLeft (слева), alRight (справа), alNone

 

(определяется свойствами Left и Top)

Ctl3D

Если True, то компонент имеет объемный вид, иначе –

 

плоский

Color

Цвет фона компонента

Font

Внешний вид (размер, цвет и т.д.) шрифта для надписей

Caption

Надпись на кнопке, текст метки, заголовок окна для формы

Техт

Содержимое поля для текстового окна, которое будет видно

 

при загрузке формы

Visible

Если это свойство имеет значение True, то компонент будет

 

видимым на форме, а если – False, то он будет невидимым

Enabled

Eсли это свойство имеет значение False, то компонент

 

недоступен, т.е. щелчок мыши по этому элементу не даст

 

эффекта, при этом текст, размещенный на нем, будет серым.

 

Если это свойство имеет значение True, то компонент можно

 

будет использовать в процессе работы программы

AutoSize

Если это свойство имеет значение True, то размеры оконного

 

компонента будут автоматически меняться при изменении

 

размера шрифта, или добавления в него не оконных

 

компонентов

 

37

ShowHint Если свойство ShowHint имеет значение True, то всплывает подсказка – текст, содержащийся в свойстве Hint

Focused Если это свойство имеет значение True , то данный компонент получил фокус (только один компонент на форме может получить фокус)

Items Список элементов

Свойства - это переменные, которые влияют на состояние объекта. Существует несколько типов свойств, в зависимости от их

“природы”, т.е. внутреннего устройства:

Простые свойства - это те, значения которых являются числами или строками. Например, свойства Left и Top принимают целые значения, определяющие положение левого верхнего угла компонента или формы. Свойства Caption и Name представляют собой строки и определяют заголовок и имя компонента или формы.

Перечислимые свойства - это те, которые могут принимать значения из предопределенного набора (списка). Простейший пример - это свойство типа Boolean, которое может принимать значения True или False.

Вложенные свойства (составные), как следует из названия, состоят из нескольких значений (или объектов). Object Inspector изображает знак “+” слева от названия таких свойств. Имеется два вида таких свойств: множества и комбинированные значения. Object Inspector

изображает множества в квадратных скобках. Если множество пусто, оно отображается как []. Установки для вложенных свойств вида “множество” обычно имеют значения типа Boolean. Наиболее распространенным примером такого свойства является свойство Style с вложенным множеством булевых значений. Комбинированные значения отображаются

вИнспекторе Объектов как коллекция некоторых величин, каждый со своим типом данных. Некоторые свойства, например, Font, для изменения своих значений имеют возможность вызвать диалоговое окно. Для этого достаточно щелкнуть маленькую кнопку с тремя точками в правой части строки Инспектора Объектов, показывающей данное свойство.

Значения свойств могут изменяться как на этапе проектирования, так и на этапе выполнения проекта (т. е. программно).

В режиме проектирования манипулирование свойствами осуществляется в окне Формы (Forms Designer) или на страничке «Свойства» Инспектора Объектов. Например, для того чтобы изменить свойства Height (высоту) и Width (ширину) кнопки, достаточно «зацепить» мышкой за любой ее угол и раздвинуть до нужного представления. Того же результата можно добиться, просто подставив новые значения свойств Height и Width в окне Object Inspector.

Все изменения значений свойств компонент в режиме выполнения должны осуществляться путем прямой записи строк кода на языке Паскаль. Например:

38

Botton1.Width := 35;

В режиме выполнения пользователь (программист) имеет возможность не только манипулировать всеми свойствами, отображаемыми в Инспекторе Объектов, но и управлять более обширным их списком.

2.2.2. Понятие события. Реакция компонент на события и способы их обработки.

Объекты из библиотеки визуальных компонент, как и объекты реального мира, имеют свой набор свойств и свое поведение - набор откликов на события, происходящие с ними. Событие (Event) - это то, что происходит во время работы программы. В Lazarus каждому событию присвоено имя (Таблица 5).

Таблица 5. Основные события в Lazarus.

Событие

Действие

OnСlick

одинарный клик мышью на объекте

OnCreate

возникает при создании объекта

OnPaint

при появлении окна на экране, прорисовка

OnDblClick

двойной клик мышью на объекте

OnMouseDown

нажатие кнопки мыши на объекте

OnMouseUp

отпускание кнопки мыши на объекте

OnMouseMove

движение курсора мыши по объекту

OnEnter

объект становится выбранным (курсор внутри объекта)

OnExit

объект перестает быть выбранным

OnKeyDown

нажатие любой клавиши на клавиатуре

OnKeyUp

отпускание любой клавиши на клавиатуре

OnKeyPress

нажатие клавиши на клавиатуре

OnChange

изменение целевых свойств объекта, например текста

Свойства объекта определяют его внешний вид (размер, шрифт, цвет и т.д.), а совокупность событий определяют поведенческую сторону объекта. Обработчиком события является процедура, которая выполняет те или иные действия в ответ на наступление события. Т.е. с помощью этой процедуры (обработчика события) реализуется реакция объекта на событие, например на щелчок мыши.

Поведение объекта определяется тем, какие обработчики и для каких событий он имеет.

Таким образом, задача программиста сводится к тому, чтобы определить необходимые свойства объектов в его приложении и написать обработчики тех событий, на которые должен реагировать тот или иной объект приложения.

39

Инспектор объектов позволяет определить обработчики событий, на которые должна реагировать форма или ее компоненты. Во вкладке События в левой колонке приведен список всех событий для данного объекта. Не обязательно разрабатывать обработчики для всех событий. Если для некоторого события отсутствует его обработчик, то приложение просто не будет реагировать на это событие.

В частности, только созданный компонент еще не имеет ни одного обработчика событий. Поэтому он не реагирует ни на какие действия пользователя (события).

Правила написания методов-обработчиков событий для каждого объекта отдельно.

Методы компонентов – это заранее написанные подпрограммы, обращение к которым (вызов) позволяет воздействовать на компонент, например, изменить некоторые его свойства. Методы вызываются из программных кодов.

Чтобы создать обработчик события onClick для кнопки достаточно дважды щелкнуть по самой кнопке. Двойной щелчок по визуальному компоненту, помещенному на форму, создает обработчик для наиболее характерного события, связанного с данным элементом управления.

В результате вы получите заготовку для обработчика события onClick этой кнопки:

procedure TForm1.Button1Click(Sender: TObject); begin

end;

В него надо поместить код, который должен выполняться каждый раз после наступления этого события.

Перечень всех событий для текущего компонента находится в окне Инспектора объектов. Однако для доступа к событиям необходимо перейти на вкладку Events (События). Чтобы подключить требуемый обработчик события, необходимо в окне Инспектора объектов выбрать соответствующее событие и сделать двойной щелчок в правой колонке (в этой колонке показываются имена уже подключенных обработчиков).

В результате этого откроется окно редактора кода, в которое будет добавлен шаблон обработчика события, а в окне Object Inspector, рядом с именем события, появится имя его обработки.

Lazarus присваивает процедуре обработки события имя, которое состоит из двух частей. Первая часть имени идентифицирует форму, содержащую объект (компонент), для которого создана процедура обработки события. Вторая часть имени идентифицирует сам объект и событие. В нашем примере имя формы - Form1, имя объекта - Button1, а имя события - Click.

40

Соседние файлы в папке Теория