Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

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

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

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

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

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

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

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

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

  • Функциональный объект : объект с единственным методом (в C ++ этот метод будет оператором функции «operator ()»), который действует во многом как функция (например, указатель C / C ++ на функцию).
  • Неизменяемый объект : объект, настроенный с фиксированным состоянием во время создания и который не изменяется впоследствии.
  • Первоклассный объект : объект, который можно использовать без ограничений.
  • Объект-контейнер : объект, который может содержать другие объекты.
  • Фабричный объект : объект, предназначенный для создания других объектов.
  • Метаобъект : объект, из которого могут быть созданы другие объекты (сравните с классом , который не обязательно является объектом).
  • Объект-прототип : специализированный метаобъект, из которого могут быть созданы другие объекты путем копирования
  • Бог возражает : объект, который знает или делает слишком много (это пример антипаттерна ).
  • Одноэлементный объект : объект, который является единственным экземпляром своего класса за время существования программы.
  • Объект фильтра : объект, который получает поток данных на входе и преобразует его в выходные данные объекта. Часто потоки ввода и вывода являются потоками символов, но они также могут быть потоками произвольных объектов. Обычно они используются в оболочках, поскольку они скрывают существующую реализацию с абстракцией, необходимой на стороне разработчика.

Распределенные объекты [ править ]

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

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

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

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

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

Семантическая сеть [ править ]

Semantic Web , по существу , основа распределенных объектов. Две ключевые технологии в семантической сети - это язык веб-онтологий (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. ^ Габриэль, Ричард; Линда Дж. ДеМичи. «Система объектов Common Lisp: обзор» (PDF) . Lucid Inc. Технический отчет .
  3. Вегнер, Питер (декабрь 1987 г.). Мейровиц, Норман (ред.). «Измерения объектно-ориентированного языкового дизайна». Материалы конференции OOPSLA'87 . 22 (12): 168–182. DOI : 10.1145 / 38807.38823 .
  4. ^ Барби, S; М. Кемпе; А. Штромайер (1993). «Объектно-ориентированное программирование с помощью Ada 9X» . Проект технического отчета . Швейцарский федеральный технологический институт в лаборатории программной инженерии Лозанны . Проверено 15 декабря 2013 года . Сама Ada 83 обычно не считается объектно-ориентированной; скорее, согласно терминологии Вегнера [Weg 87], он называется объектно-ориентированным, поскольку обеспечивает только ограниченную форму наследования и не имеет полиморфизма.
  5. ^ Якобсен, Ивар; Магнус Кристерсон; Патрик Йонссон; Гуннар Овергаард (1992). Объектно-ориентированное программное обеспечение . Эддисон-Уэсли ACM Press. ISBN 0-201-54435-0.
  6. ^ "Что такое объект?" . oracle.com . Корпорация Oracle . Проверено 13 декабря 2013 года .
  7. ^ Мартин, Роберт С. «Принципы проектирования и шаблоны проектирования» (PDF) . Архивировано из оригинального (PDF) 6 сентября 2015 года . Проверено 28 апреля 2017 года .
  8. ^ Орфали, Роберт (1996). Основное руководство по выживанию клиент / сервер . Нью-Йорк: Wiley Computer Publishing. С.  399–403 . ISBN 0-471-15325-7.
  9. ^ Ostrowski, К., Бирман, К., Dolev, Д. и Ahnn, J. (2008). «Программирование с использованием динамических распределенных объектов», Труды 22-й Европейской конференции по объектно-ориентированному программированию , Пафос, Кипр, 7–11 июля 2008 г., под ред. Дж. Витека, Lecture Notes in Computer Science , vol. 5142, Springer-Verlag, Berlin, Heidelberg, 463-489, http://portal.acm.org/citation.cfm?id=1428508.1428536 .
  10. ^ Бернерс-Ли, Тим; Джеймс Хендлер; Ора Лассила (17 мая 2001 г.). «Семантическая паутина. Новая форма веб-контента, значимая для компьютеров, откроет революцию новых возможностей» . Scientific American . 284 : 34–43. DOI : 10.1038 / Scientificamerican0501-34 . Архивировано из оригинального 24 апреля 2013 года .
  11. ^ Knublauch, Holger; Оберле, Даниэль; Тетлоу, Фил; Уоллес, Эван (2006-03-09). «Учебник по семантической паутине для разработчиков объектно-ориентированного программного обеспечения» . W3C . Проверено 30 июля 2008 .
  12. ^ Таблица извлечена из таблиц в: http://www.w3.org/2001/sw/BestPractices/SE/ODSD/

Внешние ссылки [ править ]

  • Что такое объект? из Учебников по Java
  • Как объединить два или более объекта php