Объект (информатика)
В информатике объект элемент — это программный , имеющий состояние , связанные с ним операции и доступ к которому осуществляется посредством идентификатора .
Объект — это категория, к которой относятся многие концепции программирования. Например, объектом может быть языка программирования переменная , структура данных , функция или метод .
В объектно-ориентированном программировании (ООП) объект представляет собой абстрактный тип данных с добавлением полиморфизма и наследования . Объектно-ориентированная система объединяет код и данные как объекты, каждый из которых имеет состояние (данные) и поведение (код). Любой язык, который поддерживает конструкцию с состоянием и поведением, классифицируется как объектно-ориентированный . В основанном на классах , объект также известен как экземпляр класса языке , .
В реляционной модели управления базой данных такие аспекты, как таблица и столбец, могут выступать в качестве объектов. [1]
Распределенные объекты
[ редактировать ]Объектно-ориентированный подход — это не просто модель программирования. Его можно с тем же успехом использовать в качестве языка определения интерфейсов для распределенных систем. Объекты в модели распределенных вычислений, как правило, более детализированы, долговечны и более ориентированы на обслуживание, чем объекты программирования.
Стандартным методом упаковки распределенных объектов является использование языка определения интерфейса (IDL). IDL скрывает от клиента все детали объекта распределенного сервера. Подробные сведения о том, на каком компьютере находится объект, какой язык программирования он использует, какую операционную систему и другие проблемы, специфичные для платформы. IDL также обычно является частью распределенной среды, которая единообразным образом предоставляет такие услуги, как транзакции и сохранение, для всех объектов. Двумя наиболее популярными стандартами для распределенных объектов являются Management Group Object стандарт CORBA и DCOM Microsoft . [2]
Помимо распределенных объектов, был предложен ряд других расширений базовой концепции объекта для обеспечения распределенных вычислений:
- Объекты протокола — это компоненты стека протоколов , которые заключают сетевое взаимодействие в объектно-ориентированный интерфейс.
- Реплицированные объекты — это группы распределенных объектов (называемых репликами ), которые используют распределенный многосторонний протокол для достижения высокой согласованности между своими внутренними состояниями и скоординированно отвечают на запросы. Примеры включают отказоустойчивые объекты CORBA .
- Живые распределенные объекты (или просто живые объекты ) [3] обобщить концепцию реплицируемого объекта на группы реплик, которые могут внутренне использовать любой распределенный протокол, что, возможно, приведет лишь к слабой согласованности между их локальными состояниями.
Некоторые из этих расширений, такие как распределенные объекты и объекты протоколов , представляют собой специфичные для предметной области термины для специальных типов «обычных» объектов, используемых в определенном контексте (например, при удаленном вызове метода или композиции протокола ). Другие, такие как реплицированные объекты и живые распределенные объекты , являются более нестандартными, поскольку они отказываются от обычного случая, когда объект одновременно находится в одном месте, и применяют эту концепцию к группам объектов (репликам), которые могут охватывать в нескольких местах, могут иметь лишь слабо согласованное состояние и членство в них может динамически меняться.
Семантическая сеть
[ редактировать ]Семантическая сеть , по сути, представляет собой структуру распределенных объектов. Двумя ключевыми технологиями семантической сети являются язык веб-онтологий (WOL) и структура описания ресурсов (RDF). RDF предоставляет возможность определять базовые объекты — имена, свойства, атрибуты, отношения — которые доступны через Интернет. OWL добавляет более богатую объектную модель, основанную на теории множеств, которая предоставляет дополнительные возможности моделирования, такие как множественное наследование .
Объекты OWL не похожи на стандартные крупномасштабные распределенные объекты, доступ к которым осуществляется через язык определения интерфейса. Такой подход не подходит для Интернета, поскольку Интернет постоянно развивается и стандартизации одного набора интерфейсов добиться сложно. Объекты OWL, как правило, похожи на объекты, используемые для определения моделей предметной области приложения в таких языках программирования, как Java и C++ .
Однако существуют важные различия между объектами OWL и традиционными объектами объектно-ориентированного программирования. Традиционные объекты компилируются в статические иерархии, обычно с одинарным наследованием, но объекты OWL являются динамическими. Объект OWL может изменить свою структуру во время выполнения и стать экземпляром новых или других классов.
Еще одним важным отличием является то, как модель обрабатывает информацию, которой в данный момент нет в системе. Объекты программирования и большинство систем баз данных используют « предположение о закрытом мире ». Если факт не известен системе, этот факт считается ложным. Объекты семантической сети используют предположение открытого мира : утверждение считается ложным только в том случае, если существует реальная соответствующая информация о том, что оно ложно, в противном случае оно считается неизвестным, ни истинным, ни ложным.
Объекты OWL на самом деле больше всего похожи на объекты в языках фреймов искусственного интеллекта, таких как KL-ONE и Loom.
В следующей таблице традиционные объекты объектно-ориентированных языков программирования, таких как Java или C++, сравниваются с объектами семантической сети: [4] [5]
ООП-объекты | Семантические веб-объекты |
---|---|
Классы рассматриваются как типы экземпляров. | Классы рассматриваются как совокупности индивидов. |
Экземпляры не могут менять свой тип во время выполнения. | Членство в классе может измениться во время выполнения. |
Список классов полностью известен во время компиляции и не может измениться после этого. | Классы можно создавать и изменять во время выполнения. |
Компиляторы используются во время сборки. Ошибки времени компиляции указывают на проблемы. | Резонеры можно использовать для классификации и проверки согласованности во время выполнения или во время сборки. |
Классы кодируют большую часть своего значения и поведения посредством императивных функций и методов. | Классы выражают свое значение явно в терминах операторов OWL. Никакой императивный код не может быть прикреплен. |
Экземпляры анонимны, поскольку к ним невозможно легко обратиться извне выполняющейся программы. | Все именованные ресурсы RDF и OWL имеют уникальный URI, по которому на них можно ссылаться. |
Закрытый мир: если информации недостаточно, чтобы доказать истинность утверждения, оно считается ложным. | Открытый мир: если информации недостаточно, чтобы доказать истинность утверждения, оно может быть истинным или ложным. [6] |
См. также
[ редактировать ]- Время жизни объекта — период времени между созданием и уничтожением экземпляра объектно-ориентированного программирования.
- Копирование объекта - методы копирования объекта в объектно-ориентированном программировании.
- Бизнес-объект – сущность в многоуровневом программном приложении.
- Модель актера – Модель параллельных вычислений.
Ссылки
[ редактировать ]- ^ Оппель, Энди (2005). SQL демистифицирован . МакГроу Хилл. п. 7. ISBN 0-07-226224-9 .
- ^ Орфали, Роберт (1996). Основное руководство по выживанию клиента/сервера . Нью-Йорк: Wiley Computer Publishing. стр. 399–403 . ISBN 0-471-15325-7 .
- ^ Островски К., Бирман К., Долев Д. и Анн Дж. (2008). «Программирование с использованием живых распределенных объектов», Материалы 22-й Европейской конференции по объектно-ориентированному программированию , Пафос, Кипр, 7–11 июля 2008 г., Дж. Витек, редактор, Конспекты лекций по информатике , том. 5142, Springer-Verlag, Берлин, Гейдельберг, 463-489, http://portal.acm.org/citation.cfm?id=1428508.1428536 .
- ^ Бернерс-Ли, Тим; Джеймс Хендлер; Ора Лассила (17 мая 2001 г.). «Семантическая сеть. Новая форма веб-контента, имеющая смысл для компьютеров, откроет революцию новых возможностей» . Научный американец . 284 : 34–43. doi : 10.1038/scientificamerican0501-34 . Архивировано из оригинала 24 апреля 2013 года.
- ^ Кнублаух, Хольгер; Оберле, Дэниел; Тетлоу, Фил; Уоллес, Эван (9 марта 2006 г.). «Учебник по семантической сети для разработчиков объектно-ориентированного программного обеспечения» . W3C . Проверено 30 июля 2008 г.
- ^ Таблица взята из таблиц: http://www.w3.org/2001/sw/BestPractices/SE/ODSD/.
Внешние ссылки
[ редактировать ]- Что такое объект? из Учебников по Java