Определение, характеристика объектов Объекты — конкретные сущности, которые существуют во времени и пространстве. Объект — это конкретное представление абстракции. Объект обладает индивидуальностью, состоянием и поведением. Структура и поведение подобных объектов определены в их общем классе. Термины «экземпляр класса» и «объект» взаимозаменяемы. На рис. 1 приведен пример объекта по имени «Стул», имеющего определенный набор свойств и операций.
Рис.1. Представление объекта с именем Стул
Индивидуальность — это характеристика объекта, которая отличает его от всех других объектов.
Состояние объекта характеризуется перечнем всех свойств объекта и текущими значениями каждого из этих свойств (рис.1). Объекты не существуют изолированно друг от друга. Они подвергаются воздействию или сами воздействуют на другие объекты.
Поведениехарактеризует то, как объект воздействует на другие объекты (или подвергается воздействию) в терминах изменений его состояния и передачи сообщений. Поведение объекта является функцией как его состояния, так и выполняемых им операций (купить, продать, взвесить, переместить, покрасить). Говорят, что состояние объекта представляет суммарный результат его поведения. Операция обозначает обслуживание, которое объект предлагает своим клиентам.
Возможны пять видов операций клиента над объектом: модификатор (изменяет состояние объекта); селектор (дает доступ к состоянию, но не изменяет его); итератор (доступ к содержанию объекта по частям, в строгом порядке); конструктор (создает объект и инициализирует его состояние); деструктор (разрушает объект и освобождает занимаемую им память). Примеры операций приведены в табл.1
Таблица 1. - Разновидности операций
Вид операции
| Пример операции
| Модификатор
| Пополнеть(кг)
| Селектор
| Какой Вес():integer
| Итератор
| Показать Ассортимент Товаров(): string
| Конструктор
| Создать Робот(параметры)
| Деструктор
| Уничтожить Робот()
| В чистых объектно-ориентированных языках программирования операции могут объявляться только как методы — элементы классов, экземплярами которых являются объекты. Гибридные языки (C++, Ada 95) позволяют писать операции как свободные подпрограммы (вне классов). Соответствующие примеры показаны на рис. 2
Иванушка
|
| Методы
Спать()
Есть()
Пить()
Быть Гражданином()
| Свободные подпрограммы
Рис.2. Методы и свободные подпрограммы
В общем случае все методы и свободные подпрограммы, ассоциированные с конкретным объектом, образуют его протокол. Таким образом, протокол определяет оболочку допустимого поведения объекта и поэтому заключает в себе цельное (статическое и динамическое) представление объекта. Большой протокол полезно разделять на логические группировки поведения. Эти группировки, разделяющие пространство поведения объекта, обозначают роли, которые может играть объект. Принцип выделения ролей иллюстрирует рис. 3. С точки зрения внешней среды важное значение имеет такое понятие, как обязанности объекта. Обязанности означают обязательства объекта обеспечить определенное поведение. Обязанностями объекта являются все виды обслуживания, которые он предлагает клиентам. В мире объект играет определенные роли, выполняя свои обязанности.
Наличие у объекта внутреннего состояния означает, что порядок выполнения им операций очень важен. Иначе говоря, объект может представляться как независимый автомат. По аналогии с автоматами можно выделять активные и пассивные объекты (рис. 4).
Рис. 3. Пространство поведения объекта
активные объекты (самостоятельное поведение)
| |
Рис. 4. Активные и пассивные объекты
Активный объект имеет собственный канал (поток) управления, пассивный — нет. Активный объект автономен, он может проявлять свое поведение без воздействия со стороны других объектов. Пассивный объект, наоборот, может изменять свое состояние только под воздействием других объектов.
|