RSS    

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

p> - класс возможных действий;

- классы объектов, над которыми могут быть

произведены эти действия.

Например, спецификация

TYPE DST = PROCEDURE (VAR ВЫКЛЮЧАТЕЛЬ)

определяет возможные дей

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

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

цедур, описывающих эти действия, определены в следующем виде :

PROCEDURE Включить (VAR S: ВЫКЛЮЧАТЕЛЬ);

PROCEDURE Выключить (VAR S: ВЫКЛЮЧАТЕЛЬ);.

Термин сигнатура относится к математике, в програмировании он ис

пользуется как синоним понятия класс действий (методов). В Модуле-2 существует конкретный процедурный тип, объектами ко

го являются процедуры без параметров:

ТYPE PROC = PROCEDURE (); .

Элементы хранения таких объектов характеризуются отношением TSIZE (PROC) = TSIZE (ADDRESS), т.е. в качестве объектов этого кон

кретного процедурного типа используются адреса входов в со

ствующие процедуры (точки запуска - активации процедур). Это отношение спpаведливо для любого пpоцедуpного типа. В этом смы

цификация представления методов ничем не отличается от спецификации представления любых других непроцедурных классов.

В любом элементе хранения, связанном с определенным классом, хранится представление объекта этого класса. Такое представление об

разуется значениями, записаными в элемент хранения. Любое свой

во в ЭВМ с ограниченной разрядной сеткой (а она всегда ог

на) может представляться конечным множеством значений. Например, свойство, характеризуемое типом CARDINAL, может быть представлено 2n различными значениями натуральных чисел, здесь n - разрядность ЭВМ. Для 16-разрядного слова этот спектр значений включает на

ральные числа от 0 до 216 - 1 = 65 535. Свойство, хаpак

мое типом CHAR (литера), может быть представлено 28 = 256 раз

ми символами (из набора ASCII и гpафических символов), поскольку элемент хранения такого свой

ва имеет размер в один байт: TSIZE (CHAR) = 1.

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

емое тем или иным типом, называется константой этого типа. Так, на

пример, 'A' - константа типа CHAR, а 177 - константа типа CARDINAL и INTEGER. Поскольку множество констант любого типа ко

но, оно всегда может быть задано прямым перечислением. В этом смысле любой тип, реализуемый в ЭВМ, сводится к перечислимому ти

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

мер, 216 различных значений кардинального типа, разумно за

нить такое перечисление ссылкой в описании программы на кон

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

ного конкретного типа.

В контексте нашего пособия важно отметить, что представление объ

екта значениями может быть сконструировано путем именования констант типа. Для реализации этой возможности используется пе

ление, например:

TYPE Нота=(До, Ре, Ми, Фа, Соль, Ля, Си); .

Здесь представление любого объекта Нота ограничивается ис

ванием семи констант. Поскольку имена таких констант наз

гирования типа.

На базе класса с ограниченным спектром значений можно скон

ровать новый класс объектов с более широким спектром. Такое кон

ирование базируется на центральном постулате теории мно

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

ше тип "Нота", можно сконструировать класс "Аккорд", эле

ми которого будут являться различные комбинации нот. Для этого в языках про

ве базового перечислимого типа:

TYPE Аккорд = SET OF Нота; .

Класс "Аккорд" включает в себя уже не 7, а 27 объектов, пред

вление которых определяется множественными константами. Среди них:

{ До } -"чистая" нота "До";

{ До, Ми } -аккорд, составленный из двух нот;

{ До..Си } -аккорд, включающий в себя всю октаву;

{} - аккорд "молчания", не содержащий ни одной ноты.

Элемент хранения объекта "Аккорд" должен допускать размещение в нем 27 различных значений, следовательно, минимальным адре

ментом, пригодным для хранения аккордов, является байт:

TSIZE(Аккорд) =1.

Объект базового класса (Нота) в этом примере также будет раз

щаться в одном байте, несмотря на то, что использоваться для пред

ставления будут лишь 3 бита. Множественный тип, пос

ный на основе отрезка типа [0..15], образует стандартный тип

BITSET = SET OF [0..15].

Нетрудно заметить, что TSIZE(BITSET)=2 (байта). Размер эле

нения любого множественного типа в байтах определяется вы

ем

N DIV 8 +(N MOD 8) DIV (N MOD 8).

Здесь N - число констант базового типа, MOD и DIV - операции со

ветственно деления по модулю и нацело (предполагается, что 0 DIV 0 = 0).

Фактически размер элемента хранения множественного типа оп

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

зуется характеристическая функция множества. Например, пред

вление аккоpда {До,Ми,Си} в байте будет выглядеть сле

зом:

Си Ля Соль Фа Ми Pе До

7 6 5 4 3 2 1 0

Над объектами множественного типа определены функции, свя

ные с элементарными операциями над множествами (объединение, пе

чение, разность, симметрическая разность); проверкой сос

лючением базовых объектов в множество и т.п. Подробнее об этом можно про

тать в руководстве по языку программирования.

Использование характеристической функции для представления объ

тов множественного типа позволяет организовать эффективную ра

ту с такими объектами на уровне элементов хранения.

III. ИДЕНТИФИКАЦИЯ ОБЪЕКТОВ

Идентификация именованием.- Квалидент.- Дистанция доступа.- Опеpатоp пpисоединения.- Индексиpование.- Идентификация ука

ем.- Свободный и огpаниченный указатели.- Тип ADDRESS.- Квалидент с постфиксом "^".

Идентификация объекта заключается в определении (нахождении) его элемента хранения и получении доступа к представлению объ

та - значениям его свойств.

Существует два основных способа идентификации объекта: име

ние и указание. Именование заключается в назначении объекту оп

ленного имени. Такое назначение производится на фазе тран

ляции, и в процессе выполнения программы объект не может быть пе

ван. Например, декларация

VAR A,B: Объект

определяет наличие в про

грамме двух объектов с именами А и B соответственно, каждый из которых имеет индивидуальный элемент хра

ту А по имени В в надежде, что "он Вас услышит" невозможно, не

ект А новым именем ВОВА". Имя - это атрибут программы, обес

ющий во всех ситуациях доступ к одному и тому же объекту. По

цесс программирования и выполнения программы является процессом из

ции.

Именоваться могут и отдельные свойства объектов-агрегатов. В этом случае такие имена называют квалифицированными иден

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

вам объекта. Например,

TYPE Объект = RECORD

B : Дата_рождения; П : Bес

END;

VAR A,B : Oбъект; .

Квалидент A.B откроет доступ к дате рождения объекта A, B.B - к дате рождения объекта B и т.д. Длина дистанци доступа опре

ся количеством уровней агрегирования свойств объектов клас

са. В этом примере Длина=1. Если уточнить свойство Дата_Рож

ния:

TYPE Дата_рождения = RECORD

Г: Год; М: Месяц; Д: День

END;

то квалидент, открывающий доступ к году рождения объекта А, име

ет длину дистанции, равную 2: А.В.Г. Простой идентификатор мож

но рассматривать как частный случай квалидента с нулевой дис

ей доступа.

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

кации атpибутов объекта, в котоpых хpанятся значения его свойств. Сократить это время можно используя оператор при

ния

WITH < Квалидент > DO < Присоединяемый фрагмент > END.

Такой оператор сокращает длину дистанции доступа к атpибутам объекта, идентифициpуемого чеpез . Если чис

ло таких атpибутов в пpисоединяемом фpагменте велико, то ис

pатоpа пpисоединения может существенно сокpатить вpемя вы

ния этого фpагмента пpогpаммы.

Вложение операторов присоединения обеспечивает дополнительное со

ращение дистанции доступа. Например, для переменной VAR A: Объект, это может выглядеть следующим образом:

WITH A DO

;

WITH B DO

через имена Г,M,D>

END

END.

Имена объектов и их свойств могут дублировать друг друга. Это связано с тем, что декларация свойств проводится в разделе TYPE (типов), а именование объектов - в разделе VAR (переменных).

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

ципиально разные понятия. Но вместе с тем оператор WITH фор

шивание таких понятий (см. приведенный выше пример: первый WITH присоединяет к объекту, а второй к его свой

ву). Такое смешивание в общем случае требует повышенного вни

соединяемых фрагментов. Например,

VAR A,B: Объект; C: Год;

BEGIN . . .

WITH B DO C:=Г END; B.B.Г:=C

WITH B DO C:=Г; B.Г:=C END

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


Новости


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

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

Пока нет

Новости в Twitter и Facebook

                   

Новости

© 2010.