Динамические объекты

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

 

Var

OneP: ^Point;

New (OneP);

OneP^.Create (50, 100);

x1 := OneP^.CetX;

 

Затем вызовы методов могут происходить обычным образом с использованием указателя. Турбо Паскаль допускает использование расширенной процедуры New, совмещающей создание объекта и его инициализацию, которая имеет два параметра: имя указателя и имя конструктора:

 

New (OneP, Create(50,100));

 

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

Аналогично для освобождения памяти при позднем связывании используется процедура Dispose с расширенным синтаксисом:

 

Dispose (OneP, Done);

 

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

Скрытые поля и методы

Часть полей и методов объектных типов можно объявить как скрытые. Смысл введения таких компонент заключается в ограничении области видимости их имен, так же, как и в модулях. Для эти целей в Турбо Паскале дополнительно введены два служебных слова PRIVATE и PUBLIC. В итоге описание объекта в полной форме выглядит следующим образом:

 

Type

NewObject = OBJECT (<родитель>);

<поля>; { общедоступные }

<методы>; { общедоступные }

PRIVATE

<поля>; { скрытые }

<методы>; { скрытые }

PUBLIC

<поля>; { общедоступные }

<методы>; { общедоступные }

End;

 

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

Контрольные вопросы

1. Назовите первые объектно-ориентированные языки программирования.

2. Какую структуру имеет классификация различных объектов?

3. Как называется более низкий уровень иерархии относительно текущего?

4. Как называется более высокий уровень иерархии относительно текущего?

5. Поясните понятие «иерархия объекта».

6. Поясните понятие «методы объекта».

7. Какое служебное слово используется для описания структуры «объект»?

8. Поясните понятие «инкапсуляция».

9. Поясните понятие «наследование».

10. Поясните понятие «полиморфизм».

11. Поясните понятие «раннее связывание».

12. Поясните понятие «позднее связывание».

13. Как сделать метод виртуальным?

14. Поясните понятие «конструктор» в применении к объектам.

15. Поясните понятие «деструктор» в применении к объектам.

16. Поясните понятие «скрытые поля и методы».

Литература

1. Зелковиц М., Шоу А., Гэннон Дж. Принципы разработки программного обеспечения. Пер. с англ. М.: Мир, 1982 – 368 с., ил.

2. Одинцов И.О. Профессиональное программирование. Системный подход. – 2-е изд. перераб. и доп. – СПб.: БХВ-Петербург, 2004. – 624 с.: ил.

3. Давыдов В.Г. Программирование и основы алгоритмизации: Учеб. Пособие. – М.: Высш. шк., 2003. – 447 с.: ил.

4. Кнут Д. Искусство программирования для ЭВМ. т.1. Основные алгоритмы. – М.: Мир, 1975. – 736 с., ил.

5. Белов В.С., Бруттан Ю.В., Мотайленко Л.В. и др. Основы информатики и информационных технологий. Часть 1. Основы информатики. Пособие для поступающих в вуз. Под общ. ред. к.т.н., доцента В.С. Белова, — СПб/Псков, Изд-во СПбГПУ, 2004 — 160 с.

6. Единая система программной документации. ГОСТ 19.701-90. Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения.

7. Единая система программной документации. ГОСТ 19.002-80. Схемы алгоритмов и программ. Правила выполнения.

8. Единая система программной документации. ГОСТ 19.003-80. Схемы алгоритмов и программ. Обозначения условные графические.

9. Турбо Паскаль 7.0. Самоучитель. – СПб.: Питер; К.: Издательская группа BHV, 2002. – 416 с.: ил.

10. Немюгин С.А. TURBO PASCAL – СПб, 2000.

11. Фаронов В.В. Турбо Паскаль 7.0. Начальный курс. Учебное пособие. – М.: «Нолидж», 1999. – 616 с., ил.

12. Федоренко Ю. Алгоритмы и программы на Turbo Pascal. Учеб. Курс. – СПб.: Питер, 2001.

13. Зуев Е.А. Язык программирования Turbo Pascal 6.0, 7.0. – М.: Веста, Радио и связь, 1993.

14. Климова Л.М. PASCAL 7.0: Практическое программирование. Решение типовых задач.: Учебное пособие. – М.,: 2000.