- •Структура модуля
- •Interface
- •Implementation
- •Interface
- •Implementation
- •4. Инкапсуляция
- •7. Области видимости
- •Interface
- •Implementation
- •Interface
- •Implementation
- •Interface
- •Implementation
- •10. Функции работы с файлами
- •11. Построение пользовательского интерфейса
- •Interface
- •Implementation
- •С помощью объекта Range выделим диапазон
- •Компонент tDataSource
Лекции по курсу «Объектно-ориентированное программирование»
«Визуальное программирование»
Темы:
Delphi. Основные понятия ООП. Принципы ООП.
СТРУКТУРА МОДУЛЯ
ОСНОВНЫЕ ПОНЯТИЯ ООП (В терминах Object Pascal)
ПРИНЦИПЫ ООП : ИНКАПСУЛЯЦИЯ
НАСЛЕ́ДОВАНИЕ
ПОЛИМОРФИ́ЗМ
ОБЛАСТИ ВИДИМОСТИ
ОБРАБОТКА ИСКЛЮЧИТЕЛЬНЫХ СИТУАЦИЙ
НЕКОТОРЫЕ ПОЛЕЗНЫЕ ФУНКЦИИ: ФУНКЦИИ РАБОТЫ СО СТРОКАМИ
ФУНКЦИИ РАБОТЫ С ФАЙЛАМИ
ПОСТРОЕНИЕ ПОЛЬЗОВАТЕЛЬСКОГО ИНТЕРФЕЙСА
Основные понятия, Элементы управления
Форма, работа с формами
Модальные формы
ФРЕЙМЫ (Frame)
ОБЗОР КОМПОНЕНТОВ БИБЛИОТЕКИ VCL DELPHI
КОМПОНЕНТЫ ВВОДА И ОТОБРАЖЕНИЯ ТЕКСТОВОЙ ИНФОРМАЦИИ.
КНОПКИ, ИНДИКАТОРЫ, УПРАВЛЯЮЩИЕ ЭЛЕМЕНТЫ
КОМПОНЕНТЫ МЕНЮ
ОБРАБОТКА СОБЫТИЙ КЛАВИАТУРЫ И МЫШИ
РАБОТА С ПРОЦЕССАМИ И ПОТОКАМИ
Запуск внешней программы функцией WinExec
Порождение процесса функцией CreateProcess
Организация многопоточных приложений Класс TThread
РАБОТА С ПРИЛОЖЕНИЯМИ WORD И EXCEL
РАБОТА С Базами данных
Delphi. Основные понятия ООП. Принципы ООП.
Delphi — это прекрасная система визуального объектно-ориентированного программирования.
Delphi — одна из мощных систем, позволяющих на самом современном уровне создавать как отдельные прикладные программы Windows, так и разветвленные комплексы, предназначенные для работы в корпоративных сетях и в Интернет.
Перечислим основные задачи, которые позволяет решать Delphi:
Создавать законченные приложения для Windows самой различной направленности – вычислительные, графические, мультимедиа.
Быстро создавать оконный интерфейс.
Создавать системы для работы с локальными и удаленными базами данных любых типов.
Создавать многозвенные распределенные приложения, основанные на различных технологиях.
Создавать приложения, которые управляют другими приложениями, в частности, такими программами Microsoft Office, как Word, Excel и др.
Создавать кросс-платформенные приложения, которые можно компилировать и эксплуатировать как в Windows, так и в системе Linux.
Создавать приложения различных классов для работы в Интернет.
Создавать профессиональные программы установки для приложений Windows, учитывающие всю специфику и все требования Windows.
Возможности визуального программирования, поддерживаемые средой Delphi, сводят проектирование пользовательского интерфейса к простым и наглядным процедурам. Во время проектирования форм и размещения на них компонент Delphi автоматически формирует код программы. Проектирование сводится к размещению компонент на форме, заданию некоторых их свойств и написанию обработчиков событий. Компоненты библиотек Delphi оформляются в виде классов. Классы – это типы, определяемые пользователем. В классах описываются свойства объекта, его методы и события, на которые он может реагировать.
Объектно-ориентированное программирование (сокращенно ООП) это в наше время совершенно естественный подход к построению сложных (и не очень сложных) программ и систем.
Обычное приложение Windows как правило состоит из окон со множеством кнопок, разделов меню, окон редактирования, списков и т.п. Все это объекты. Причем сами по себе они ничего не делают. Они ждут каких-то событий — нажатия пользователем клавиш или кнопок мыши, перемещения курсора и т.д. Когда происходит подобное событие, объект получает сообщение об этом и как-то на него реагирует: выполняет некоторые вычисления, разворачивает список, заносит символ в окно редактирования.
Приложение, построенное по принципам объектно-ориентированного программирования — это не последовательность каких-то операторов, не некий жесткий алгоритм. Объектно-ориентированная программа — это совокупность объектов и способов их взаимодействия.
Объект определим как экземпляр класса - совокупность полей и методов.
Возможности объектно-ориентированного программирования в Delphi базируются на свойствах языка Object Pascal.
Проект в Delphi представляет собой набор программных единиц – модулей. Модуль на английском языке называется Unit.
В процессе проектирования вами приложения Delphi автоматически создает код головной программы и отдельных модулей. Сама головная программа получается предельно простой и короткой. Она состоит из объявления списка используемых модулей и нескольких операторов, которые создают объекты тех форм, которые вы задумали, и запускают выполнение приложения.
Все объекты компонентов размещаются в объектах — формах. Для каждой формы, которую вы проектируете в своем приложении, Delphi создает отдельный модуль.
Именно в модулях и осуществляется программирование задачи. В модули вы вводите свой код, создавая обработчики различных событий. Но головную программу, как правило, вы не трогаете и даже не видите ее текст. Только в исключительных случаях вам надо что-то изменять в тексте головной программы, сгенерированном Delphi. Тем не менее, хотя бы ради этих исключительных случаев, надо все-таки представлять вид головной программы и понимать, что означают ее операторы. Типичная головная программа приложения имеет вид:
program Project2;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.Run;
end.
После заголовка в тексте программы располагается предложение uses. В этом предложении перечисляются модули, загружаемые программой. Первый модуль Forms — системный. А следующие — модули разработанных вами форм. Данный пример подразумевает, что вы создали в проекте две формы с именами Forml и Form2 в модулях с именами Unitl и Unit2. Помещенные в фигурные скобки названия форм — это комментарии. Затем после ключевого слова begin и до последнего завершающего программу оператора end с точкой (end.) записано тело программы.
Первый оператор в теле программы инициализирует приложение, два следующих — создают объекты форм Forml и Form2, последний — начинает выполнение приложения.
В случае если Вы пишите консольное приложение, то головная программа выглядит проще:
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
begin
{ TODO -oUser -cConsole Main : Insert code here }
end.
Директива компилятора $AppType устанавливает тип приложения : GUI или Console. Значение директивы по умолчанию определяет графическое приложение.
Головная программа – это файл с расширением dpr.
Структура модуля
Рассмотрим теперь, как выглядят тексты модулей.
unit Unit4;
Interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Implementation
{$R *.dfm}
end.
Модуль начинается с ключевого слова unit, после которого пишется имя модуля. Оно совпадает с именем файла, в которым вы сохранили свой модуль.
Текст модуля состоит из двух основных разделов: interface — открытый(внешний) интерфейс модуля, и implementation —реализация модуля. Все, что помещается непосредственно в раздел interface (типы, переменные, константы, функции, процедуры), может быть использовано другими модулями программы. Все, что помещается в раздел implementation — внутреннее дело модуля. Внешние модули не могут видеть типы, переменные, константы, функции и процедуры, размещенные в разделе реализации.
В разделе interface после предложения uses, содержащего список подключаемых модулей, вы можете видеть заготовку объявления класса вашей формы, подготовленную Delphi. Имя класса вашей формы -- TForml. Класс содержит два раздела:
private — закрытый раздел класса, и public — открытый раздел класса. То, что вы или Delphi объявите в разделе public, будет доступно для других классов и модулей. То, что объявлено в разделе private, доступно только в пределах данного модуля. (подробнее о спецификаторах доступа позже)
После завершения объявления класса формы вы можете видеть строки
var
Forml: TForml;
Это объявляется переменная Forml класса TForml, т.е. объявляется ваша
форма как объекта класса TForml. Затем следует пока пустой раздел реализации implementation. Раздел implementation включает в себя реализацию модуля. Основное тело модуля составляет коды, реализующие объявленные функции и процедуры.
В данном примере раздел implementation содержит директиву {$R} Директива компилятора {$R} указывает файлы ресурсов (.DFM, .RES), которые должны быть включены в выполняемый модуль или в библиотеку. Указанный файл должен быть файлом ресурсов Windows. По умолчанию расширение файлов ресурсов – файл с расширением .RES. В процессе компоновки компилированной программы или библиотеки файлы, указанные в директивах {$R}, копируются в выполняемый модуль. Компоновщик Delphi ищет эти файлы в том каталоге, в котором расположен модуль, содержащий директиву {$R}.
При генерации кода модуля, содержащего форму, Delphi автоматически включает в файл .pas директиву {$R *.DFM}, обеспечивающую компоновку файлов ресурсов форм. Эту директиву нельзя удалять из текста модуля, так как в противном случае загрузочный модуль не будет создан и сгенерируется исключение EResNotFound.
Существуют еще 2 необязательных раздела: initialization – включает в себя операторы, выполняющиеся только 1 раз при первом обращении программы к данному модулю. В этом разделе могут быть операторы, производящие начальную настройку модуля. Если в программе есть несколько модулей, содержащих разделы initialization, то последовательность выполнения операторов этих разделов определяется последовательностью указания модулей в операторах uses. Например если в головной программе имеется оператор uses unit1,unit2, unit3 , а модуле init1 имеется оператор uses unit3, то последовательность выполнения разделов initialization будет следующей: unit3, unit1,unit2.
Пример применения такого раздела может быть перенос кода головной программы
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.Run;
В раздел initialization какого-либо из объявленных модулей.
И второй необязательный раздел – finalization – включает в себя операторы, которые выполняются только один раз при завершении работы программы: нормальном или аварийном. В нем могут помещаться операторы по удалению временных файлов, освобождению ресурсов памяти.
ОСНОВНЫЕ ПОНЯТИЯ ООП (В терминах Object Pascal)
Класс – особый тип записи, который может иметь в своем составе поля, методы и свойства. Свойства – совокупность данных и методов их чтения и записи (о них позже в разделе инкапсуляция).
Пример класса:
unit Unit2;