Атрибуты и подпрограммы

Атрибуты и подпрограммы

Любой абстрактный тип данных и POINT в частности характеризуется набором функций, описывающих операции применимые к экземплярам АТД. В классе, реализующем АТД, функции становятся компонентами (features) - операциями, применимыми к экземплярам класса.

В рис. 7.3) приводит к противоположной ситуации. Теперь ? и ?доступны просто как значения полей, а определение x и y возможно после простых вычислений (? cos?, ? sin?, соответственно).

Рис. 7.3.  Представление точки в полярных координатах

Приведенный пример указывает на необходимость рассмотрения компонентов двух видов:

[x]. Некоторые компоненты представлены в пространстве и, можно сказать, ассоциируются с некоторой частью информации каждого экземпляра класса. Они называются атрибутами (attributes). Для точки, представленной в декартовых координатах, атрибутами являются x и y, а в полярных координатах в роли атрибутов выступают rho и theta.

[x]. Другие компоненты представлены во времени, и для доступа к ним требуется описать некоторые вычисления (алгоритмы), применимые далее ко всем экземплярам данного класса. В дальнейшем они называются подпрограммами или методами класса (routines). В декартовом представлении точек - rho и theta это подпрограммы, а x и y выступают в качестве подпрограмм при использования полярных координат.

Вторая категория - подпрограммы - нуждается в дальнейшей дополнительной классификации. Часть подпрограмм возвращает результат, и их называют функциями (functions). В приведенном примере функциями являются x и y в представлении в полярных координатах, в то время как rho и theta - функции в декартовых координатах, все они возврвщают результат типа REAL. Подпрограммы, не возвращающие результат, соответствуют командам в спецификации АТД и называются процедурами (procedures). Например, класс POINT содержит процедуры translate, rotate и scale.

Не следует путать понятие "функция", обозначающее в классах программу, возвращающую результат, с использованным ранее толкованием функции как математического описания операций АТД. Эта досадная путаница понятий обусловлена устоявшейся терминологией в математике и программировании.

На рис. 7.4 дана рассмотренная выше классификация, представленная в виде дерева:

Рис. 7.4.  Классификация компонентов класса по их роли

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

Можно предложить другую, внутреннюю классификацию, использующую в качестве основного критерия способ реализации компонента в классе:

Рис. 7.5.  Классификация компонентов класса по способу реализации

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

Тема №9. Подпрограммы-функции

Из книги автора

Тема №9. Подпрограммы-функции При решении сложных задач разумно разбить алгоритм на несколько более простых составляющих. В языке Pascal существуют специальные средства для этого – подпрограммы. Есть два вида подпрограмм: процедуры и функции. Функция получает информацию


Тема №10. Подпрограммы-процедуры

Из книги автора

Тема №10. Подпрограммы-процедуры Для выполнения каких-либо действий (а не вычислений значений) существуют подпрограммы-процедуры. Они также могут принимать параметры, как и подпрограммыфункции. Давайте сразу проиллюстрируем работу процедуры на примере графической


3. Процедуры и функции (подпрограммы)

Из книги автора

3. Процедуры и функции (подпрограммы) Подпрограммы позволяют разбить одну сложную программу на несколько более простых и решать эти отдельные задачи самостоятельно, возможно даже, что делать это будут разные программисты и в разное время. Готовую подпрограмму,


ЛЕКЦИЯ № 4. Подпрограммы

Из книги автора

ЛЕКЦИЯ № 4. Подпрограммы 1. Параметры подпрограмм В описании процедуры или функции задается список формальных параметров. Каждый параметр, описанный в списке формальных параметров, является локальным по отношению к описываемой процедуре или функции, и в модуле,


Стандартные подпрограммы

Из книги автора

Стандартные подпрограммы Общие подпрограммы procedure Swap<T>(var a, b: T); Меняет местами значения двух переменных function Milliseconds: integer; Возвращает количество миллисекунд с момента начала работы программы function MillisecondsDelta: integer; Возвращает количество миллисекунд с


Общие подпрограммы

Из книги автора

Общие подпрограммы procedure Swap<T>(var a, b: T); Меняет местами значения двух переменных function Milliseconds: integer; Возвращает количество миллисекунд с момента начала работы программы function MillisecondsDelta: integer; Возвращает количество миллисекунд с момента начала работы


Подпрограммы ввода-вывода

Из книги автора

Подпрограммы ввода-вывода procedure Read(a,b,...); Вводит значения a,b,... с клавиатуры procedure Readln(a,b,...); Вводит значения a,b,... с клавиатуры и осуществляет переход на следующую строку function ReadInteger: integer; Возвращает значение типа integer, введенное с клавиатуры function ReadReal:


Подпрограммы для работы с пером

Из книги автора

Подпрограммы для работы с пером Рисование линий осуществляется текущим пером. Доступ к свойствам текущего пера можно осуществлять как в процедурном, так и в объектно-ориентированном стиле.Процедуры и функции для доступа к свойствам пера сгруппированы парами: если Prop -


Подпрограммы для работы с кистью

Из книги автора

Подпрограммы для работы с кистью Рисование внутренностей замкнутых областей осуществляется текущей кистью. Доступ к свойствам текущей кисти можно осуществлять как в процедурном, так и в объектно-ориентированном стиле.Процедуры и функции для доступа к свойствам кисти


Подпрограммы для работы со шрифтом

Из книги автора

Подпрограммы для работы со шрифтом Вывод текста осуществляется текущим шрифтом. Доступ к свойствам текущего шрифта можно осуществлять как в процедурном, так и в объектно-ориентированном стиле.Процедуры и функции для доступа к свойствам шрифта сгруппированы парами:


Подпрограммы блокировки рисования

Из книги автора

Подпрограммы блокировки рисования procedure Redraw; Перерисовывает содержимое графического окна. Вызывается в паре с LockDrawing procedure LockDrawing; Блокирует рисование на графическом окне. Перерисовка графического окна выполняется с помощью Redraw procedure UnlockDrawing; Снимает


Подпрограммы режимов рисования

Из книги автора

Подпрограммы режимов рисования procedure SetSmoothing(sm: boolean); Устанавливает режим сглаживания procedure SetSmoothingOn; Включает режим сглаживания procedure SetSmoothingOff; Выключает режим сглаживания function SmoothingIsOn: boolean; Возвращает True, если режим сглаживания установлен procedure


Подпрограммы

Из книги автора

Подпрограммы Классический подход к повторному использованию состоит в том, чтобы создавать библиотеки подпрограмм. Здесь термин подпрограмма (routine) означает программный элемент, который может быть вызван другими элементами для выполнения некоторого алгоритма,