Объект (информатика)

Абстракция с четко определенным поведением

В информатике объект — это сущность с четко определенным поведением. [1] : 38 

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

В реляционной модели управления базами данных такие аспекты, как таблица и столбец, могут действовать как объекты. [2]

Информационные системы можно моделировать с помощью объектов, представляющих их компоненты и интерфейсы. [1] : 39  [ необходима ссылка ]

Объектно-ориентированные языки

Важное различие в языках программирования — это разница между объектно-ориентированным языком и объектно-ориентированным языком. Язык обычно считается объектно-ориентированным, если он включает в себя основные возможности объекта: идентичность, свойства и атрибуты. Язык считается объектно-ориентированным, если он объектно-ориентированный и также имеет возможность полиморфизма , наследования , инкапсуляции и, возможно, композиции . [1] : 41  [ необходима цитата ]

Не все объектно-ориентированные (или объектно-ориентированные) языки основаны на классах. Одной из известных альтернативных парадигм является прототипно-ориентированное программирование , используемое , среди прочего, JavaScript и Lua .

Распределенные объекты

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

Стандартный метод упаковки распределенных объектов — через язык определения интерфейса (IDL). IDL скрывает от клиента все детали распределенного серверного объекта. Такие детали, как то, на каком компьютере находится объект, какой язык программирования он использует, какую операционную систему и другие вопросы, связанные с платформой. IDL также обычно является частью распределенной среды, которая предоставляет такие услуги, как транзакции и сохранение для всех объектов единообразно. Два самых популярных стандарта для распределенных объектов — это стандарт CORBA от Object Management Group и DCOM от Microsoft . [3]

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

  • Объекты протокола — это компоненты стека протоколов , которые заключают сетевое взаимодействие в объектно-ориентированный интерфейс.
  • Реплицированные объекты — это группы распределенных объектов (называемых репликами ), которые запускают распределенный многосторонний протокол для достижения высокой согласованности между их внутренними состояниями и которые отвечают на запросы скоординированным образом. Примерами являются отказоустойчивыеобъекты CORBA .
  • Живые распределенные объекты (или просто живые объекты ) [4] обобщают концепцию реплицированных объектов на группы реплик, которые могут внутренне использовать любой распределенный протокол, что может привести лишь к слабой согласованности между их локальными состояниями.

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

Семантическая паутина

Semantic Web по сути является фреймворком распределенных объектов. Две ключевые технологии в Semantic Web — это Web Ontology Language (OWL) и Resource Description Framework (RDF). RDF предоставляет возможность определять базовые объекты — имена, свойства, атрибуты, отношения, — которые доступны через Интернет. OWL добавляет более богатую модель объектов, основанную на теории множеств, которая обеспечивает дополнительные возможности моделирования, такие как множественное наследование .

Объекты OWL не похожи на стандартные крупнозернистые распределенные объекты, к которым осуществляется доступ через язык определения интерфейсов. Такой подход не подходит для Интернета, поскольку Интернет постоянно развивается, и стандартизация на одном наборе интерфейсов труднодостижима. Объекты OWL, как правило, похожи на типы объектов, используемых для определения моделей предметной области приложения в таких языках программирования, как Java и C++ .

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

Другим важным отличием является способ, которым модель обрабатывает информацию, которая в данный момент отсутствует в системе. Программные объекты и большинство систем баз данных используют « предположение о закрытом мире ». Если факт неизвестен системе, этот факт считается ложным. Объекты семантической паутины используют предположение об открытом мире : утверждение считается ложным только в том случае, если есть реальная соответствующая информация о том, что оно ложно, в противном случае оно считается неизвестным, ни истинным, ни ложным.

Объекты OWL на самом деле больше всего похожи на объекты в языках фреймворков искусственного интеллекта, таких как KL-ONE и Loom.

В следующей таблице сравниваются традиционные объекты из объектно-ориентированных языков программирования, таких как Java или C++, с объектами семантической паутины: [5] [6]

Объекты ООПСемантические веб-объекты
Классы рассматриваются как типы для экземпляров.Классы рассматриваются как совокупности индивидуумов.
Экземпляры не могут изменять свой тип во время выполнения.Состав классов может меняться во время выполнения.
Список классов полностью известен во время компиляции и не может измениться после этого.Классы можно создавать и изменять во время выполнения.
Компиляторы используются во время сборки. Ошибки во время компиляции указывают на проблемы.Механизмы рассуждений можно использовать для классификации и проверки согласованности во время выполнения или сборки.
Классы кодируют большую часть своего значения и поведения посредством императивных функций и методов.Классы делают свое значение явным в терминах операторов OWL. Никакой императивный код не может быть присоединен.
Экземпляры анонимны в той мере, в какой к ним невозможно легко обратиться извне исполняемой программы.Все именованные ресурсы RDF и OWL имеют уникальный URI, по которому на них можно ссылаться.
Закрытый мир: если недостаточно информации, чтобы доказать истинность утверждения, то оно считается ложным.Открытый мир: Если недостаточно информации, чтобы доказать истинность утверждения, то оно может быть истинным или ложным. [7]

Смотрите также

  • Время жизни объекта  – период времени между созданием и уничтожением экземпляра объектно-ориентированного программирования.
  • Копирование объектов  – Методы копирования объектов в объектно-ориентированном программировании
  • Бизнес-объект  – сущность в многоуровневом программном приложении.
  • Модель актора  – Модель параллельных вычислений

Ссылки

  1. ^ abc Грэди Буч; Роберт Максимчук; Майкл Энгл; Бобби Янг; Джим Коналлен; Келли Хьюстон (30 апреля 2007 г.). Объектно-ориентированный анализ и проектирование с приложениями (3-е изд.). Addison-Wesley Professional. ISBN 020189551X.
  2. ^ Оппель, Энди (2005). SQL Demystified . McGraw Hill. стр. 7. ISBN 0-07-226224-9.
  3. ^ Орфали, Роберт (1996). The Essential Client/Server Survival Guide. Нью-Йорк: Wiley Computer Publishing. С. 399–403. ISBN 0-471-15325-7.
  4. ^ Островски, К., Бирман, К., Долев, Д. и Анн, Дж. (2008). «Программирование с живыми распределенными объектами», Труды 22-й Европейской конференции по объектно-ориентированному программированию , Пафос, Кипр, 7–11 июля 2008 г., редактор Дж. Витек, Lecture Notes in Computer Science , т. 5142, Springer-Verlag, Берлин, Гейдельберг, 463–489, http://portal.acm.org/citation.cfm?id=1428508.1428536.
  5. ^ Бернерс-Ли, Тим; Джеймс Хендлер; Ора Лассила (17 мая 2001 г.). «Семантическая паутина. Новая форма веб-контента, значимая для компьютеров, откроет революцию новых возможностей». Scientific American . 284 : 34–43. doi :10.1038/scientificamerican0501-34. Архивировано из оригинала 24 апреля 2013 г.
  6. ^ Кнублаух, Хольгер; Оберле, Дэниел; Тетлоу, Фил; Уоллес, Эван (2006-03-09). «Учебник семантической паутины для разработчиков объектно-ориентированного программного обеспечения». W3C . Получено 2008-07-30 .
  7. ^ Таблица взята из таблиц в: http://www.w3.org/2001/sw/BestPractices/SE/ODSD/
  • Что такое объект? из учебников Java
Взято с "https://en.wikipedia.org/w/index.php?title=Object_(computer_science)&oldid=1246334311"