Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
as3_learning.pdf
Скачиваний:
43
Добавлен:
21.05.2015
Размер:
1.8 Mб
Скачать

93

Глава 4. Объектно-ориентированное программирование на языке ActionScript

Введение в объектно-ориентированное программирование

Объектно-ориентированное программирование (ООП) — это способ упорядочения кода в программе за счет его группировки в объектах. Термин объект в этом случае обозначает отдельный элемент, содержащий данные (значения данных) и функции. Если выбран объектно-ориентированный подход к организации программы, выполняется группировка определенных частей информации с общим набором функций или действий, связанных с этой информацией. Например, можно сгруппировать данные о музыке, такие как название альбома, название дорожки или имя исполнителя, с такими функциями, как добавление дорожки в список воспроизведения или воспроизведение всех песен какого-либо исполнителя. Эти части объединяются в один элемент, называемый объектом (например, Album или MusicTrack). Объединение значений и функций обеспечивает ряд преимуществ. Одним ключевым преимуществом является то, что вместо нескольких переменных необходимо использовать одну переменную. Кроме того, связанные функции хранятся вместе. Наконец, объединение информации и функций позволяет создать структуру программы, которая более точно соответствует реальным условиям.

Классы

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

Когда был создан язык ActionScript 1.0, использующие его программисты могли использовать объекты Function для создания конструктов, напоминающих классы. В версии ActionScript 2.0 была добавлена формальная поддержка для классов и введены ключевые слова, такие как class и extends. ActionScript 3.0 не только обеспечивает прежнюю поддержку ключевых слов, представленную в ActionScript 2.0, он также включает новые возможности. Например, ActionScript 3.0 включает усовершенствованное управление доступом с помощью атрибутов protected и internal. Кроме того, обеспечивается более усовершенствованное управление наследованием с помощью ключевых слов final и override.

Для разработчиков, имеющих опыт создания классов на таких языках программирования, как Java, C++ или C#, в ActionScript доступны знакомые функции. В ActionScript используется много аналогичных ключевых слов и имен атрибутов, таких как class, extends и public.

Последнее обновление 12.5.2011.

ИЗУЧЕНИЕ ACTIONSCRIPT 3.0

94

Объектно-ориентированное программирование на языке ActionScript

Примечание. В документации Adobe ActionScript термин «свойство» обозначает любой член объекта или класса, включая переменные, константы и методы. Кроме того, несмотря на то, что термины «класс» и «статический член» нередко взаимозаменяются, в этом документе они обозначают разные понятия.

Например, в этой главе словосочетание «свойства класса» относится ко всем членам класса, а не только к его статическим членам.

Определения классов

В ActionScript 3.0 в определениях классов используется синтаксис, подобный тому, который использовался для определения классов в ActionScript 2.0. Правильный синтаксис для определения класса вызывает ключевое слово class, за которым следует имя класса. Тело класса, заключенное в фигурные скобки ({}), следует за именем класса. Например, следующий код создает класс с именем Shape, содержащий одну переменную visible.

public class Shape

{

var visible:Boolean = true;

}

Одно значительное изменение в синтаксисе затрагивает определения классов, находящиеся внутри пакета. В ActionScript 2.0, если класс находится в пакете, имя пакета должно быть включено в объявление класса. В языке ActionScript 3.0, в котором вводится инструкция package, имя пакета должно быть включено в объявление пакета, а не в объявление класса. Например, следующие объявления классов показывают, как класс BitmapData, включенный в пакет flash.display, определяется в ActionScript 2.0 и ActionScript 3.0.

// ActionScript 2.0

class flash.display.BitmapData {}

// ActionScript 3.0 package flash.display

{

public class BitmapData {}

}

Атрибуты классов

ActionScript 3.0 позволяет изменять определения классов с помощью одного из четырех атрибутов.

Атрибут

Определение

 

 

dynamic

Позволяет добавлять свойства для экземпляров во время выполнения.

 

 

final

Не должен расширяться другим классом.

 

 

internal (по умолчанию)

Видимый для ссылок внутри текущего пакета.

 

 

public

Видимый для всех ссылок.

 

 

Каждый из этих атрибутов, кроме internal, необходимо явно добавлять для получения соответствующего поведения. Например, если не включить атрибут dynamic в определение класса, то для его экземпляров нельзя будет добавлять свойства во время выполнения. Чтобы присвоить атрибут, необходимо поместить его в начало определения класса, как показано в следующем коде.

dynamic class Shape {}

Последнее обновление 12.5.2011.

ИЗУЧЕНИЕ ACTIONSCRIPT 3.0

95

Объектно-ориентированное программирование на языке ActionScript

Обратите внимание, что в список поддерживаемых атрибутов не входит abstract. Абстрактные классы не поддерживаются в ActionScript 3.0. Также обратите внимание на то, что в список не включены атрибуты private и protected. Эти атрибуты имеют значение только внутри определения класса и не могут применяться к самим классам. Если класс не должен открыто отображаться за пределами пакета, поместите его внутрь пакета и пометьте его атрибутом internal. В противном случае можно пропустить атрибуты internal и public, и компилятор автоматически добавит атрибут internal. Можно также определить класс, чтобы он был виден только в исходном файле, в котором он определен. Поместите класс в конец исходного файла ниже закрывающейся фигурной скобки определения пакета.

Тело класса

Тело класса заключается в фигурные скобки. В нем определяются переменные, константы и методы класса. В следующем примере показано объявление класса Accessibility в среде ActionScript 3.0:

public final class Accessibility

{

public static function get active():Boolean; public static function updateProperties():void;

}

Также внутри тела класса можно определить пространство имен. В следующем примере показано, как можно определить в теле класса пространство имен и использовать его в качестве атрибута метода этого класса.

public class SampleClass

{

public namespace sampleNamespace; sampleNamespace function doSomething():void;

}

ActionScript 3.0 позволяет включать в тело класса не только определения, но и инструкции. Операторы, которые находятся внутри тела класса, но не включены в определение метода, выполняются только один раз. Они выполняются, когда определение класса встречается в первый раз, и создается связанный класс. В следующем примере демонстрируется вызов внешней функции hello() и инструкция trace, которая выводит на экран подтверждение при определении класса.

function hello():String

{

trace("hola");

}

class SampleClass

{

hello();

trace("class created");

}

// output when class is created hola

class created

В ActionScript 3.0 можно определить одноименные статическое свойство и свойство экземпляра в одном теле класса. Например, следующий код объявляет статическую переменную с именем message и переменную экземпляра с тем же именем.

Последнее обновление 12.5.2011.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]