пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

92. Структура объектно-ориентированных программ. Объекты, компоненты, модули на примере Delphi-проектов.

 

Программы Delphi называются проектами, каждый из которых создает файл с расширением .dpr. По умолчанию ему присваивается имя Project и номер.

 

Структура программы:

Program Project1; - название проекта

Uses – далее перечисляются модули, используемые в проекте, в нашем случае это -

Forms, - модуль формы и

Unit1 in ‘Unit1.pas’ [Form1]; - модуль, для которого указано имя файла в котором он располагается и форма с которой он связан

[$R*.res] – команда компилятору

begin - далее идет исполняемы код программы

Aplication.Initialize; - иницилиализирует приложение

Aplication.CreateForm(TForm1,Form1); - создает форму

Aplication.Run; end. – запускает приложение на выполнение

 

Delphi представляет собой полностью объектно-ориентированную среду. Это означает, что в Delphi новые объекты можно создавать либо с нуля, либо используя уже имеющиеся. Это относится ко всем объектам – как визуальным, так и невизуальным (и даже к формам).

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

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

type

TFooObject = class;

После объявления типа объекта можно выполнить объявление переменных (называемых также экземплярами) этого типа в разделе var:

var

FooObject: TfooObject;

 

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

 

Синтаксис вызова конструктора следующий:

FooObject :=TFooObject.Create;

По окончанию использования экземпляра объекта следует освободить выделенную для него память с помощью метода Free():

FooObject.Free;

 

Понятие компонента является фундаментальным для среды Delphi.

Существует два взгляда на компоненты.

  • Взгляд снаружи, точнее из среды визуальной разработки приложений. С этой точки зрения компоненты — это самодостаточные строительные блоки из палитры компонентов переносимые на форму для создания приложения. Это кнопки, списки, надписи и др.
  • Существует еще и взгляд изнутри, т.е. взгляд из программы на языке Delphi. С этой точки зрения компоненты — это классы, порожденные прямо или косвенно от класса TComponent и имеющие published-свойства. Экземпляры компонентов — это объекты этих классов, существующие в качестве полей формы. Среди опубликованных свойств компонентов обязательно присутствует имя (Name), под которым экземпляр компонента представляется в окне свойств.

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

Состояние компонента определяется его свойствами. Свойства бывают изменяемые (для чтения и записи) и неизменяемые (только для чтения). Помимо этого, свойства могут получать значения либо на этапе проектирования, либо только во время выполнения программы. Первые устанавливаются для каждого компонента в окне свойств и определяют начальное состояние компонента. Во время выполнения приложения эти свойства могут быть изменены программно, соответственно изменится внешний вид и поведение компонента. Вторая группа — это свойства, которые не видны в окне свойств, и управлять которыми можно только программно. С точки зрения языка Delphi различие между этими группами свойств состоит в том, что первые объявлены в секции published, а вторые — в секции public. Поведение компонента описывается с помощью его процедур и функций (методов). Вызовы методов компонента помещаются в исходный код программы и происходят только во время выполнения приложения. Методы не имеют под собой визуальной основы. Обратная реакция компонента — это его события. События позволяют, например, связать нажатие кнопки с вызовом метода формы. События реализуются с помощью свойств, содержащих указатели на методы

Все компоненты делятся на две группы: визуальные и невизуальные компоненты.

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

Невизуальные компоненты — они работают, но сами на экране не видны. К невизуальным компонентам относятся таймер, компоненты доступа к базам данным и др. В процессе проектирования такие компоненты представляются на форме небольшим значком. Их свойства устанавливаются в окне свойств.

 

Модули – это логически независимые части проекта, описывающие работу или конкретной формы или вычислительного процесса. Каждый модуль обычно является самодостаточным и в принципе может работать автономно. При создании нового проекта в окне имеется только один модуль кода, который называется по умолчанию Unit1. Он содержит минимальный исходный код, обеспечивающий нормальное функционирование главной формы проекта Form1 в качестве полноценного окна среды Windows и оформляется по правилам языка программирования Object Pascal.

Любой модуль в среде Delphi имеет следующую структуру:

 

unit <имя модуля>; [Заголовок]

interface

[Секция интерфейсных объявлений, аналог раздела описаний]

implementation

[Секция реализаций, аналог блока операторов]

initialization

[Секция инициализации, может отсутствовать]

finalization

[Секция завершения, может отсутствовать ]

end. [Терминатор, то есть указатель конца кода модуля]

 

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

uses <список модулей>;

 

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

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

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

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

Терминатор указывает, что текст программного кода модуля закончен. Все операторы после терминатора игнорируются компилятором.

 

Типы модуле:

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

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

Модули динамических библиотек предназначены для создания широкоиспользуемых Windows-библиотек. Это файлы с расширением .dll.

Пакеты – особо откомпилированные .dll-библиотеки. Разрабатываются для хранения различных компонент Delphi и имеют расширение .bpl.

Модули потоков команд предназначены для реализации потоков команд, т.е. фрагментов программы, которые исполняются совместно с другими фрагментами и разделяют с ними системные ресурсы.

 


12.06.2014; 21:54
хиты: 714
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь