Скачиваний:
24
Добавлен:
01.05.2014
Размер:
356.35 Кб
Скачать

Объектно-ориентированное программирование в терминах абстрактных типов данных

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

Абстрактные типы данных

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

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

а множество сообщений, воспринимаемых объектом, выступает в роли операций, применимых к переменным этого типа.

Если посмотреть на приведенный выше пример с птицами с позиций абстрактных типов данных, то класс ПТИЦЫ будет абстрактным типом данных, а метод, отвечающий на вопрос о способе передвижения, будет одной из операций для этого типа. Этой операцией могут воспользоваться любые другие абстрактные типы данных, стоящие в иерархии под классом ПТИЦЫ, т.е. типы КАНАРЕЙКИ, ПИНГВИНЫ и т.д. Как можно заметить, у типа ПИНГВИНЫ имеется своя локальная операция, предназначенная для выдачи ответа на вопрос о способе передвижения.

Объектно-ориентированное программирование в терминах формализма фреймов

Объектно-ориентированный формализм можно также трактовать и как уточнение формализма фреймов. В формализме фреймов не делается различия между видом отношений класс/подкласс и видом отношений класс/конкретный экземпляр (т.е. одно и то же отношение РАЗНОВИДНОСТЬ может существовать и как отношение между двумя классами, и как отношение между классом и конкретным экземпляром), в то время как в объектно-ориентированном формализме эти два вида отношений являются ортогональными. Скажем, если бы пример с собранием (см. разд. 6.2) был реализован на языке Смолток, то СОБРАНИЕ было бы классом, а МЕРОПРИЯТИЕ было бы суперклассом СОБРАНИЯ, по СОБРАНИЕ_38 было бы конкретным экземпляром СОБРАНИЯ.

Соседние файлы в папке Гл.6,7,Прилож.,Допол