В Камаев - Технологии программирования
- Название:Технологии программирования
- Автор:
- Жанр:
- Издательство:Издательство «Высшая школа»
- Год:2006
- Город:Москва
- ISBN:5-06-004870-5
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
В Камаев - Технологии программирования краткое содержание
Второе издание (1-е — 2005 г.) дополнено главами по структуре данных и основам инженерии создания программ.
Для студентов вузов, обучающихся по направлению «Информатика».
Технологии программирования - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
ЭЛЕМЕНТЫ ЯЗЫКА OBJECT PASCAL
1. МОДУЛЬ В OBJECT PASCAL
Язык объектно-ориентированного программирования Object Pascal применяется при работе в среде визуального программирования Delphi. Язык Object Pascal в основном включает "старый" язык Borland Pascal.
Программы на языке Object Pascal состоят из нескольких файлов: файла проекта (Delphi Project) с расширением *.dpr, одного или нескольких файлов модулей (Unit) с расширением *.pas и файлов дизайнера экранных форм с расширением *.dfm.
Файл проекта содержит текст основной программы Program, с которой начинается выполнение всей программы. Тексты вызываемых подпрограмм и используемых объектов находятся в файлах модулей.
Рассмотрим организацию исходного текста модуля:
unitMyUnit1;
interface
uses
Unit1, Unit2, Unit3;
const
Pi =3.14;
type
MyType =. .;
var
var1: MyType;
procedureProc1;
functionFunc: MyType;
implementation
uses
Unit4, Unit5, Unit6;
const
…;
type
…;
var
…;
procedureProc1;
begin
{ Операторы}
…
end;
functionFunc: MyType;
begin
{Операторы}
…
end;
initialization
{Операторы}
…
finalization
{Операторы}
…
end.
Модуль начинается с описательного оператора заголовка модуля:
unitMyUnit1;
Имена файлов MyUnit1.pas, MyUnit1.dfm должны совпадать с именем, описанным в заголовке модуля MyUnit1. Наличие файла MyUnit1.dfm не является обязательным.
Между зарезервированными словами interface и implementation находятся описательные операторы секции интерфейса. В интерфейсной части объявляются константы, типы, переменные, прототипы процедур и функций (только оператор заголовка без исполняемых операторов), которые должны быть доступны для использования в других модулях. Описания подключений других модулей осуществляются при помощи оператора uses, который может располагаться строго за оператором interface. Имена подключаемых модулей должны быть расположены в таком порядке, чтобы обеспечить последовательное описание всех нужных типов в данной интерфейсной секции и интерфейсных секций подключаемых модулей.
За зарезервированным словом implementation находятся описательные операторы секции реализации. В отличие от описаний секции интерфейса описания из секции реализации недоступны для других модулей, но доступ к ним возможен из данного модуля. Как и в секции интерфейса, может следовать оператор uses, а за ним объявления констант, типов, переменных. В отличие от секции интерфейса процедуры и функции описываются вместе с их выполняемыми операторами. В секции должны быть определены как процедуры и функции из секции реализации, так и процедуры и функции, прототипы которых были объявлены в секции интерфейса. Код процедур и функций модуля, описанный в секции implementation, подключается (линкуется или связывается) к основной программе или к точкам вызова подпрограмм и функций в других модулях (через механизм линкера, работа которого определяется uses).
В необязательном разделе initialization размещаются операторы, которые выполняются сразу после запуска программы.
Раздел finalization не является обязательным, более того, он может присутствовать только в том случае, если в модуле присутствовала секция initialization. В секции размещаются операторы, которые выполняются непосредственно перед завершением программы.
2. ОБЪЕКТЫ И КЛАССЫ В ЯЗЫКЕ OBJECT PASCAL
В обычном языке Pascal существует тип-запись:
type
TmyRecord = record
MyField1: String;
MyField2: Integer;
end;
Тип-запись позволяет описывать структурированные переменные, содержащие несколько значений как одного, так и разных типов. В приведенном примере запись TmyRecord содержит поля MyField1 и MyField2, которые соответственно имеют типы String и Integer.
Тип-класс в Object Pascal по виду близок к записи, но отличается от записи возможностью наследования от других классов, а также возможностью описания методов класса. Классом в Object Pascal называется особый тип записи, который может иметь в своем составе поля, методы и свойства. Такой тип также будем называть объектным типом:
type
TMyObject = class(TObject)
MyField: Integer;
ProcedureMyMethod1 (X: Real; var Y: Real);
function MyMethod2: Integer;
end;
В примере описан класс TMyObject, который наследуется от класса Tobject. Понятие "наследования классов" и понятие "свойства" будут подробно рассмотрены далее. Пока можно определить понятие свойства как поле, которое доступно не напрямую, а через посылку сообщений особым методам.
Класс TMyObject имеет поле MyField и методы MyMethod1 и MyMethod2. Нужно заострить внимание на том, что классы могут быть описаны либо в секции интерфейса модуля Interface (под модулем здесь понимается файл с исходным кодом вида Unit), либо на верхнем уровне вложенности секции реализации Implementation. He допускается описание классов внутри процедур и других блоков кода.
В случае если класс включает в себя поле с типом другого класса, разрешено опережающее объявление класса как в следующем примере:
type
TFirstObject = class;
TSecondObject = class(TObject)
Fist: TFirstObject;
{…}
end;
TFirstObject = class(TObject)
{…}
end;
Код методов описывается ниже по тексту объявлений классов, например:
ProcedureTMyObject.MyMethod1(X: Real; var Y: Real);
begin
у:= 5.0 * sin(X);
end;
function TMyObject.MyMethod2: Integer;
begin
{…}
MyMethod2:= MyField + 3;
end;
Для того чтобы использовать новый тип в программе, нужно, как минимум, объявить переменную этого типа, которая называется или переменной объектного типа, или экземпляром класса, или объектом:
var
AMyObject: TMyObject;
Согласно обычному языку Borland Pascal, переменная AMyObject должна содержать в себе весь экземпляр объекта типа TMyObject (код и данные вместе) — статический объект. Но в Delphi все объекты динамические, поэтому, не вдаваясь в подробности, выполним оператор:
{действие по созданию экземпляра объекта}
AMyObject:= TMyObject.Create;
Теперь другие объекты программы могут посылать сообщения данному объекту. Посылка сообщений заключается в вызове методов нужного объекта, например:
Читать дальшеИнтервал:
Закладка: