Методы экземпляра  ActionScript 

 

 

Метод экземпляра — это отдельный набор инструкций, выполняющих  

определенную задачу, связанную с данным объектом. По сути, методы экземпляра  

описывают действия, которые может выполнять тот или иной объект. Например, 

в предопределенном классе Sound (экземпляры которого представляют звуки 

в программе) описан метод экземпляра с именем play, который позволяет  

начать воспроизведение звука. Аналогичным образом в предопределенном классе 

TextField (экземпляры которого представляют текст на экране) описан метод 

с именем setSelection, позволяющий изменять количество выделенных  

символов в текстовом поле. 

Для создания метода экземпляра используется описание функции внутри блока 
класса, как показано в следующем обобщенном коде: 
class НекийКласс { 
function идентификатор ( ) { 
В данном коде ключевое слово function обозначает начало описания метода 
экземпляра. Затем указывается имя метода экземпляра, которое может являться 
любым допустимым идентификатором (как уже упоминалось, имена  
идентификаторов не могут содержать пробелы или тире, а также не должны начинаться 
с цифры). За именем метода следует пара круглых скобок, содержащих список 
параметров метода, которые будут рассмотрены позднее. Фигурные скобки { и }, 
следующие за списком параметров, являются оператором блока. Оператор блока 
метода экземпляра называется телом метода. Оно содержит директивы,  
используемые для выполнения определенной задачи. 
Для выполнения кода, описанного в теле определенного метода, используется  
выражение вызова, как показано в следующем обобщенном коде. Обратите внимание 
на обязательное использование скобок ( ), следующих за именем метода. 
объект.имяМетода( ) 
В этом коде имяМетода — это имя метода, код которого должен быть выполнен, а объ - 
ект — ссылка на определенный экземпляр, который будет использоваться для  
выполнения задачи, представленной указанным методом. Использование выражения 
вызова для выполнения кода, описанного в теле метода экземпляра, называется 
вызовом метода объекта (или вызовом метода через объект). Кроме того,  
применяется термин «активизация», обозначающий вызов. 
Теперь реализуем представленные концепции в нашей программе создания  
виртуального зоопарка. 
Чтобы наделить наших животных способностью питаться, добавим новую  
переменную экземпляра и новый метод экземпляра в класс VirtualPet. Новая  
переменная экземпляра — currentCalories— будет отслеживать количество пищи, 
съеденной каждым животным, в виде числового значения. В новом методе  
экземпляра eat ( ) будет реализована концепция принятия пищи путем добавления 
100 калорий к текущему значению переменной экземпляра currentCalories. 
В конечном счете метод eat ( ) будет вызываться в ответ на действие  
пользователя — кормление животного. 
Следующий код демонстрирует описание переменной currentCalories. Для 
исключения возможности влияния внешнего кода на количество калорий, которым 
обладает каждый экземпляр VirtualPet, переменная currentCalories  
описана с использованием модификатора private. Обратите внимание, что каждому 
новому экземпляру VirtualPet изначально присваивается 1000 калорий. 
package zoo { 
internal class VirtualPet { 
internal var petName; 
private var currentCalories = 1000; 
public function VirtualPet (name) { 
this.petName = name; 
Следующий код демонстрирует описание метода экземпляра eat ( ), тело  
которого пока не содержит никаких инструкций. Обратите внимание, что описания 
методов экземпляра размещаются после описания метода-конструктора  
класса, а описания переменных экземпляра — до описания метода-конструктора 
класса. 
package zoo { 
internal class VirtualPet { 
internal var petName; 
private var currentCalories = 1000; 
public function VirtualPet (name) { 
this.petName = name; 
function eat ( ) { 
Хотя тело метода eat ( ) пока не содержит никаких инструкций, подобного  
описания вполне достаточно, чтобы вызвать метод eat ( ) для объекта VirtualPet, 
как показано в следующей обновленной версии класса VirtualZoo: 
package zoo { 
public class VirtualZoo { 
private var pet; 
public function VirtualZoo ( ) { 
this.pet = new Virtual Pet("Stan"); 
// Вызов метода eat( ) для объекта Virtual Pet, ссылка на который 
// хранится в переменной pet 
this.pet.eat( ); 
Предположим, что в теле метода eat ( ) к значению переменной currentCalories 
того объекта, через который был вызван метод eat ( ), необходимо добавить 100. 
Для обращения к этому объекту используется ключевое слово this. 
Добавление числового значения (например, 100) к значению существующей  
переменной (например, currentCalories) включает в себя два этапа. Сначала  
вычисляется результат сложения значения переменной и числового значения, а затем 
полученная сумма присваивается переменной. Обобщенный код выглядит  
следующим образом: 
некаяПеременная = некаяПеременная + числовоеЗначение 
В случае с методом eat ( ) к значению переменной currentCalories текущего 
объекта (this) мы собираемся добавить 100. В результате получаем следующий 
код: 
this.currentCalories = this.currentCalories + 100; 
В качестве удобной альтернативы предыдущему коду язык ActionScript предлагает 
оператор сложения с присваиванием +=, который, если используется с числами, 
прибавляет значение, находящееся справа от оператора, к переменной,  
находящейся слева от него, как показано в следующем коде: 
this.currentCalories += 100; 
Код класса VirtualPet теперь выглядит следующим образом: 
package zoo { 
internal class VirtualPet { 
internal var petName; 
private var currentCalories = 1000; 
public function VirtualPet (name) { 
this.petName = name; 
function eat ( ) { 
this.currentCalories += 100; 
Начиная с текущего момента, при каждом вызове метода eat ( ) экземпляра 
VirtualPet значение переменной currentCalories данного экземпляра будет 
увеличиваться на 100. Например, следующий код, взятый из конструктора класса 
VirtualZoo, увеличивает значение переменной currentCalories экземпляра 
VirtualPet, ссылка на который хранится в переменной pet, до 1100 (поскольку 
всем экземплярам VirtualPet изначально присваивается значение 1000  
калорий). 
this.pet = new VirtualPet("Stan"); 
this.pet.eat( ); 
Обратите внимание, что, несмотря на закрытость характеристики cur rentCalor ies 
класса VirtualPet, значение этой переменной может быть изменено в результате 
выполнения действия (принятия пищи), инициированного внешним кодом —  
экземпляром VirtualPet. Однако в некоторых случаях даже методы экземпляра 
должны быть закрытыми. Как и в случае с переменными экземпляра, чтобы  
контролировать уровень доступа методов экземпляра в программе, используются  
модификаторы управления доступом. 




BACK NEXT

Сайт является частным собранием материалов и представляет собой любительский информационно-образовательный ресурс. Вся информация получена из открытых источников. Администрация не претендует на авторство использованных материалов. Все права принадлежат их правообладателям