Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Обєктно орієнтовні концепції.docx
Скачиваний:
1
Добавлен:
12.09.2019
Размер:
871.6 Кб
Скачать

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

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

На рис. Б Л и Б.2 проиллюстрированы ключевые концепции объектно- ориентированного подхода.1

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

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

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

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

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

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

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

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

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

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

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

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

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