RSS    

   Реферат: Программирование, ориентированное на объекты

кой памяти. Поскольку этот фрагмент может быть выделен сис

темой по какому-либо запросу другой прикладной программе, Т2 мо

тая" ссылка (имеющая значение NIL, см. pазд.III) являются со

кой памяти, к которому в прикладной программе потерян доступ. В приведенном примере мусором оказался старый треугольник Т1^, на который указывал Т1 до пе

ки (установки на Т2). Этот мусор неустраним: программист не име

ет к нему доступа, а система управления "считает" мусор занятым фраг

ментом памяти.

Объединяет эти два вида ошибок одно общее обстоятельство: они не обнаруживаются исполнительной средой. Идентифицировать по

ные ошибки можно только путем тщательной проверки и отладки прог

раммы. И, наконец, по своим возможным влияниям на работу прог

ки приводит только к увеличенному расходу памяти, в то время как висячая ссылка спо

на" висячей ссылки может оказаться очень высокой.

Использование автоматической памяти связано с соз

жением специальных элементов хранения, связанных с актив

ектами - действиями или процедурами. Любая процедура тpе

бует для выполнения собственной индивидуальной локальной сре

ду образуют локальные переменные, объявленные в про

та в процедуру, т.е. набор объектов, обеспечивающих выполнение дей

ствий, связанных с процедурой. Необходимость в локальной сре

ции объекта процедурного типа. После завершения такой интер

ветственно запрос на создание локальной среды связан с вызовом про

цедуры, а запрос на уничтожение - с окончанием фазы активности объекта (оператор RETURN или END в теле процедуры). Например:

VAR W1, W2: PROC;

PROCEDURE Работа_1;

VAR A: INTEGER;... BEGIN... W2;...

END Работа_1;

PROCEDURE Работа_2;

VAR A: INTEGER;... BEGIN... W2;...

END Работа_2;

BEGIN... W1:=Работа_1;... W2:=Работа_2;... W1;...

В этом фрагменте описаны два активных объекта процедурного типа PROC = PROCEDURE(): W1 и W2 и две процедуры без параметров: Работа_1 и Работа_2, которые могут использоваться как константы ти

па PROC. Интерпретация (активизация) W1 приведет к вызову Работы_1 и созданию локальной среды (содержащей переменную А). В процессе выполнения Работы_1 производится активизация объекта W2 и соответственно создание локальной среды для Работы_2. В любой те

кущий момент времени в системе могут быть активны несколько объ

тов. (В этом примере активизация W1 приводит к активизации W2, за

тем они оба остаются в активном состоянии и затем теряют свою активность в обратной последовательности: сначала пас

руется W2, затем W1). Последовательность активации и пассивации свя

кой памятью основывается на использовании стека - структуры, под

го в течение совместной активности объектов W1 и W2.

Активация

При активации каждого нового объекта вершина стека "опус

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

екта,- при его пассивации вершина стека "поднимается вверх". С использованием автоматической памяти связаны две ос

лемы: рекурсии и множественности ассоциаций.

Рекурсия - механизм, позволяющий объекту совершать само

ц-ию. Например, по схеме:

W1-->W1 (прямая рекурсия)

или W1-->W2 ...-->W1 (косвенная рекурсия).

Прямая рекурсия связана с непосредственной повторной (вло

ной) активацией, а косвенная - с опосредованной (причем число пос

ников в схеме W1-->...-->W1 может быть произвольным). Ис

ние рекурсии напрямую связано с размерами рабочего прост

сивных схемах (особенно в косвенной рекурсии) возрастает ве

ятность появления трудно идентифицируемых ошибок.

Множественность ассоциаций заключается в том, что в классе ав

матической памяти могут быть одновременно размещены нес

ноименных объектов, имеющих в общем случае различные значе

ния и относящиеся к разным активностям одного и того же или опять-таки разных объектов. В приведенном примере существуют два одно

именных объекта: переменная А, связанная (ассоциированная) с активностью W1, и переменная А, ассоциированная с активностью объ

ответствии с принципом стека система упpавления автоматической па

ную ассоциацию (самую "ближнюю" к вершине стека авто

ти). Возникновение множественности ассоциаций обусловлено только использованием в прикладных программах одно

ных переменных с различной областью действия (областью ви

ит усомниться), то при их интерпретации следует помнить о мно


VI. ДИНАМИЧЕСКИЕ СТРУКТУРЫ ОБЪЕКТОВ

Связанная организация памяти. - Ассоциативные структуры. -Списки. - Очереди. - Рекурсивные структуры. - Наборы. - Деревья.

Связанная организация памяти определяет множество структур, связи между элементами которых реализуются указателями. Каждый эле

мент такой структуры (объект) обладает, таким образом, свой

вом "иметь связи" с другими элементами, на которые указывает зна

ние этого свойства. Связанная организация памяти может ис

ся и для хранения статических структур данных, но пос

лизация связей через ссылки дает возможность исполь

нием связанной организации является динамическое мо

делирование объектно-ориентированных систем.

Динамические структуры объектов, как уже отмечалось, ха

ются наличием особого свойства: "иметь переменный состав эле

тов стpуктуpы". Это свойство позволяет любую динамическую струк

ного состава. (Заметим, что термин "ассоциация" используется в программировании очень часто и смысл, вкладываемый в это поня

тие, во многом зависит от контекста).

Свойство ассоциативности относится к общим групповым свой

ектов. Простейшим примером группового свойства является "Ко

тво объектов в классе"- ни один из объектов класса в от

бует использования специальных структур, "связывающих" объекты-члены этих структур "узами" ассо

сти. В прикладных задачах это могут быть "узы" дружбы, общие ка

ства (например, свойство "Быть молодым") и т.п.. Ассоциация объ

ектов, кроме того, как правило упорядочена по определенной сис

ме правил - отношений порядка на множестве членов ассоциации. Такие правила устанавливают биективную (взаимно-однозначную) связь меж

ра, чем множество объектов.

Правила, регулирующие упорядоченность ассоциации, могут быть скон

струированы как выделяющие свойства на множестве имманентных свойств объекта (например,упорядоченность по "Возрасту" объекта, "Приоритету" объекта). Они могут быть построены на основе вре

ни модификации состава членов ассоциации (например,правило "пер

вым пришел - первым вышел" хорошо известно всем, кто бывал в очередях: каж

дый вновь пришедший в очередь становится последним членом этой ассоциации очередников). Общее свойство ассоциации зак

ся в том, что возможность биекции ее структуры (сос

ный ряд чисел фактически определяет наличие "линейного" по

ляется отношениями предшествования: "предок-потомок", "пре

щий-последующий" и т.п. Это свойство делает основной реа

онной структурой ассоциации линейный список.

С помощью списков могут моделироваться разнообразные ди

кие структуры, поддерживающие различные отношения порядка. В про

мировании широко используются такие структуры, как стек, оче

редь, дек, пул - все они могут быть реализованы на списках. В за

симости от количества связей между соседними элементами раз

ют односвязные и двусвязные списки с "встречным" нап

лок. Ниже пpиведены некотоpые пpимеpы оpганизации спис

ковых стpуктуp на связанной памяти.

Односвязный список

H1

TYPE PTR = POINTER TO Элемент;

Элемент = RECORD INFO: Инфоpмационное_Поле;

LINK: PTR (* Поле связи *)

END;

VAR H1: PTR; (* "Голова" списка *)

Двусвязный список

К2

v

H2

TYPE PTR = POINTER TO Элемент;

Элемент = RECORD INFO: Инфоpмационное_Поле;

RLINK,LLINK: PTR (* Поля связи *)

END;

VAR H2,K2: PTR; (* "Голова" и "Конец" списка *)

^

В общем случае любой элемент списка может содержать про

ное количество связей и являться членом многих списков. Это по

ет большое многообразие списковых структур - фактически любая ди

намическая структура на связанной памяти конструируется из спис

родные, в однородных используются объекты только одного класса, в разнородных - разных классов. Например, членами ассоциации "Эле

мент фигуры" могут быть объекты классов "Точка" и "Окружность":

TYPE Точка = RECORD

X,Y: INTEGER (* Координаты точки *);

LINK : ADDRESS

END;

Окружность = RECORD

Центр: Точка; R: CARDINAL (* Радиус *)

LINK : ADDRESS

END; .

Как члены ассоциации, реализуемой односвязным списком, они ха

теризуются свойством "Иметь одну связь" (LINK) с "соседом" по ас

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

зующий ассоциацию "Элемент фигуры", будет относиться к ка

v

Окружность

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12


Новости


Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

                   

Новости

© 2010.