Состояние объекта характеризуется перечнем (обычно статическим) всех свойств объекта и текущими (обычно динамическими) значениями каждого их этих свойств.
В информационной системе то, что объект имеет состояние, означает, что значения (количественные или ссылочные), образующие это состояние, должны где-то хранится - как правило, в оперативной памяти.
Поведение - это то, как объект действует и реагирует; поведение выражается в терминах состояния объекта и передачи сообщений (выполнения операций объектом или им над другим объектом). Состояние объекта представляет суммарный результат его поведения.
Взаимодействие объектов может быть описано в терминах операций.
Операция - определенное воздействие одного объекта на другой с целью вызвать соответствующее действия или реакцию, причем, некоторые операции могут изменить внутреннее состояние объекта (или в терминах концепции сообщений, реакция на некоторые сообщения ведет к изменению состояния объекта)
Поведение объекта реализуется через методы его класса (классов).
Можно выделить следующие типы методов:
· Конструкторы (методы создания объекта и/или его инициализации)
· Деструкторы (методы, освобождающие состояние и ресурсы объекта и/или разрушающие сам объект)
· Селекторы (методы, считывающие, но не меняющие состояние объекта)
· Модификаторы (методы, способные изменить состояние объекта)
· Итераторы (методы, позволяющие организовать доступ к частям объекта-контейнера в строго определенной последовательности)
Объект с точки зрения ООП. Идентичность и жизненный цикл объектов.
Идентичность - это такое свойство объекта, которое отличает его от всех других объектов.
· Разные языки могут предоставлять различные средства для поддержки идентичности объектов. Например, в C++ можно принимать решение об идентичности как на основе конкретного адреса размещения объекта, так и на основе результата определяемого пользователем оператора operator==.
· Иногда для идентификации объекта заводят специальное поле, в котором содержится уникальный ключ (например, в приложениях, работающих с базами данных)*.
· Во время работы для идентификации обычно достаточно адреса объекта (но, если объекты расположены на разных компьютерах, этого может оказаться недостаточно). Ключевые поля необходимы ещё, чтобы сохранить иерархию в неструктурированном хранилище.
* - Например, в базе данных несколько объектов СТРОКА имеют одинаковые данные. Но они не равны. Там сравнение производится по идентификатору
Жизненный цикл объектов:
Каждый объект имеет четко определенный жизненный цикл.
Помимо обычного состояния — использование объекта — этот жизненный цикл включает два важных этапа.
· Построение. При создании экземпляра объекта его нужно инициализировать. Этот процесс инициализации и называется построением, и выполняется он функцией-конструктором, которую часто называют просто конструктором.
· Уничтожение. При уничтожении объекта часто требуется выполнить какие-либо операции по зачистке, вроде освобождения памяти. За их выполнение отвечает функция-деструктор, которую часто называют просто деструктором.
С точки зрения программы на этапе исполнения объект рождается тогда, когда под него выделяется память и происходит инициализация его состояния. Объект заканчивает свой жизненный путь тогда, когда высвобождаются занятые им ресурсы, и память возвращается в систему для дальнейшего использования.
В разных объектно-ориентированных языках существуют разные механизмы управляющие рождением и уничтожением объектов. Как уже было сказано, в C++ для управления процессом создания и уничтожения объектов используются конструкторы, деструкторы, а также операторы operator new и operator delete .
Дата: 2019-02-19, просмотров: 772.