Руководство по actionscript. часть 1, стр. 081

Того, мы будем применять термины «get-метод» и «set-метод» только в отношении специальных автоматических методов языка ActionScript.

Чтобы немного попрактиковаться в использовании методов-получателей и методов-модификаторов, снова изменим класс VirtualPet. Раньше для получения и присвоения имени объекту VirtualPet мы обращались непосредственно к переменной petName, как показано в следующем коде:

somePet. petName = «Erik»;

Предыдущий подход тем не менее в дальнейшем может стать источником проблем в нашей программе. Он позволяет присваивать переменной petName очень длинные значения, которые могут не вместиться на экране при отображении имени животного. Кроме того, переменной petName может быть присвоена пустая строка (» «), которая вообще не отобразится на экране. Чтобы избежать описанных проблем, объявим переменную petName закрытой и определим метод-модификатор для задания имени животного. Наш метод-модификатор se tName ( ) ограничивает максимальную длину имени 20 символами и предотвращает попытки присвоить переменной petName пустую строку (1111):

public function setName (newName) { // Если длина заданного нового имени больше 20 символов… if (newName. length > 20) {

// …обрезать имя. используя собственный метод String. substr( ).

// возвращающий указанную часть строки, над которой

// выполняется данный метод

newName = newName. substr(0. 20); } else if (newName == «») {

// …в противном случае, если заданное новое имя является

// пустой строкой, завершить выполнение метода, не изменяя

// значения переменной petName

return;

}

// Присвоить новое проверенное имя переменной petName petName = newName;

}

Теперь, когда мы объявили переменную petName закрытой, необходимо определить метод-получатель, с помощью которого внешний код сможет получить доступ к имени объекта VirtualPet. Мы присвоим нашему методу-получателю имя getName ( ). Пока этот метод будет просто возвращать значение переменной petName (зачастую возвращение значения переменной экземпляра является единственной задачей метода-получателя). Рассмотрим код метода:

public function getName ( ) { return petName;

}

В настоящее время метод getName ( ) очень прост, однако он добавляет гибкость в нашу программу. Например, в будущем может понадобиться, чтобы имена животных формировались с учетом пола. Для этого мы просто обновим метод, как

показано далее (следующая гипотетическая версия метода getName ( ) предполагает, что в классе VirtualPet определена переменная экземпляра gender, хранящая пол каждого животного):

public function getName ( ) { if (gender == «male») {

return «Mr. » + petName: } else { return «Mrs. » + petName:

}

}

В листинге 3.2 продемонстрирован новый код класса VirtualPet, в который были добавлены определения методов getName ( ) и setName ( ). Для лучшей читабельности метод экземпляра getAge ( ) и переменная экземпляра creationTime были удалены из описания класса VirtualPet.

Листинг 3.2. Класс VirtualPet

package zoo { internal class VirtualPet { private var petName: private var currentCalories = 1000:

public function VirtualPet (name) { petName = name:

}

public function eat (numberOfCalories) { var newCurrentCalories = currentCalories + numberOfCalories: if (newCurrentCalories > 2000) {

currentCalories = 2000: } else {

currentCalories = newCurrentCalories:

}

}

public function getHunger ( ) { return currentCalories / 2000;

}

public function setName (newName) { // Если длина заданного нового имени больше 20 символов… if (newName. length > 20) {

// …обрезать имя

newName = newName. substr(0. 20): } else if (newName == «») {

// …в противном случае, если заданное новое имя является

// пустой строкой, завершить выполнение метода, не изменяя

// значения переменной petName

return;

// Присвоить новое проверенное имя переменной petName petName = newName:

}

public function getName ( ) { return petName:

}

}

}

Теперь рассмотрим пример использования наших новых методов getName ( ) и setName ( ):

package zoo { public class VirtualZoo { private var pet:

public function VirtualZoo ( ) { pet = new VirtualPet(«Stan»):

// Присвоить старое имя животного локальной переменной oldName var oldName = pet. getName( ); // Дать животному новое имя pet. setName(«Marcos»);

}

}

}

Используя метод-модификатор для промежуточного присваивания значения переменной, мы можем разрабатывать приложения, способные адекватно реагировать на ошибки времени выполнения путем определения и обработки недопустимых или неподходящих значений. Значит ли это, что доступ ко всем переменным экземпляра должен осуществляться через методы? Например, рассмотрим метод-конструктор нашего класса VirtualPet:

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Оставить комментарий

Вы должны авторизоваться для отправки комментария.

Полезные ссылки
Случайные записи
  • 04.08.2011">Шторы на заказ – укрась свой родной дом
  • 27.06.2012">Пользователи Android получили доступ к облачному сервису OneCloud
  • 15.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.43
  • 10.03.2011">Руководство по actionscript. часть 4, стр. 036
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 002
  • 10.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.82
  • 27.02.2011">Руководство по actionscript. часть 6, стр. 048
  • 20.07.2010">Распространенные недочеты веб-дизайнеров
  • 01.03.2011">Руководство по actionscript. часть 5, стр. 115
  • 04.03.2011">Руководство по actionscript. часть 5, стр. 037
  • 17.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.10
  • 19.08.2013">Android с новыми возможностями на Chuwi V88
  • 02.06.2010">Самоучитель по креативному веб-дизайну. Книга 3, стр.101
  • 28.02.2011">Руководство по actionscript. часть 6, стр. 022
  • 09.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.170
Опрос

Какие цвета вы предпочитаете?

View Results

Loading ... Loading ...