Объектно-ориентированное программирование.Язык Смолток

         

Задание классов



Задание классов

Если зарегистрировать в системе спецификацию экземпляра класса и спецификацию самого класса, то получим объявление класса.

Спецификация экземпляра состоит из объявления переменных экземпляра и объявления методов экземпляра. Спецификация самого класса также состоит из объявления переменных класса и объявления методов класса.

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

У каждого класса существует два типа методов:

  • методы класса;
  • методы экземпляра.
  • Методы класса используются, когда необходимо произвести какие-либо действия с целым классом, например добавить к классу новый экземпляр. Сообщения к экземплярам инициализируют методы, оперирующие с конкретными экземплярами данного класса.

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

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

    Переменные класса являются глобальными: на них разрешена ссылка из всех экземпляров класса. Методы класса выполняются по сообщениям, посылаемым этому классу.



    Содержание раздела