Читайте также:
|
|
Введение
Язык Object Pascal является дальнейшим развитием языка Pascal. Наследуя все лучшее от языка Pascal, Object Pascal позволяет разработчикам использовать все самые современные технологии программирования, основанные на идеологии объектно-ориентированного программирования.
По сравнению с традиционными способами программирования ООП обладает рядом преимуществ. Главное из них заключается в том, что эта концепция в наибольшей степени соответствует внутренней логике функционирования операционной системы (ОС) Windows. Программа, состоящая из отдельных объектов, отлично приспособлена к реагированию на события, происходящие в ОС. К другим преимуществам ООП можно отнести большую надежность кода и возможность повторного использования отработанных объектов.
В этой лекции рассматриваются способы реализации основных механизмов ООП в Object Pascal и Delphi:
§ понятия объекта, класса и компонента;
§ основные механизмы ООП: инкапсуляция, наследование и полиморфизм;
§ особенности реализации объектов;
§ взаимодействие свойств и методов.
Основные положения объектно-ориентированного программирования
В настоящее время объектно-ориентированное программирование (ООП) принадлежит к числу ведущих компьютерных технологий и используется в большинстве языков программирования. Основная цель ООП, как и большинства других подходов к программированию, – повышение эффективности разработки программ.
Появлению объектно-ориентированного программирования способствовало то обстоятельство, что программисты явно или неявно старались создавать программы, описывающие действия над различными структурами, выделяя их в отдельные программные фрагменты, что способствовало лучшему восприятию логики программы. С программой становилось значительно легче работать и обнаруживать ошибки. Все это и привело к созданию концепции ООП.
В традиционных методах программирования изменение данных или правил и методов их обработки часто приводило к необходимости значительного изменения программы. Всякое существенное изменение программы - это большая "неприятность" для программиста, так как при этом увеличивается вероятность ошибок и возрастает время, необходимое для отладки программы. Использование ООП позволяет выйти из такой ситуации с минимальными потерями, сведя необходимую модификацию программы к ее расширению и дополнению.
Вы уже знаете, как использовать в своих программах процедуры и функции для программирования действий по обработке данных, которые приходится выполнять многократно. Использование процедур в свое время было важным шагом на пути к увеличению эффективности программирования. Процедура может иметь формальные параметры, которые при обращении к ней заменяются аргументами. Но и в этом случае есть опасность вызова процедур с неправильными данными, что может привести к нарушению работы программы.
Поэтому естественным обобщением традиционного подхода к программированию является объединение данных, процедур и функций, предназначенных для их обработки, в одном месте, или, используя терминологию Delphi, в одном типе. Для такого типа использовали общепринятое понятие класс (class).
Классы
Перед началом работы необходимо ввести основные понятия и определения.
Классом в Object Pascal называется структура языка, которая может иметь в своем составе переменные, функции и процедуры. Переменные в зависимости от предназначения именуются полями или свойствами (см. ниже). Процедуры и функции класса – методами.
Соответствующий классу тип будем называть объектным типом:
type
TMyObject = class(TObject)
MyField: Integer;
function MyMethod: Integer;
end;
В этом примере описан классTMyObject, содержащий полеMyFieldи методMyMethod.
Поля объекта аналогичны полям записи (record). Это данные, уникальные для каждого созданного в программе экземпляра класса. Описанный здесь класс TMyObject имеет одно поле – MyField.
Методы – это процедуры и функции, описанные внутри класса и предназначенные для операций над его полями. В состав класса входит указатель на специальную таблицу, где содержится вся информация, нужная для вызова методов. От обычных процедур и функций методы отличаются тем, что им при вызове передается указатель на тот объект, который их вызвал. Поэтому обрабатываться будут поля именно того объекта, который вызвал метод. Внутри метода указатель на вызвавший его объект доступен под зарезервированным именем self.
Понятие свойства будет подробно рассмотрено ниже. Пока можно определить его как поле, доступное для чтения и записи не напрямую, а через соответствующие методы.
Классы могут быть описаны либо в секции интерфейса модуля, либо на верхнем уровне вложенности секции реализации. Не допускается описание классов "где попало", т. е. внутри процедур и других блоков кода.
Разрешено опережающее объявление классов, как в следующем примере:
type
TFirstObject = class;
TSecondObject = class(TObject)
Fist: TFirstObject;
...
end;
TFirstObject = class(TObject)
...
end;
Чтобы использовать класс в программе, нужно, как минимум, объявить переменную этого типа. Переменная объектного типа называется экземпляром класса или объектом:
var
AMyObject: TMyObject;
До введения термина "класс" в языке Pascal существовала двусмысленность определения " объект ", который мог обозначать и тип, и переменную этого типа. Теперь же существует четкая граница: класс – это описание, объект – то, что создано в соответствии с этим описанием.
Как создаются и уничтожаются объекты?
Те, кто раньше использовал ООП в работе на C++ и особенно в Turbo Pascal, будьте внимательны: в Object Pascal экземпляры объектов могут быть только динамическими. Это означает, что в приведенном выше фрагменте переменная AMyObject на самом деле является указателем, содержащим адрес объекта.
Базовым в объектно-ориентированном программировании является понятие класса. Класс имеет заранее заданные свойства. Состояние класса задается значениями его полей. Класс знает, как решать определенные задачи, т.е. располагает методами решения.
Но обычно сам класс не используется в программах. Образно говоря, класс является шаблоном, на основе которого создаются экземпляры класса, или объекты. Программа, написанная с использованием ООП, состоит из объектов, которые могут взаимодействовать между собой.
Например, как только вы создаете новое приложение типа Application в среде Delphi, в редакторе кодов автоматически появляется объявление класса TForm1, которое выглядит так.
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
Это можно рассматривать как заготовку для разработки класса.
Затем создается объект (переменная или экземпляр класса) типа TForm1.
var
Form1: TForm1;
To есть, класс объявляется как обычный тип, а объект создается как любая переменная.
Основными понятиями, связанными с классами, являются следующие.
Дата добавления: 2015-07-25; просмотров: 101 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Пешеходный туристический маршрут по Минску | | | Принципы ООП |