Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 11.06.2010, 20:06
dandelion вне форума Посмотреть профиль Отправить личное сообщение для dandelion Найти все сообщения от dandelion
  № 1  
Ответить с цитированием
dandelion

Регистрация: Feb 2010
Сообщений: 23
По умолчанию сеттер и геттер

Добрый день!

Объясните пожалуйста смысл сеттрев и геттрев, помимо разницы в вызове.
В чём принципиальное различие:

Код AS1/AS2:
var a:String
 
function setA (value:String):void {
	a = value;
}
 
setA("abc");
от:
Код AS1/AS2:
var a:String;
 
function set A(value:String) {
	a = value;
}
 
A = "a";
и тоже самое с геттером.

что то я где то упустил

Старый 11.06.2010, 20:15
Kuruki вне форума Посмотреть профиль Отправить личное сообщение для Kuruki Найти все сообщения от Kuruki
  № 2  
Ответить с цитированием
Kuruki

Регистрация: Jan 2008
Сообщений: 669
Только в синтаксисе

Старый 11.06.2010, 20:34
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 3  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Код AS3:
a++;
setA(getA()+1);
Первое приятней.


Последний раз редактировалось Psycho Tiger; 11.06.2010 в 20:36.
Старый 12.06.2010, 14:09
easy.proger вне форума Посмотреть профиль Отправить личное сообщение для easy.proger Найти все сообщения от easy.proger
  № 4  
Ответить с цитированием
easy.proger

Регистрация: Jun 2010
Адрес: somewhere in the universe
Сообщений: 195
Разница в том, что при "set a" можно обратиться к свойству "a" приблизительно так

Код AS3:
var someClass:SomeClass = new SomeClass();
someClass.a = 123;
Разница между сеттером и публичным свойством заключается в том, что мы можем обработать поступившие данные как нам удобно к примеру

Код AS3:
public function set a(num:Number):void
{
       _a = num*2;
}
 
var someClass:SomeClass = new SomeClass();
someClass.a = 10;
Мы получим _а = 20; тогда как если бы было просто свойство например
public var a:Number;

Код AS3:
var someClass:SomeClass = new SomeClass();
someClass.a = 10;
Мы бы получили 10

думаю мысль донес )

Старый 12.06.2010, 14:26
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 5  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Кэп сообщает, что сеттер/геттер - это функции, в отличии от. И разница как между переменной и функцией.

Старый 12.06.2010, 19:18
NeonSelf вне форума Посмотреть профиль Отправить личное сообщение для NeonSelf Найти все сообщения от NeonSelf
  № 6  
Ответить с цитированием
NeonSelf

Регистрация: May 2010
Адрес: Украина, Донецкая обл., Харцызск
Сообщений: 13
ТОВАРИЩИ!!! Сеттер и геттер намного полезнее чем здесь описано,приведу несколько примеров:

1) нужно сделать в обьекте переменную, доступную только для чтения извне, но не для установки - тогда сама переменная делается private, и создается функция-геттер выдающая ее значение (для свойств-обьектов придется сначала сделать копию этого обьекта, чтобы не выдывать геттером ссылку на приватный обьект)

2) если добавление нового свойства создает избыточность данных. типичный пример - вектор (x,y) у которого иногда нужно узнавать длину length. Очевидно, что длина - значение вычисляемое, а значит его хранить не обязательно, можно написать геттер, который будет вычислять длину по значениям текущих координат вектора : return Math.sqrt(x*x+y*y)

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

главное - нужно помнить, что удобство написания кода и скорость его выполнения - совсе разные вещи, поэтому в критических местах все-таки приходится кешировать избыточную информацию в виде отдельных переменных (как например длина вектора). даже сам Adobe этим не гнушается, вспомнитье хотябы свойство всех отображаемых обьектов "cacheAsBitmap"

Старый 12.06.2010, 21:32
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 7  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
Сообщение от NeonSelf Посмотреть сообщение
ТОВАРИЩИ!!! Сеттер и геттер намного полезнее чем здесь описано,приведу несколько примеров:
Спасибо, что напомнили нам и разъяснили молодежи, но можно ли без "!!!!"? Выглядит очень вульгарно.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 15.06.2010, 14:30
dandelion вне форума Посмотреть профиль Отправить личное сообщение для dandelion Найти все сообщения от dandelion
  № 8  
Ответить с цитированием
dandelion

Регистрация: Feb 2010
Сообщений: 23
спасибо, смысл всего понял)

Создать новую тему Ответ Часовой пояс GMT +4, время: 23:23.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 23:23.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.