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

Классы Object и Class. Метаклассы



Классы Object и Class. Метаклассы

Рассмотрим связь экземпляров класса и связь подклассов:

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

При обращении к метаклассу ему посылается сообщение class (класс). Например, пусть есть класс целых чисел Integer и метакласс Integer class. Класс Integer является единственным экземпляром метакласса Integer. При этом некоторые из методов класса могут быть зарегистрированы в словаре методов метакласса, а методы экземпляра - в словаре методов класса. Имя сообщения, посланного классу, можно отыскать в словаре сообщений метакласса с помощью тех же механизмов, которые применяются для общего метода поиска:

Между метаклассами также существует иерархия, образованная тем же отношением "суперкласс - подкласс". Иерархия классов и иерархия метаклассов изоморфны друг другу:



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