Шаг 3 - Объект

Название "Объектно-ориентированное программирование" говорит само за себя. Центром внимания ООП является объект.

Давайте оглянемся вокруг. Вот побежала собака, стоит дом, стоит велосипед. Каким понятием можно объединить все эти понятия ? Возможно - предмет, но, как мне кажется, правильнее было бы применить слово объект. Если проводить дальнейшую аналогию, то можно сказать, что все что нас окружает - это объекты (в том числе и человек), а реальная жизнь состоит из взаимодействия этих объектов. Понятие объекта в ООП во многом приближено к привычному определению понятия объекта в реальном мире.

Рассмотрим физические объекты, которые нас окружают. Про любой из физических объектов можно сказать, что он:

  1. имеет какое-то состояние (или находится в каком-то состоянии). К примеру, про собаку можно сказать, что она имеет имя, окраску, возраст, голодна она или нет и т.д.
  2. имеет определенное поведение. Т.е., та же собака может вилять хвостом, есть, лаять, прыгать и т.д.

А теперь рассмотрим формальное определение объекта в ООП:

Объект- это осязаемая сущность, которая четко проявляет свое поведение.

Объект состоит из следующих трех частей:

Не правда ли, очень похоже ? Мы только не указали, что объект должен иметь имя. Но, как Вы сами понимаете, нам это необходимо для идентификации конкретного объекта. Впрочем, практически все физические объекты мы как-либо уникально идентифицируем. Иначе, как мы разберемся где есть какой объект ?

Обобщенное определение:

Объект ООП - это совокупность переменных состояния и связанных с ними методов(операций). Эти методы определяют как объект взаимодействует с окружающим миром.

Возможность управлять состояниями объекта посредством вызова методов в итоге и определять поведение объекта. Эту совокупность методов часто называют интерфейсом объекта.

А теперь в двух словах о нескольких терминах ООП:

Класс (class) - это группа данных и методов(функций) для работы с этими данными. Это шаблон. Объекты с одинаковыми свойствами, то есть с одинаковыми наборами переменных состояния и методов, образуют класс.

Объект (object)- это конкретная реализация, экземпляр класса. В программировании отношения объекта и класса можно сравнить с описанием переменной, где сама переменная(объект) является экземпляром какого-либо типа данных(класса).

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

Методы (methods)- это функции(процедуры), принадлежащие классу.

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

Возможно некоторые моменты пока не очевидны для Вас. Уверен, что основные понятия ООП объяснят все возникающие на данном этапе вопросы.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Valeri Khromov - 5.02.2000