Следующий сложный тип языка — записи. Для тех, кто не знаком с языком Паскаль, это слово поначалу ассоциируется не с тем, что оно на самом деле обозначает. Да, запись может быть записью на диске. Но в исходном значении — это структура данных, аналогичная таблице. У обычной таблицы есть имя, и у каждого ее поля тоже есть имя. Похожим образом в типе данных «запись» указываются названия полей и тем самым вводятся в работу табличные структуры данных. Мы можем, например, ввести тип данных, аналогичный анкете (т.е. той же таблице):

| TYPE

| PERSON=RECORD

| F_I_O_ : String; { фамилия, имя, отчество}

| Ves.Rost : Real; { вес и рост}

| Telephone : Longint { номер телефона}

| END;

В этом определении слово RECORD открывает набор имен полей таблицы-анкеты и типов значений в этих полях, a END — закрывает его, т.е. пара RECORD...END конструирует тип «запись». Тип PERSON теперь задает таблицу из строки (F_I_O_), двух чисел с дробной частью (Ves, Rost) и одного целого числа. Все они называются полями записи типа Person. Далее мы можем ввести в программе переменную Nekto типа Person, и под именем Nekto будет пониматься анкета-таблица с конкретными значениями. Доступ к полям таблицы производится дописыванием к имени всей таблицы имени нужного поля. Имя переменной-записи (оно же имя таблицы) и имя поля разделяются точкой:

Nekto.F_I_O_ — значение строки с фамилией, именем, отчеством;

Nekto.Ves — значение поля Ves.

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

- 72 -

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

Очередной тип, который мы рассмотрим — это объекты. Объект (object) — это принципиально новый тип, вводимый Турбо Паскалем, начиная с версии 5.5 языка. Но это не только новый тип. Это новый подход к программированию. Что такое объект? Представьте себе, что мы сгруппировали некие данные в запись. Это удобно, ибо разнотипные значения теперь хранятся «под одной крышей». В программе эти данные обрабатываются какими-либо методами. Очень часто бывает, что эти методы годны только для обработки полей нашей записи и не работают с другими данными. Но раз так, то не будет ли рациональнее внести методы в список полей самой записи? Как только мы это проделаем, получим новый тип данных — объект.

В программе объекты описываются почти так же, как записи:

TYPE

DataWithMethods = OBJECT

Поле данных 1: его Тип;

Поле данных 2: его Тип;

...

Метод 1;

Метод 2;

Метод 3;

...

END;

Список полей и методов должен начинаться словом OBJECT и заканчиваться END (все об объектах читайте в гл. 13 «Объектно-ориентированное программирование»).

Таким образом, объект — это замкнутый мир данных и средств их обработки. Методы, реализуемые как процедуры и функции, имеют смысл и могут применяться только к полям данных этого же объекта. В то же время объекты привносят новые подходы к построению программ. Вводится такое понятие, как наследование признаков объектов. Это значит, что можно построить ряд все более и более сложных объектов, каждый из которых наследует свойства (данные и методы их обработки) предшественника и является его развитием. А объявив в программе такой ряд объектов, можно будет построить процедуры, которые смогут работать (запускать методы) с любым объектом этого ряда. (Возможность использовать одну процедуру для целого ряда взаимосвязанных через наследование объектов называется полиморфизмом.)

Язык Паскаль традиционно считается хорошим инструментом структурного программирования. Турбо Паскаль дает возможность

- 73 -

использовать другой подход к написанию программ — объектно-ориентированный. И если в первом случае стоит задача разделить алгоритм решения на отдельные процедуры и функции, то во втором — представить задачу как совокупность взаимодействующих объектов, выстраивая при этом ряды объектов — от низшего уровня данных к более высоким — согласно принципу наследования. И если вдруг изменится нижний уровень представления объекта, то достаточно будет изменить только его: все изменения автоматически передадутся по цепочке наследования. Если же, наоборот, понадобится еще больше усложнить объект, то достаточно будет просто продолжить ряд наследования. А процедуры (по свойству полиморфизма) останутся теми же.

Перейти на страницу:

Поиск

Похожие книги