Б.з. преимущества объектно-

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

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

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

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

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

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

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

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

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

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

Б.з. преимущества объектно- Классы объектов

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

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

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

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

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

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

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

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

Полиморфизм

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

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

Включение

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

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

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

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

Основные принципы объектно-ориентированного программирования. Что такое ООП и зачем оно нужно?


Похожие статьи.

Понравилась статья? Поделиться с друзьями: