У меня есть класс с переменной экземпляра 'a'.Когда инициализация вызывается в smalltalk?
Когда я создаю новый экземпляр класса с использованием нового, каков порядок вызываемых методов?
Как объект узнает, что он должен вызвать метод initialize?
Если я создаю метод класса для назначения значений моим переменным экземпляра, будет ли вызываться инициализация для других переменных экземпляра, которые не вызываются методом класса?
Обратите внимание, что класс (который является объектом A) не может напрямую записываться в экземпляр (который является другим объектом B). Единственный способ для A - отправить сообщение B. В любом случае A сначала должен создать B, а затем правильно инициализировать. Конструктор для меня - это то, что выполняет два ops (create + initialize) атомарно. Когда новые инициализируются, унифицированный basicNew скрыт, поэтому мы можем поддерживать иллюзию правильного конструктора. Чтобы избежать инициализации дважды для других сообщений, таких как x: y: мы скорее отправляем Point basicNew setX: y :, хотя для Point Integer >> @ часто является примитивным и, следовательно, атомарным. –
Да, и, вероятно, Smalltalk Kent Beck использовал при написании шаблонов * Smalltalk Best Practice Patterns * по умолчанию не вызывал '# initialize' через' # new'. – MartinW