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

Вызов метода через сообщения



Вызов метода через сообщения

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

Например, при печати может использоваться единственное сообщение print. Оно используется как для печати экземпляров класса String, так и для экземпляров класса Integer. Говорят при этом, что сообщение print - сообщение родового (generic) класса. При печати экземпляра класса Integer сообщение X print дает вывод числа, а при печати экземпляра класса String сообщение S print выводит строку. Это происходит из-за того, что каждый объект анализирует сообщение по-разному.

В каждом классе имеется словарь методов

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

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



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