Поведение
Объекты не существуют изолированно, а подвергаются воздействию или сами воздействуют на другие объекты.
Поведение – это то, как объект действует и реагирует; поведение выражается в терминах состояния объекта и передачи сообщений.
Поведение объекта определяется выполняемыми над ним операциями и его состоянием, причем некоторые операции имеют побочное действие: они изменяют состояние. Состояние объекта представляет суммарный результат его поведения.
Операцией называется определенное воздействие одного объекта на другой с целью вызвать соответствующую реакцию. Операция – это услуга, которую класс может предоставить своим клиентам. Выделяют следующие виды операций:
- Модификатор – операция, которая изменяет состояние объекта;
- Селектор – операция, считывающая состояние объекта, но не меняющая состояния;
- Итератор – операция, позволяющая организовать доступ ко всем частям объекта в строго определенной последовательности;
- Конструктор – операция создания объекта и/или его инициализации;
- Деструктор – операция, освобождающая состояние объекта и/или разрушающая сам объект.
В чисто объектно-ориентированных языках, таких как Smalltalk, операции могут быть только методами, в Delphi, C++ допускается описывать операции как независимые от объектов подпрограммы. Таким образом, можно утверждать, что все методы – операции, но не все операции – методы: некоторые из них представляют собой свободные подпрограммы.
Наличие внутреннего состояния объектов означает, что порядок выполнения операций имеет существенное значение. Это наводит на мысль представить объект в качестве небольшого вычислительного устройства, например, конечного автомата. Объекты могут быть активными и пассивными. Активный объект имеет свой поток управления, а пассивный – нет. Активный объект в общем случае автономен, то есть он может проявлять свое поведение без воздействия со стороны других объектов. Пассивный объект, напротив, может изменять свое состояние только под воздействием других объектов. Таким образом, активные объекты системы – источники управляющих воздействий. Если система имеет несколько потоков управления, то и активных объектов может быть несколько.