Показать сообщение отдельно
Старый 05.02.2018, 14:55
Appleman вне форума Посмотреть профиль Отправить личное сообщение для Appleman Найти все сообщения от Appleman
  № 14  
Ответить с цитированием
Appleman
 
Аватар для Appleman

Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 483
Цитата:
Сообщение от caseyryan Посмотреть сообщение
То есть там и перезапись и в каждом перезаписанно еще и вызов статического? Это конечно вообще дичь, как по мне) Лучше действительно прямо в этих методах написать рассчет.
п.с. А можно глянуть что там за расчет?
Да нечего там особенно смотреть. Если совсем минималистично, то выглядит примерно так (сорри если отступы не получатся, писал прямо здесь):

Код AS3:
public class Hero extends Character
{
   override public function get attackRating()
   {
      return AttackRating.calculate(this);
   }
}
 
public class AttackRating
{
static private const POW: uint = 3; // степень
static private const BASE: Nubmer = 1.5; // база расчёта
 
static public function calculate(ch: Character) : Number
{
   // Всякие расчёты
   return result;
}
Я думаю, что вопрос закрыт. Позицию сообщества я понял.

Добавлено через 27 часов 7 минут
Ребята! Давайте забудем про статические классы, с ними всё понятно. Я тут пока обдумывал ситуацию, мне такая крамольная мысль в голову пришла. А верно ли я вообще втыкаю приведённый выше расчёт в наследника класса Character. Что Вы думаете с точки зрения философии ООП, принципа одной ответственности класса и т.п.?

Смотрите. Сейчас у меня метод execute() класса Action ломится в наследника Character за показателем attackRating, который рассчитывается на основе свойств персонажа, хранящихся в Character. Корректно ли в данном случае помещать подобный метод в Character? Или правильнее запросить из Character значения необходимых свойств, и посчитать непосредственно в классе Action, создав там отдельный приватный метод?
__________________
Не сломано - не чини!