Б.З. ПРЕИМУЩЕСТВА ОБЪЕКТНО-




Структура объектов

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

Переменные (variables) объекта, которые также называются атрибутам (attributes), обычно имеют вид простых скаляров или таблиц. Для каждой и переменных задан тип и, возможно, набор значений, которые может принш мать эта переменная; переменная может быть определена как константа ил как переменная (по соглашению термин переменная используется и для кон­стант). Кроме того, могут быть наложены ограничения на использование пе­ременной определенными пользователями, классами пользователей или в оп­ределенных ситуациях.

Методы (methods) объекта — это процедуры, которые можно запускать изу вне для выполнения определенных функций. Метод может изменять СОСТОЯН- объекта, обновлять значения некоторых переменных или воздействовать внешние ресурсы, к которым имеет доступ объект.

Объекты взаимодействуют между собой с помощью сообщений (messages, Сообщение содержит в себе имя объекта-отправителя, имя объекта-получател имя метода в объекте-получателе и прочие уточняющие параметры, необходмые для работы метода. Содержащийся в объекте метод можно вызвать только с помощью сообщения. Получить доступ к хранящимся в объекте данным можно только с помощью методов этого объекта. Таким образом, с помощью метода можно произвести нужное действие или получить доступ к переменным объекта, или выполнить и то, и другое. Отправка сообщения локальному объекту равно­сильна вызову метода объекта. Для распределенных объектов пересылка сооб­щения означает именно то, что обычно под этим подразумевается.

Интерфейс объекта представляет собой набор открытых методов, поддержи­ваемых объектом. По интерфейсу нельзя судить о реализации; объекты разных классов могут иметь различные реализации одних и тех же интерфейсов.

Свойство объекта, состоящее в том, что его единственным связующим звеном с внешним миром являются сообщения, называется инкапсуляцией (encapsulation)

[етоды и переменные объекта являются инкапсулированными, и доступ к ним осу- дествляется только с помощью сообщений. Это свойство дает два преимущества.

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

Оно скрывает внутреннюю структуру объекта, поэтому взаимодействие с ним является сравнительно простым и стандартизированным. Более того, если внутренняя структура или процедуры объекта изменяются без измене­ния выполняемых им внешних функций, это не влияет на другие объекты.

Классы объектов

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

Чтобы избежать трудностей, нужно научиться различать класс объекта и экземпляр объекта. Класс объекта (object class) — это шаблон, по которому оп­ределяются методы и переменные, входящие в объект определенного вида. Эк­земпляр объекта (object instance) — это сам объект, включающий в себя харак­теристики того класса, в котором он определен. В экземпляре содержатся значе­ния переменных, определенных в классе объектов.

Наследование

Благодаря существованию понятия класса объектов можно с минимальны­ми усилиями создавать многие экземпляры объектов. Эта концепция стала еще мощнее благодаря механизму наследования [TAIV96].

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

Подкласс может содержать в себе дополнительные методы и переменные, которых нет в надклассе этого подкласса.

В подклассе можно изменить определение любого метода или любой пере­менной, имеющееся в его надклассе; при этом новое определение используй ется с тем же именем. «

Подклассы могут ограничивать методы или переменные, каким-либо обра­зом унаследованные от соответствующего надкласса. иерархию наследования. Иерархию наследования можно представлять себе как определение способа поиска методов и переменных. Получив сообщение с пред­писанием выполнить метод, который не задан в данном классе, объект осущест­вляет его поиск на других иерархических уровнях, пока не найдет нужный ме­тод. Аналогично, если при выполнении метода происходит ссылка на перемен­ную, которая не определена в данном классе, объект ищет переменную с таким именем на других иерархических уровнях.

Полиморфизм

Полиморфизм — это мощная характеристика, позволяющая скрывать за общим интерфейсом различные реализации. В двух полиморфных по отношению друг к другу объектах используются одинаковые имена методов и представлены одинаковые интерфейсы по отношению к другим объектам. Можно определить несколько предназначенных для печати объектов, каждый для своего устройства вывода (например, printDotmatrix для матричного принтера, printLaser для лазерного принтера, printScreen для вывода на экран и т.д.) или каждый для своего вида документа (например, printText для текстовых документов, printDrawing для рисунков, printCompound для документов смешанного типа). Если в каждом таком объекте содержится метод под названием print, то любой документ можно распечатать, отправив сообщение print соответствующему объ­екту. При этом не имеет значения, как именно выполняется этот метод.

Интересно сравнить полиморфизм с методами обычного модульного про­граммирования. Целью нисходящего модульного проектирования является раз­работка в рамках общей утилиты модулей более низких уровней с фиксирован­ным по отношению к модулям более высоких уровней интерфейсом. Это позво­ляет различным модулям более высоких уровней вызывать один и тот же модуль низкого уровня. Если внутренняя структура модуля низкого уровня из­меняется, не затрагивая при этом интерфейс, то это никак не влияет ни на один из модулей более высоких уровней, которые используют изменяемый модуль. Когда речь идет о полиморфизме, все происходит наоборот. Здесь имеется в виду способность объекта более высокого уровня вызывать с помощью сообщения в одном и том же формате различные объекты более низких уровней, выполняя таким образом подобные функции. При этом можно добавлять новые объекты низких уровней с минимальными изменениями в существующих объектах.

Включение

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

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

 

Механизм наследования является рекурсивным, что позволяет подклассу быть надклассом своих собственных подклассов. Таким образом можно создатьВажно понять различие между иерархией наследования классов объектов и ерархией, возникающей в составных объектах. Они никак не связаны между обой. Наследование просто позволяет с минимальными усилиями определять азлячные типы объектов. Включение объектов позволяет создавать сложные труктуры данных.

Б.З. ПРЕИМУЩЕСТВА ОБЪЕКТНО-



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-04-26 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: