Скачиваний:
21
Добавлен:
01.05.2014
Размер:
142.85 Кб
Скачать

3. Классы объектов

У объектов так же, как и у функций, замыканий и структур различают определение и вызов, с помощью которого из определения создаются фактические объекты или экземпляры объектов. Определение объекта - это абстрактное описание типа обекта, которое представляет все обекты данного типа. Тип объекта во многих объектно-ориентированных системах программирования называют классом объектов. Класс - это множество всех потенциальных объектов, которые могут возникнуть из его определения .

Способ определения класса в раличных объектно-ориентированных системах разный. В качестве класса можно рассматривать и самоопределение, которое тоже в известном смысле является объектом, а именно языковым объектом, изображающим класс объектов. Поэтому определения классов называют метаобъектами, а образуемый ими класс - метаклассом.

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

Объект содержит как данные наподобие структуры, так и действия наподобие функций и подпрограмм. Но набор действий объекта обобщен и расширен. Программист может определить для объекта произвольные действия.

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

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

Предусмотренные в объекте действия называют методами. Методы - это функциональные свойства, определяющие использование объекта в виде функции или процедуры с побочным эффектом.

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

В различных системах объектно-ориентированного программированияс способы определения методов различны. Текстуально описания методов могут записываться как внутри, так и вне определения класса. Если описания методов записывается вне определения класса, то объектно-ориентированная система автоматически привязывает их к выбору действий соответствующего класса. У объектов различных классов могут быть одноименные, но работающие по-разному методы. Способ, которым объект реагирует на посланное ему сообщение, может зависеть от класса объекта. Это свойство тоже является одним из принципов абстракции данных и универсального программирования.

У объектов различных классов могут быть и общие методы, если они наследуют свойства одних и тех же классов.

Метод объекта можно активизировать, послав соответствующее этому методу сообщение. Сообщение содержит название метода и возможные аргументы.

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

Если у объекта нет метода, соответствующего принятому сообщению, то сообщение теряется. Обычно причиной этого является ошибка или по крайней мере исключительная ситуация, к обработке которой объект не готов. Набор методов не фиксирован, его можно свободно расширять, определяя новые методы.

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

Посылка сообщения соответствует вызову функционала:

SEND_MESSAGE(Object,Method,Parameters,Results).

Аргументы функционала SEND_MESSAGE имеют следующее содержание:

- Object представляет собой имя объекта, которому посылается сообщение;

- Method определяет имя метода, который необходимо выполнить для указанного объекта;

- Parameters содержит список параметоров, передаваемых заданному методу;

- Results после выполнения функтора будет содержать результат выполнения заданного метода.

Объекты, методы и обмен сообщениями позволяют использоватьновый принцип разбиения и вычисления программы, более общий и гибкий, чем традиционная идея подпрограммы. Ход событий не управляется извне, а осуществляется в зависимости от объектов.

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

Множества свойств классов двух А и В могут находиться в различных взаимоотношениях:

1. Множество свойств класса А не пересекается со множеством свойств класса В, т.е. у объектов этих классов нет общих свойств.

2. Множества свойств классов А и В пересекаются, следовательно у них есть как общие, так и различные свойства.

3. Множество свойств класса А содержит множество свойств класса В или наоборот.

Если множество свойств класса А содержит множество свойств класса В, то будем говорить, что класс А является подклассом класса В и соответственно класс В является надклассом (или суперклассом) класса А. Свойства могут и совпадать, но тогда мы имеем дело с одним и тем же классом.

Таким образом у подкласса всегда больше свойств, чем у содержащего его надкласса. Его объекты являются в отношении некоторых свойств более конкретными или специфичными по сравнению с объектами надкласса, которые в свою очередь являются более универсальными.

Соседние файлы в папке АУП_1