Показать сообщение отдельно
Старый 19.03.2010, 13:14
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 7  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Геттеры/ Сеттеры очень хорошая вещь:

1: в сеттере можно вставить проверку валидности данных
Код AS3:
public function set a(value:int):void
{
if(value<100)_a = value;
else throw(new Error("Invalid value on "+this.className+".a"));
}
2: в сеттере можно можно диспатчить событие об изменении (например, для MVC)
Код AS3:
public  function set a(value:int):void
{
_a = value;
dispatchEvent(new ChangeModelEvent("a"));
}
3: в геттере/сеттере можно инициировать создание объекта если он еще не создан.
Код AS3:
public  function get a():Object
{
if (!_a) _a=new Object(); 
return _a;
}
4: можно создать только геттер - тогда свойство будет "только для чтения" ( правда это не работает со сложными типами, т.к. для изменений свойств объекта достаточно ссылки на объект)

5: сеттеры позволяют выполнить некую операцию, например: при изменении width на самом деле изменяем масштабирование по scaleX

6: в геттере можно возвращать вычисляемое значение:
Код AS3:
function get square():int 
{
return _width*_height;
}
7: в геттере/ сеттере можно переопределить свойства вложенного в Композицию или в Декоратор объекта

Код AS3:
function get length():int 
{
return _innerArray.length;
}
Я настолько к ним привык, что практически все свойства у меня задаются через сеттеры/геттеры
__________________
Отряд Котовскага


Последний раз редактировалось Котяра; 19.03.2010 в 13:38.