Macromedia Flash 5. Объектно - ориентированное программирование




Конструктор


Термин конструктор означает "нечто, что создаёт (конструирует) объекты". Мы знаем, что все объекты создаются из классов. Так что конструктор должен быть ЕОВСД (Ещё-Одним-Выдуманным-Словом-Для) класса. Ну, как бы это сказать... Точно так же, как и класс является частным случаем функции (только в ActionScript!), конструктор - это некая часть класса. Эта часть помогает "конструировать" объекты, как вы, наверное, уже догадались. Мы знаем, что объекты создаются при помощи объекта активации и аргументов. Но, стало быть и конструктор - это такой же объект активации. Да, так и есть. Трудности начнутся, когда мы вспомним, что объекта активации не существует, пока мы его не вызовем, а по окончании своей миссии он уничтожается - таких друзей в адресную книгу не вносят. Получается, что единственный способ "активировать" этот объект активации - вызвать свойство, которому он назначен, то есть объект, который даёт имя классу. Это прекрасно работает, потому что аргументы как бы "зажаты" между этими двумя объектами и так прочно друг к другу привязаны, что их часто рассматривают, как единое целое.

Почему нам так важно дать наиболее полное и точное определение конструктора и его работы? Потому что это ещё одно из недокументированных ключевых слов ActionScript, которые иногда бывают просто необходимы. Всякий экземпляр имеет свойство constructor и оно указывает на класс, который его создал, точнее на объект, давший имя классу. Когда вы рассуждаете о конструкторе с точки зрения экземпляра (как в случае с конструктором rover'а), то конструктор это класс, который создал экземпляр. Когда речь идёт о частях класса, то конструктор это скорее объект активации, наряду с аргументами и объектом имени. На самом же деле, подразумевается прототип или свойства, назначенные объекту имени класса (например, Dog.count), потому что они напрямую не участвуют в "конструировании" объекта. Кое-кто может сказать, что мы просто играем словами. Да, возможно, это так. В большинстве других объектно-ориентированных языках программирования конструктор и имя класса, это абсолютно разные понятия. В ActionScript они, конечно, тоже не взаимозаменяемы, но довольно тесно связаны друг с другом и разница между ними подчас очень невелика. Вот почему так важно оперировать точными определениями этих понятий. Фигурально выражаясь, можно сказать, что:




Содержание  Назад  Вперед