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