Объект (информатика) - Object (computer science)
В информатике , объект может быть переменным , в структуру данных , а функция , или способ , и, таким образом , является значение в памяти ссылается на идентификаторе .
В объектно-ориентированном программировании парадигмы , объект может быть комбинацией переменных, функций и структуры данных; в частности , в основе классов вариаций парадигмы это относится к конкретному примеру из в классе .
В реляционной модели управления базой данных объектом может быть таблица или столбец , или связь между данными и сущностью базы данных (например, связь возраста человека с конкретным человеком).
Объектно-ориентированные языки
Важным отличием языков программирования является разница между объектно-ориентированным языком и объектно-ориентированным языком. Язык обычно считается объектно-ориентированным, если он включает в себя базовые возможности объекта: идентификацию, свойства и атрибуты. Язык считается объектно-ориентированным, если он основан на объектах, а также имеет возможность полиморфизма , наследования, инкапсуляции и, возможно, композиции. Полиморфизм относится к способности перегрузить имя функции несколькими поведениями в зависимости от того, какие объекты ей передаются. Обычная передача сообщений различает только первый объект и считает, что это «отправка сообщения» этому объекту. Однако некоторые языки ООП, такие как Flavors и Common Lisp Object System (CLOS), позволяют различать больше, чем первый параметр функции. Наследование - это возможность создать подкласс объектного класса, создать новый класс, который является подклассом существующего и наследует все ограничения данных и поведение своих родителей, но также добавляет новые и / или изменяет один или несколько из них.
Объектно-ориентированное программирование
Объектно-ориентированное программирование - это подход к разработке модульных программных систем многократного использования. Объектно-ориентированный подход - это эволюция хороших методов проектирования, восходящих к самым истокам компьютерного программирования. Объектная ориентация - это просто логическое продолжение старых методов, таких как структурированное программирование и абстрактные типы данных . Объект - это абстрактный тип данных с добавлением полиморфизма и наследования .
Вместо того, чтобы структурировать программы в виде кода и данных, объектно-ориентированная система объединяет их, используя концепцию «объекта». У объекта есть состояние (данные) и поведение (код). Объекты могут соответствовать вещам, найденным в реальном мире. Так, например, графическая программа будет иметь такие объекты, как круг , квадрат , меню . Система онлайн-покупок будет иметь такие объекты, как корзина, покупатель, продукт . Система покупок будет поддерживать такие действия, как размещение заказа , оплата и предложение скидки . Объекты спроектированы как иерархии классов. Так, например , с покупками системы может существовать классы высокого уровня , такие как электроника продукт , кухонный продукт , и книга . Возможны дальнейшие уточнения, например, в отношении электронных продуктов : проигрыватель компакт-дисков, проигрыватель DVD и т. Д. Эти классы и подклассы соответствуют наборам и подмножествам в математической логике.
Специализированные объекты
Важным понятием для объектов является шаблон проектирования . Шаблон проектирования предоставляет шаблон многократного использования для решения общей проблемы. Следующие описания объектов являются примерами некоторых из наиболее распространенных шаблонов проектирования для объектов.
- Функциональный объект : объект с единственным методом (в C ++ этот метод будет оператором функции «operator ()»), который действует во многом как функция (например, указатель C / C ++ на функцию).
- Неизменяемый объект : объект, настроенный с фиксированным состоянием во время создания и который не изменяется впоследствии.
- Первоклассный объект : объект, который можно использовать без ограничений.
- Объект-контейнер : объект, который может содержать другие объекты.
- Фабричный объект : объект, предназначенный для создания других объектов.
- Метаобъект : объект, из которого могут быть созданы другие объекты (сравните с классом , который не обязательно является объектом).
- Объект-прототип : специализированный метаобъект, из которого могут быть созданы другие объекты путем копирования
- Бог возражает : объект, который знает или делает слишком много (это пример антипаттерна ).
- Одноэлементный объект : объект, который является единственным экземпляром своего класса за время существования программы.
- Объект фильтра : объект, который получает поток данных на входе и преобразует его в выходные данные объекта. Часто потоки ввода и вывода являются потоками символов, но они также могут быть потоками произвольных объектов. Обычно они используются в оболочках, поскольку они скрывают существующую реализацию с абстракцией, необходимой на стороне разработчика.
Распределенные объекты
Объектно-ориентированный подход - это не просто модель программирования. Его можно одинаково хорошо использовать в качестве языка определения интерфейсов для распределенных систем. Объекты в модели распределенных вычислений имеют тенденцию быть более крупными, долговечными и более сервис-ориентированными, чем объекты программирования.
Стандартный метод упаковки распределенных объектов - через язык определения интерфейса (IDL). IDL защищает клиента от всех деталей объекта распределенного сервера. Подробная информация, например, на каком компьютере находится объект, какой язык программирования он использует, какая операционная система и другие проблемы, связанные с платформой. IDL также обычно является частью распределенной среды, которая предоставляет услуги, такие как транзакции и постоянство, для всех объектов единообразным образом. Два из наиболее популярных стандартов для распределенных объектов являются Object Group Management «s CORBA стандарт и Microsoft » s DCOM.
В дополнение к распределенным объектам был предложен ряд других расширений базовой концепции объекта для обеспечения распределенных вычислений:
- Объекты протокола - это компоненты стека протоколов, которые заключают сетевое взаимодействие в объектно-ориентированный интерфейс.
- Реплицированные объекты - это группы распределенных объектов (называемых репликами ), которые запускают распределенный многосторонний протокол для достижения высокой согласованности между их внутренними состояниями и которые координированно отвечают на запросы. Примеры включают отказоустойчивыеобъекты CORBA .
- Живые распределенные объекты (или просто живые объекты ) обобщаютконцепцию реплицированного объекта на группы реплик, которые могут внутренне использовать любой распределенный протокол, что, возможно, приводит только к слабой согласованности между их локальными состояниями.
Некоторые из этих расширений, такие как распределенные объекты и объекты протокола , являются предметными терминами для специальных типов «обычных» объектов, используемых в определенном контексте (например, удаленный вызов метода или состав протокола ). Другие, такие как реплицированные объекты и живые распределенные объекты , являются более нестандартными, поскольку они отказываются от обычного случая, когда объект находится в одном месте за раз, и применяют концепцию к группам сущностей (репликам), которые могут охватывать в нескольких местах, может иметь только слабо согласованное состояние и членство в котором может динамически меняться.
Семантическая сеть
Semantic Web , по существу , основа распределенных объектов. Две ключевые технологии в семантической сети - это язык веб-онтологий (OWL) и структура описания ресурсов (RDF). RDF предоставляет возможность определять основные объекты - имена, свойства, атрибуты, отношения, - которые доступны через Интернет. OWL добавляет более богатую объектную модель, основанную на теории множеств, которая предоставляет дополнительные возможности моделирования, такие как множественное наследование .
Объекты OWL не похожи на стандартные крупномасштабные распределенные объекты, доступ к которым осуществляется через язык определения интерфейсов. Такой подход не подходит для Интернета, потому что Интернет постоянно развивается, а стандартизация одного набора интерфейсов является труднодостижимой. Объекты OWL, как правило, похожи на типы объектов, используемые для определения моделей предметной области в таких языках программирования, как Java и C ++ .
Однако есть важные различия между объектами OWL и объектами традиционного объектно-ориентированного программирования. Традиционные объекты компилируются в статические иерархии обычно с единичным наследованием, но объекты OWL являются динамическими. Объект OWL может изменять свою структуру во время выполнения и может стать экземпляром новых или других классов.
Еще одно важное отличие состоит в том, как модель обрабатывает информацию, которой в настоящее время нет в системе. Объекты программирования и большинство систем баз данных используют « допущение замкнутого мира ». Если факт неизвестен системе, этот факт считается ложным. Объекты семантической паутины используют предположение об открытом мире , утверждение считается ложным только в том случае, если имеется актуальная релевантная информация о том, что оно ложно, в противном случае оно считается неизвестным, ни истинным, ни ложным.
Объекты OWL на самом деле больше всего похожи на объекты в фреймовых языках искусственного интеллекта, таких как KL-ONE и Loom.
Следующая таблица противопоставляет традиционные объекты объектно-ориентированных языков программирования, таких как Java или C ++, объектам семантической сети:
Объекты ООП | Объекты семантической сети |
---|---|
Классы рассматриваются как типы для экземпляров. | Классы рассматриваются как наборы индивидов. |
Экземпляры не могут изменять свой тип во время выполнения. | Членство в классе может измениться во время выполнения. |
Список классов полностью известен во время компиляции и не может измениться после этого. | Классы можно создавать и изменять во время выполнения. |
Компиляторы используются во время сборки. Ошибки времени компиляции указывают на проблемы. | Reasoners можно использовать для классификации и проверки согласованности во время выполнения или сборки. |
Классы кодируют большую часть своего значения и поведения с помощью императивных функций и методов. | Классы делают свое значение явным в терминах операторов OWL. Никакой императивный код не может быть добавлен. |
Экземпляры анонимны постольку, поскольку к ним нельзя легко обратиться извне выполняющейся программы. | Все именованные ресурсы RDF и OWL имеют уникальный URI, по которому на них можно ссылаться. |
Закрытый мир: если недостаточно информации, чтобы доказать истинность утверждения, то оно считается ложным. | Открытый мир: если информации недостаточно, чтобы доказать истинность утверждения, оно может быть истинным или ложным. |
Смотрите также
- Время жизни объекта
- Копия объекта
- Шаблон проектирования (информатика)
- Бизнес-объект (информатика)
- Актерская модель
Рекомендации
Внешние ссылки
- Что такое объект? из Учебников по Java
- Как объединить два или более объекта php