Создание пользовательских классов

Процесс создания классов для использования в пользовательском проекте кажется довольно сложным. Тем не менее, самой сложной частью в создании класса является разработка методов, свойств и событий класса.

Стратегия разработки класса

Тема проектирования с ориентацией на объект довольно сложна. Академическим изучением этой дисциплины и ее профессиональным применением можно заниматься всю жизнь. Тем не менее, здесь приводится несколько рекомендаций и подходов, которые помогут сделать первые шаги в этом направлении.

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

    • Объект значений: эти объекты в основном являются контейнерами данных. Вероятнее всего, они имеют несколько свойств и небольшое число методов (а иногда используются без методов). Как правило, они являются закодированным представлением четко заданных элементов. Например, приложение музыкального проигрывателя может включать класс Song (песня), представляющий одну реальную песню, а также класс Playlist (список воспроизведения), представляющий абстрактную группу песен.

    • Экранные объекты: эти объекты реально отображаются на экране. В качестве примеров можно назвать выпадающие списки, индикаторные панели состояния, графические элементы, такие как различные существа в видеоиграх, и т. п.

    • Структурные объекты приложения: эти объекты выполняют широкие функции, поддерживая обработку данных и логические операции, выполняемые приложением. Например, можно создать объект для выполнения определенных вычислений при имитации биологической среды. Можно создать один объект, отвечающий за синхронизацию значений элемента управления набором номера и показаний громкости в приложении музыкального проигрывателя. Другой объект может управлять правилами в видеоигре. Или можно создать класс для загрузки сохраненного рисунка в приложение рисования.

  2. Определите специальные функции для данного класса. Различные функциональные типы часто становятся методами класса.

  3. Если класс должен использоваться как объект значений, решите, какие данные будут содержать его экземпляры. Эти элементы являются хорошими кандидатами в свойства.

  4. Поскольку класс разрабатывается специально для пользовательского проекта, очень важно снабдить его теми функциями, которые необходимы для конкретного приложения. Попытайтесь дать ответы на следующие вопросы.

    • Какие части информации приложение сохраняет, отслеживает и обрабатывает? Ответ на этот вопрос поможет определить все необходимые объекты значений и свойства.

    • Какие наборы действий выполняет приложение? Например, что происходит при первой загрузке приложения, при нажатии определенной кнопки, по завершении воспроизведения фильма и так далее? Эти действия отлично подходят на роль методов. Они также могут быть свойствами, если включают изменение отдельных значений.

    • Какая информация необходима для выполнения любого из указанных действий? Эти порции информации становятся параметрами метода.

    • По мере выполнения приложения что будет изменяться в классе, о чем должна будет передаваться информация в другие компоненты приложения? Эти элементы являются хорошими кандидатами в события.

  5. Существует ли объект, аналогичный объекту, который необходимо исключить из-за недостатка функциональных возможностей, которые необходимо добавить? Рассмотрите возможность создания подклассов. ( Подкласс — это класс, который создается на основе функций существующего класса без определения всех собственных функций.) Например, чтобы создать класс, представляющий визуальный объект на экране, используйте свойства существующего объекта отображения в качестве основы класса. В этом случае объект отображения (такой как MovieClip или Sprite) будет базовым классом , а созданный класс будет расширением этого класса.

Написание кода для класса

После представления структуры класса или по крайней мере планирования информации, хранимой в этом классе, и действий, выполняемых этим классом, фактический синтаксис написания этого класса достаточно понятен.

Ниже перечислены основные шаги создания собственного класса ActionScript.

  1. Откройте новый текстовый документ в программе текстового редактора ActionScript.

  2. Введите инструкцию class для задания имени класса. Чтобы добавить оператор class , введите выражение public class и имя класса. Добавьте открывающиеся и закрывающиеся фигурные скобки, в которых будет указываться содержимое класса (определения методов и свойств). Например:

    public class MyClass 
    { 
    }

    Слово public означает, что этот класс доступен для любого другого кода. Другие возможности описаны в разделе Атрибуты пространства имен для управления доступом.

  3. Введите оператор package , чтобы обозначить имя пакета, содержащего класс. Используется следующий синтаксис: слово package , после которого указываются имя пакета, открывающиеся и закрывающиеся фигурные скобки, в которых содержится блок оператора class ). Например, измените код, содержащийся в предыдущем шаге, на следующий:

    package mypackage 
    { 
        public class MyClass 
        { 
        } 
    }
  4. Определите каждое свойство в классе с помощью оператора var в определении класса. Синтаксис совпадает с синтаксисом, используемым для определения любой переменной (с добавлением модификатора public ). Например, добавление следующих строк между открывающейся и закрывающейся фигурными скобками определения класса приведет к созданию свойств с именами textProperty , numericProperty и dateProperty .

    public var textProperty:String = "some default value"; 
    public var numericProperty:Number = 17; 
    public var dateProperty:Date;
  5. Определите каждый метод в классе с помощью синтаксиса, который использовался для задания функции. Например:

    • Для создания метода myMethod() введите:

      public function myMethod(param1:String, param2:Number):void 
      { 
          // do something with parameters 
      }
    • Для создания конструктора (специального метода, который является частью процесса создания экземпляра класса) создайте метод с именем, которое в точности совпадает с именем класса:

      public function MyClass() 
      { 
          // do stuff to set initial values for properties 
          // and otherwise set up the object 
          textVariable = "Hello there!"; 
          dateVariable = new Date(2001, 5, 11); 
      }

      Если конструктор метода не включен в класс, компилятор автоматически создает пустой конструктор в классе. (Другими словами, конструктор без параметров и операторов.)

    Существует несколько дополнительных элементов класса, которые можно определить. Эти элементы являются более сложными.

    • Средства доступа — это специальные узлы связи между методом и свойством. Когда записывается код для определения класса, средство доступа записывается как метод. При определении свойства можно выполнять несколько действий (а не только чтение и назначение значения). Тем не менее, при создании экземпляра класса средство доступа рассматривается как свойство: его имя используется для чтения и задания значения.

    • События в ActionScript не задаются с помощью специального синтаксиса. Вместо этого события в классе определяются с использованием функций класса EventDispatcher.