Объект (программирование)
Объект — некоторая сущность в виртуальном пространстве, обладающая определённым состоянием и поведением, имеет заданные значения свойств (атрибутов) и операций над ними (методов)[1]. Как правило, при рассмотрении объектов выделяется то, что объекты принадлежат одному или нескольким классам, которые в свою очередь определяют поведение (являются моделью) объекта. Время с момента создания объекта (конструкция) до его уничтожения (деструкция) называется временем жизни объекта. Объект наряду с понятием «класс», является важным понятием объектно-ориентированного подхода в программировании. Объекты обладают свойствами наследования, инкапсуляции и полиморфизма. [1]
Термин объект в программном обеспечении впервые был введен в языке Simula и применялся для моделирования реальности. Объект обладает состоянием, поведением и идентичностью; структура и поведение схожих объектов определяет общий для них класс; термины «экземпляр класса» и «объект» взаимозаменяемы. [2]
Инстанцирование (англ. instantiation) — создание экземпляра класса. В отличие от слова «создание», применяется не к объекту, а к классу. То есть, говорят: «(в виртуальной среде) создать экземпляр класса или инстанцировать класс». Порождающие шаблоны используют полиморфное инстанцирование.
Экземпляр класса (англ. instance) — это описание конкретного объекта в памяти. Класс описывает свойства и методы, которые будут доступны у объекта, построенного по описанию, заложенному в классе. Экземпляры используют для представления (моделирования) конкретных сущностей реального мира. Например, объектом может быть ваша стиральная машина, и иметь следующие атрибуты: компания-производитель «Вятка», наименование модели «Вятка-автомат», серийный номер изделия ВЯТ454647, емкость 20 л.
Имя объекта начинается обычно со строчной буквы.
Анонимный объект (англ. anonymous object) — это объект который принадлежит некоторому классу, но не имеет имени.
Инициализация (англ. initialization) — присвоение начальных значений полям объекта.
[править] Практический подход
В большинстве объектно-ориентированных языков программирования (таких как Java, C++ или C#), объекты являются экземплярами некоторого заранее описанного класса (однако например в таком языке как JavaScript понятие класс не используется вовсе). Объекты в таких языках создаются с помощью конструктора класса, и уничтожаются либо с помощью деструктора класса (например, в C++), либо автоматически с использованием сборщика мусора (например, в Java и C#). (C# поддерживает деструкторы, но они вызываются сборщиком мусора.) Объект хранится в виде данных всех его полей и ссылок на таблицу виртуальных методов и RTTI своего класса. Класс определяет набор функций и служебной информации для построения объекта, в том числе необходимый объем памяти для хранения объекта. В языке Питон (эталонной реализацией Питона является интерпретатор CPython) все значения являются объектами, даже классы. В этом языке можно построить класс, экземплярами которого будут классы. Такие классы называются метаклассами.
Пример создания нового объекта и работы с ним в языке программирования 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.
[править] См. также
- Класс
- Объектно-ориентированное программирование
- Множество
- Элемент множества
- Доменный объект
- Модель акторов
[править] Примечания
|
|
|
|---|---|
| Неинтерпретируемые | Бит · Ниббл · Байт · Трит · Трайт · Слово |
| Числовые | Целый · Фиксированная запятая · С плавающей запятой · Рациональный · Комплексный · Длинный · Интервальный |
| Текстовые | Символьный · Строковый |
| Указатель | Адрес · Ссылка |
| Композитные | Алгебраический тип данных (обобщённый) · Массив · Ассоциативный массив · Класс · Список · Объект · Option type · Product · Структура · Множество · Объединение (tagged) |
| Другие | Логический · Низший тип · Коллекция · Перечисляемый тип · Исключение · First-class function · Opaque data type · Recursive data type · Семафор · Поток · Высший тип · Type class · Unit type · Void |
| Связанные темы | Абстрактный тип данных · Структура данных · Интерфейс · Kind (type theory) · Примитивный тип · Subtyping · Шаблон · Конструктор типа · Parametric polymorphism |
| Это заготовка статьи о программировании. Вы можете помочь проекту, исправив и дополнив её. |

