stringtranslate.com

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

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

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

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

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

Важным различием языков программирования является разница между объектно-ориентированным языком и объектно-ориентированным языком. Язык обычно считается объектно-ориентированным, если он включает в себя основные возможности объекта: идентичность, свойства и атрибуты. Язык считается объектно-ориентированным, если он объектно-ориентирован, а также обладает возможностью полиморфизма , наследования , инкапсуляции и, возможно, композиции . Полиморфизм означает возможность перегружать имя функции несколькими вариантами поведения в зависимости от того, какие объекты ей передаются. Обычная передача сообщений различает только первый объект и считает, что это «отправка сообщения» этому объекту. Однако некоторые объектно-ориентированные языки программирования, такие как Flavors и Common Lisp Object System (CLOS), позволяют различать больше, чем первый параметр функции. [2] Наследование — это возможность создать подкласс объектного класса, создать новый класс, который является подклассом существующего и наследует все ограничения данных и поведение своих родителей, но также добавляет новые и/или изменяет один или несколько из них. . [3] [4]

Объектно-ориентированного программирования

В объектно-ориентированном программировании объект представляет собой абстрактный тип данных с добавлением полиморфизма и наследования . Вместо того, чтобы структурировать программы как код и данные, объектно-ориентированная система объединяет их, используя концепцию «объекта». Объект имеет состояние (данные) и поведение (код). Объекты могут соответствовать вещам, найденным в реальном мире. Так, например, графическая программа будет иметь такие объекты, как круг , квадрат , меню . Система онлайн-покупок будет иметь такие объекты, как корзина покупок, клиент, продукт . Система покупок будет поддерживать такие действия, как размещение заказа , оплата и предложение скидок . Объекты спроектированы как иерархии классов. Так, например, в системе покупок могут быть классы высокого уровня, такие как электроника , кухонные товары и книги . Могут быть дополнительные усовершенствования, например, в электронных продуктах : проигрыватель компакт-дисков, проигрыватель DVD и т. д. Эти классы и подклассы соответствуют наборам и подмножествам в математической логике. [5] [6]

Специализированные объекты

Важным понятием для объектов является шаблон проектирования . Шаблон проектирования предоставляет шаблон многократного использования для решения распространенной проблемы. Следующие описания объектов являются примерами некоторых наиболее распространенных шаблонов проектирования объектов. [7]

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

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

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

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

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

Семантическая сеть

Семантическая сеть, по сути, представляет собой структуру распределенных объектов. Двумя ключевыми технологиями семантической сети являются язык веб-онтологий (OWL) и структура описания ресурсов (RDF). RDF предоставляет возможность определять базовые объекты — имена, свойства, атрибуты, отношения — которые доступны через Интернет. OWL добавляет более богатую объектную модель, основанную на теории множеств, которая предоставляет дополнительные возможности моделирования, такие как множественное наследование .

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

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

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

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

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

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

Рекомендации

  1. ^ Оппель, Энди (2005). SQL демистифицирован . МакГроу Хилл. п. 7. ISBN 0-07-226224-9.
  2. ^ Габриэль, Ричард; Линда Г. ДеМичи (1987). «Объектная система Common Lisp: обзор». ECOOP'87 Европейская конференция по объектно-ориентированному программированию (PDF) . Конспекты лекций по информатике. Том. 276. с. 151. Бибкод : 1987LNCS..276..151D. дои : 10.1007/3-540-47891-4_15. ISBN 978-3-540-18353-2.
  3. ^ Вегнер, Питер (декабрь 1987 г.). Мейровиц, Норман (ред.). «Размеры объектно-ориентированного языкового проектирования». Материалы конференции OOPSLA'87 . 22 (12): 168–182. дои : 10.1145/38807.38823.
  4. ^ Барби, С; М. Кемпе; А. Штромайер (1993). «Объектно-ориентированное программирование на Ada 9X». Проект технического отчета . Лаборатория программной инженерии Швейцарского федерального технологического института в Лозанне . Проверено 15 декабря 2013 г. Сама Ада 83 обычно не считается объектно-ориентированной; скорее, согласно терминологии Вегнера [Weg 87], его называют объектно-ориентированным, поскольку он обеспечивает лишь ограниченную форму наследования и лишен полиморфизма.
  5. ^ Якобсен, Ивар; Магнус Кристерсон; Патрик Йонссон; Гуннар Овергаард (1992). Объектно-ориентированная разработка программного обеспечения. Аддисон-Уэсли ACM Press. ISBN 0-201-54435-0.
  6. ^ «Что такое объект?». oracle.com . Корпорация Оракл . Проверено 13 декабря 2013 г.
  7. ^ Мартин, Роберт К. «Принципы проектирования и шаблоны проектирования» (PDF) . Архивировано из оригинала (PDF) 6 сентября 2015 года . Проверено 28 апреля 2017 г.
  8. ^ Орфали, Роберт (1996). Основное руководство по выживанию клиента/сервера. Нью-Йорк: Wiley Computer Publishing. стр. 399–403. ISBN 0-471-15325-7.
  9. ^ Островски К., Бирман К., Долев Д. и Анн Дж. (2008). «Программирование с использованием живых распределенных объектов», Труды 22-й Европейской конференции по объектно-ориентированному программированию , Пафос, Кипр, 7–11 июля 2008 г., Дж. Витек, редактор, Конспекты лекций по информатике , том. 5142, Springer-Verlag, Берлин, Гейдельберг, 463-489, http://portal.acm.org/citation.cfm?id=1428508.1428536.
  10. ^ Бернерс-Ли, Тим; Джеймс Хендлер; Ора Лассила (17 мая 2001 г.). «Семантическая сеть. Новая форма веб-контента, имеющая смысл для компьютеров, откроет революцию новых возможностей». Научный американец . 284 : 34–43. doi : 10.1038/scientificamerican0501-34. Архивировано из оригинала 24 апреля 2013 года.
  11. ^ Кнублаух, Хольгер; Оберле, Дэниел; Тетлоу, Фил; Уоллес, Эван (9 марта 2006 г.). «Учебник по семантической сети для разработчиков объектно-ориентированного программного обеспечения». W3C . Проверено 30 июля 2008 г.
  12. ^ Таблица взята из таблиц: http://www.w3.org/2001/sw/BestPractices/SE/ODSD/.

Внешние ссылки