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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 25.10.2014, 10:54
elder_Nosferatu вне форума Посмотреть профиль Отправить личное сообщение для elder_Nosferatu Найти все сообщения от elder_Nosferatu
  № 13  
Ответить с цитированием
elder_Nosferatu
 
Аватар для elder_Nosferatu

Регистрация: Nov 2010
Адрес: 48° 55'N 24° 42'E GMT +2:00
Сообщений: 399
Записей в блоге: 1
Цитата:
Сообщение от Gerbert Посмотреть сообщение
При том, что есть правило ооп, которое гласит, что обращаться к свойству можно только через аксессор.
Ну раз так, то как Вы оправдаете это:
Код AS3:
private var _keyboardFlags: Object = {};
...
... _keyboardFlags.LEFT ...
... _keyboardFlags.RIGHT ...
... _keyboardFlags.STOP ...
...
Мало того, что свойства LEFT, RIGHT и STOP экземпляра класса Object ничем не прикрыты, так Вы еще и ссылку на этот экзепляр передаете наружу ПРАВОСЛАВНЫМ ГЕТ-АКСЕССОРОМ...
Если уж так приспичило ООПрограммировать, то делайте все правильно.
Пример 1: Геттер возвращает копию _keyboardFlags, тем самым не даем возможности изменить извне значения флагов. [Encapsulation completed ]
Код AS3:
public class KeyBoardController {
	private var _keyboardFlags:Object = {};
	public function get keyboardFlags( ):Object {
		var hash:Object = {};
		for (var key:String in _keyboardFlags) {
			hash[ key ] = _keyboardFlags[ key ];
		}
		return hash;
	}
}
Пример 2: Возвращаем значение флага по его имени (без прямого доступа к незащищенному хранилищу флагов - _keyboardFlags). [Encapsulation completed ]
Код AS3:
public class KeyBoardController {
	private var _keyboardFlags:Object = {};
	public function getKeyboardFlagByName( name:String ):Object {
		return _keyboardFlags[ name ];
	}
}
Пример 3: То же, что и Пример 2, но доступ по имени заменяем на геттеры отдельных флагов. [Encapsulation completed ]
Код AS3:
public class KeyBoardController {
	private var _keyboardFlags:Object = {};
	public function get flagLEFT( ):Object {
		return _keyboardFlags[ "LEFT" ];
	}
	public function get flagRIGHT( ):Object {
		return _keyboardFlags[ "RIGHT" ];
	}
	public function get flagSTOP( ):Object {
		return _keyboardFlags[ "STOP" ];
	}
}
Пример 4: То же, что и пример 3, но хранилище флагов заменяем на соответствующие нужным флагам свойства. [Encapsulation completed ]
Код AS3:
public class KeyBoardController {
	private var _flagLEFT:Object;
	private var _flagRIGHT:Object;
	private var _flagSTOP:Object;
	public function get flagLEFT( ):Object {
		return _flagLEFT;
	}
	public function get flagRIGHT( ):Object {
		return _flagRIGHT;
	}
	public function get flagSTOP( ):Object {
		return _flagSTOP;
	}
}
ЗЫ: Если Вы охарактеризовали мой прежний пост, как ношение нижнего белья поверх брюк, то либо ничерта не поняли, либо огрызаетесь праведным идеологическим гневом вместо тог, чтобы аргументировано отстоять свою позицию. Я не предлагаю вам делать ничего противоестественного. Более того, я предлагаю не делать ничего неуместного. Приведу свою аналогию. Вы выставляете на показ яйцо Фаберже. Вы знаете, что посмотреть на него прийдут всякие сомнительные личности и пытаетесь защитить свое богатство охранной системой. Но вместо того, чтобы накрыть яйцо стеклянной витриной с сигнализацией, Вы подсоединяете напряжение к подставке для яйца. Я Вам говорю, что такой подход не страхует Вас от кражы яйца, а Вы мне заявляете, что нельзя же без охранной системы.

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

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

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


 


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


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