Таким образом, идентичность гарантируется тем, что объект всегда можно единственным образом идентифицировать, что автоматически гарантирует целостность сущности. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Таким образом, идентичность гарантируется тем, что объект всегда можно единственным образом идентифицировать, что автоматически гарантирует целостность сущности.



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

Однако первичные ключи не обеспечивают того уровня идентичности объекта, который требуется в ООС. Во-первых, как уже упоминалось, первичный ключ является уникальнымвнутриотношения, но не для всей системы. Во-вторых, первичный ключ обычно выбирается на основании атрибутов данного отношения, что означает его зависимость от текущего состояния объекта и, следовательно, в общем случае может подвергаться изменениям. Кроме того, суррогатные значения ключа, подобные «номеру отделения» - ‘В1’, ‘В2’, ‘В3’, обладают небольшим семантическим значением для пользователя. В языках программирования (С/С++ и т.д.) OID-идентификатор является физическим адресом в области памяти процесса (в ОЗУ). В большинстве случаев применения баз данных этого адресного пространства окажется слишком мало, и поэтому возникает необходимость использования занимаемой ранее каким-то объектом зоны памяти, т.к. он может быть либо удален, либо перемещен в ВЗУ и т.д. Поэтому для обеспечения независимости от состояния объекта и его месторасположения в памяти необходимо использовать логический идентификатор объекта. То есть могут быть логические и физические OID-идентификаторы.

Рассмотрим некоторые преимущества использования OID-идентификаторов в качестве идентификаторов объектов.

¾ Эффективность. Для хранения OID-идентификаторов внутри составного объекта требуется очень мало места. Обычно они меньше текстовых имен, внешних ключей или семантических ссылок.

¾ Быстрота. OID-идентификатор указывает на фактический адрес или место внутри таблицы, в котором находится адрес данного объекта. Это значит, что объекты могут быть быстро обнаружены, независимо от места их текущего хранения: в ОЗУ ил ВЗУ.

¾ Невозможность изменения пользователем. Если OID-идентификаторы генерируются системой и скрыты от пользователей, или, по крайней мере, доступны только для чтения, то в такой системе проще гарантируется целостностьсущностейисвязей. Более того, это позволяет пользователю не заботиться о поддержании целостности данных (точнее целостности сущностей).

¾ Независимость от содержания данных. OID-идентификаторы никак не зависят от данных, которые содержатся в данном объекте. Это позволяет изменять значение каждого атрибута объекта, но при этом данный объект остается тем же объектом с прежним OID-идентификатором.

Обратите внимание на то, что из последнего свойства следует возможность возникновения двусмысленной ситуации: два объекта могут выглядеть совершенно одинаково для пользователя (значениявсехатрибутоводинаковы), но при этом обладать разными OID-идентификаторами, а потому считаться разными объектами. Но, если OID-идентификаторы скрыты от пользователя, то как он сможет различать их? Из этого следует, что первичные ключи всеещенеобходимы для того, чтобы пользователи могли различать такие объекты. Следовательно, при таком способе идентификации объектов можно провести различия между идентичностью и равностью объекта. Два объекта называются идентичными тогда и только тогда, когда они имеют одинаковые OID-идентификаторы (что обозначается одним знаком равенства =). Два объекта называются равными тогда и только тогда, когда они имеют одинаковые состояния (что обозначается двумя знаками равенства = =).

Методы и сообщения

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

Рис. 2.3.4.1. Схема построения объекта с атрибутами и методами

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

Метод состоит из имени и тела, которое обеспечивает поведение, связанное с данным именем метода. В объектно-ориентированных языках программирования тело состоит из блока программногокода, который и выполняет требуемые функции. Например, в листинге 2.3.4.1 показан пример метода «Актуализация оклада» с входным параметром «Добавка», который суммируется с переменной экземпляра «Оклад» для вычисления новой зарплаты сотрудника.

Листинг 2.3.4.1. Пример реализации метода

method актуализация оклада (float добавка);

{

оклад = оклад + добавка;

}

Сообщения являются средством взаимодействия объектов. Сообщение представляет собой запрос, направленный одним объектом (отправителем) в адрес другого объекта (получателя) и требующий, чтобы объект получатель выполнил один из своих методов. Один и тот же объект может быть одновременно и отправителем и получателем. Доступ к методу обычно обозначается точкой. Например, для исполнения метода «Актуализация оклада» объекта «Сотрудник» и передачи ему параметра 1000 следует использовать такой синтаксис:

сотрудник_object.актуализация оклада (1000)

В традиционном языке программирования сообщение записывается, как обычный вызов функции:

актуализация оклада (сотрудник_object, 1000)

Классы

В языке SIMULA классы играют роль некого шаблона для определения набора подобных объектов. Для ООС объекты, которые имеют один и тот же набор атрибутов и отвечают на одни и те же сообщения могут быть сгруппированы вместе и, таким образом, образуя класс. Атрибуты и связанные с ними методы определяются одинраздлявсегокласса, а не отдельно для каждого объекта. Например, все объекты-отделения компании «Аренда недвижимости» описываются единственным классом «Отделение».

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

Рис. 2.3.5.1. Экземпляры класса «Отделение» совместно используют имена атрибутов и методы класса

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

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



Поделиться:


Последнее изменение этой страницы: 2017-02-05; просмотров: 185; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.225.35.81 (0.009 с.)