Объект (программирование) | это... Что такое Объект (программирование)? (original) (raw)
Объект в программировании — некоторая сущность в виртуальном пространстве, обладающая определённым состоянием и поведением, имеющая заданные значения свойств (атрибутов) и операций над ними (методов)[1]. Как правило, при рассмотрении объектов выделяется то, что объекты принадлежат одному или нескольким классам, которые определяют поведение (являются моделью) объекта. Термины «экземпляр класса» и «объект» взаимозаменяемы.[2]
Объект, наряду с понятием класс, является важным понятием объектно-ориентированного подхода. Объекты обладают свойствами наследования, инкапсуляции и полиморфизма[1].
Термин объект в программном обеспечении впервые был введен в языке Simula и применялся для моделирования реальности[2].
Связанные понятия
Экземпляр класса (англ. instance) — это описание конкретного объекта в памяти. Класс описывает свойства и методы, которые будут доступны у объекта, построенного по описанию, заложенному в классе. Экземпляры используют для представления (моделирования) конкретных сущностей реального мира. Например, экземпляром класса стиральных машин может быть ваша стиральная машина, имеющая следующие свойства: компания-производитель «Вятка», наименование модели «Вятка-автомат», серийный номер изделия ВЯТ454647, емкость 20 л. В отличие от имени класса, имя экземпляра обычно начинается со строчной буквы.
Инстанцирование (англ. instantiation) — создание экземпляра класса. В отличие от слова «создание», применяется не к объекту, а к классу. То есть, говорят: (в виртуальной среде) создать экземпляр класса или, другими словами, инстанцировать класс. Порождающие шаблоны используют полиморфное инстанцирование.
Анонимный объект (англ. anonymous object) — это объект, который принадлежит некоторому классу, но не имеет имени.
Инициализация (англ. initialization) — присвоение начальных значений полям объекта.
Время жизни объекта — время с момента создания объекта (конструкция) до его уничтожения (деструкция).
Практический подход
За исключением прототипно-ориентированных языков вроде Lua и JavaScript, где понятие «класс» не используется вовсе, в большинстве объектно-ориентированных языков программирования (таких как Java, C++ или C#), объекты являются экземплярами некоторого заранее описанного класса.
Объекты в таких языках создаются с помощью конструктора класса, и уничтожаются либо с помощью деструктора класса (например, в C++), либо автоматически с использованием сборщика мусора (например, в Java и C#), либо используя внутренний счётчик ссылок на объект и сообщения («dealloc» в Objective-C). (C# поддерживает деструкторы, но они вызываются сборщиком мусора.) Объект хранится в виде данных всех его полей и ссылок на таблицу виртуальных методов и RTTI своего класса. Класс определяет набор функций и служебной информации для построения объекта, в том числе необходимый объем памяти для хранения объекта.
В языке Python все значения являются объектами, даже классы. В этом языке можно построить класс, экземплярами которого будут классы. Такие классы называются метаклассами.
Пример кода
Пример создания нового объекта и работы с ним в языке программирования Java:
// Создание экземпляра класса ArrayList с именем list ArrayList list = new ArrayList();
// Добавление экземпляров класса Integer в объект list list.add(new Integer(1)); list.add(new Integer(2)); list.add(new Integer(3));
Подразумевается, что класс ArrayList
уже описан в программном коде и его описание содержит определение для конструктора класса и метода add
.
Примечания
- ↑ 1 2 Словарь по естественным наукам — «Объект».
- ↑ 1 2 Гради Буч. Объектно-ориентированный анализ и проектирование с примерами приложений на С++, Классы и объекты
Литература
- Гради Буч. Объектно-ориентированный анализ и проектирование с примерами приложений на С++. — Бином, 1998. — ISBN 0-8053-5340-2, ISBN 5-7989-0067-3, ISBN 5-7940-0017-1
Типы данных | |
---|---|
Неинтерпретируемые | Бит • Ниббл • Байт • Трит • Трайт • Слово |
Числовые | Целый • С фиксированной запятой • С плавающей запятой • Рациональный • Комплексный • Длинный • Интервальный |
Текстовые | Символьный • Строковый |
Указатель | Адрес • Ссылка |
Композитные | Алгебраический тип данных (обобщённый) • Массив • Ассоциативный массив • Класс • Список • Кортеж • Объект • Option type • Product • Структура • Множество • Объединение (tagged) |
Другие | Логический • Низший тип • Коллекция • Перечисляемый тип • Исключение • First-class function • Opaque data type • Recursive data type • Семафор • Поток • Высший тип • Type class • Unit type • Void |
Связанные темы | Абстрактный тип данных • Структура данных • Интерфейс • Kind (type theory) • Примитивный тип • Subtyping • Шаблоны C++ • Конструктор типа • Parametric polymorphism |