Объекты и классы

Базовыми элементами объектно-ориентированной програм­мы являются объекты и классы. Содержательно объект мож­но представить как что-то ощущаемое или воображаемое и имеющее хорошо определенное поведение. Таким образом, объект можно либо увидеть, либо потрогать, либо, по край­ней мере, знать, что он есть, например, представлен в виде информации, хранимой в памяти компьютера. Дадим определение объекта, придерживаясь мнения Гради Буча: «Объект – осязаемая сущность, которая четко проявляет свое поведение».

Рассматривая представление информации в компьютере, мы оперировали такими понятиями, как данные, понимая под ними машинно-ориентированную абстракцию, отвлеченную от конкретного содержания той информации, которую они представляют. Однако, когда некие данности реального мира мы представляем в виде переменных, имеющих тот или иной тип, то совершаем некоторое насилие над собственным сознанием. Пока наиболее удобным для нас типом, вроде бы способным «представлять» машине тот или иной физический объект, был тип «запись» - record.

Действительно, с помощью этого типа можно собрать воедино все характеристики объекта (например: имя, рост, вес, возраст для человека), а затем производить над ними те или иные манипуляции, как с единым целым. Но в природе реальный объект помимо присущих ему характеристик, которые можно выразить в числовой или символьной форме, обладает дополнительными свойствами, имеющими не только количественные характеристики. Человек двигается, спит, ест, радуется – набор этих и других признаков можно назвать поведением объекта.

В программировании поведение объекта иногда можно представить в виде его состояния (лампочка горит или не горит – переменная равна 1 или 0). Но движение автомобиля уже одной переменной не опишешь, нужна специальная процедура, которая будет описывать это движение.

Объект — это часть окружающей нас реальности, т. е. он существует во времени и в пространстве (впервые понятие объекта в про­граммировании введено в языке Simula). Формально объект определить довольно трудно. Это можно сделать че­рез некоторые свойства, а именно: объект имеет состояние, поведение и может быть однозначно идентифицирован (дру­гими словами, имеет уникальное имя).

Класс — это множество объектов, имеющих общую структуру и общее поведение. Класс — описание (абстракция), которое показывает, как построить существующую во време­ни и пространстве переменную этого класса, называемую объектом. Смысл предложений «описание переменных клас­са» и «описание объектов класса» один и тот же.

Объект имеет состояние, поведение и паспорт (средство для его однозначной идентификации); структура и поведение объектов описаны в классах, переменными которых они яв­ляются.

Определим теперь понятия состояния, поведения и иденти­фикации объекта.

Состояние объекта объединяет все его поля данных (статический компонент, т.е. неизменный) и текущие значения каждо­го из этих полей (динамический компонент, т.е. обычно изменяющийся).

Поведение выражает динамику изменения состояний объ­екта и его реакцию на поступающие сообщения, т.е. как объект изменяет свои состояния и взаи­модействует с другими объектами.

Идентификация (рас­познавание) объекта — это свойство, которое позволяет от­личить объект от других объектов того же или других клас­сов. Осуществляется идентификация посредством уникального имени (паспорта), которым наделяется объект в программе, впрочем как и любая другая переменная.

Выше уже говорилось, что процедурный (а также и мо­дульный) подход позволяет строить программы, состоящие из набора процедур (подпрограмм), реализующих заданные алгоритмы. С другой стороны, объектно-ориентированный подход представляет программы в виде набора объектов, взаимодействующих между собой. Взаимодействие объектов осуществляется через сообщения. Предположим, что нашим объектом является окружность. Тогда сообщение, посланное этому объекту, может быть следующим: «нарисуй себя». Ко­гда мы говорим, что объекту передается сообщение, то на самом деле мы вызываем некоторую функцию этого объекта (компонент-функцию). Так, в приведенном выше примере мы вызовем функцию, которая будет рисовать окружность на экране дисплея.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: