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

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

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

Регистрация: Nov 2013
Сообщений: 75
По умолчанию Разница между классами

Лучше использовать класс с переменными или класс с одним объектом у которого много переменных?

Старый 30.07.2014, 22:02
LifeIsRhythm вне форума Посмотреть профиль Отправить личное сообщение для LifeIsRhythm Найти все сообщения от LifeIsRhythm
  № 2  
LifeIsRhythm
[+1 22.07.14]
[+4 12.08.14]
[+1 09.02.15]

Регистрация: May 2014
Сообщений: 182
Второй способ медленнее.

Добавлено через 2 минуты
Ваш вопрос на самом деле философский. В ООП второй вариант предпочтительней, так-как это композиция.

Добавлено через 3 минуты
Но отталкиваться нужно от чего-то реального. Если так делать всегда, то будет выглядеть смешно.

Старый 30.07.2014, 22:07
artem2033 вне форума Посмотреть профиль Отправить личное сообщение для artem2033 Найти все сообщения от artem2033
  № 3  
artem2033

Регистрация: Nov 2013
Сообщений: 75
То есть можно и так и так делать?

Старый 30.07.2014, 22:07
LifeIsRhythm вне форума Посмотреть профиль Отправить личное сообщение для LifeIsRhythm Найти все сообщения от LifeIsRhythm
  № 4  
LifeIsRhythm
[+1 22.07.14]
[+4 12.08.14]
[+1 09.02.15]

Регистрация: May 2014
Сообщений: 182
Но в ООП она предпочтительней наследству.. А если вопрос не стоит между выбором, то лучше класс с переменными.

Добавлено через 1 минуту
Цитата:
То есть можно и так и так делать?
Если Вы себе докажите, что так нужно и так будет лучше, то делайте.
Но лучше приведите маленький пример.

Старый 30.07.2014, 22:45
artem2033 вне форума Посмотреть профиль Отправить личное сообщение для artem2033 Найти все сообщения от artem2033
  № 5  
artem2033

Регистрация: Nov 2013
Сообщений: 75
Код AS3:
public class Enemy
{
    public var speed:Number = 3;
    public var damage:Number = 10;
}
или

Код AS3:
public class Enemy
{
    public function Enemy()
    {
    }
    public function init():void
    {
        var enemy:Object = new Object();
        enemy.damege = 10;
        enemy.speed = 3;
        EnemyManager.instance.add(enemy);
    }
}

Старый 30.07.2014, 22:52
LifeIsRhythm вне форума Посмотреть профиль Отправить личное сообщение для LifeIsRhythm Найти все сообщения от LifeIsRhythm
  № 6  
LifeIsRhythm
[+1 22.07.14]
[+4 12.08.14]
[+1 09.02.15]

Регистрация: May 2014
Сообщений: 182
Это вообще два разных варианта. В первым, после создания экземпляра Enemy, Вы сможете получить доступ к его public свойствам. А во втором Вы не можете обратится к свойству enemy, так-как оно локально и после выполнения метода init удалится из памяти.
Но именно в этом случае, первый вариант лучше. Чистый Object чаще используют только в том случаи, если он получился путем преобразования xml или json. Ну или ещё, как ассоциативный массив.

Добавлено через 2 минуты
Object является динамическим объектом, а в as3 к свойствам и методам динамических объектов, доступ в ... Вроде в полтора раза медленнее.

Старый 30.07.2014, 23:00
artem2033 вне форума Посмотреть профиль Отправить личное сообщение для artem2033 Найти все сообщения от artem2033
  № 7  
artem2033

Регистрация: Nov 2013
Сообщений: 75
Во втором варианте они у меня в массив добавляются, т.е. я могу через него обратиться.
Спасибо за ответ.

Старый 30.07.2014, 23:12
LifeIsRhythm вне форума Посмотреть профиль Отправить личное сообщение для LifeIsRhythm Найти все сообщения от LifeIsRhythm
  № 8  
LifeIsRhythm
[+1 22.07.14]
[+4 12.08.14]
[+1 09.02.15]

Регистрация: May 2014
Сообщений: 182
Если Вам нужно только хранилище каких-то настроек, то Вы можете создать Специальный класс с типизированными свойствами и скорость тогда будет выше. Например -
Код AS3:
public class EnemyData
{
    public var life:int = 100;
    public var name:String = 'defaultName';
}
И использовать -
Код AS3:
var enemyData:EnemyData = new EnemyData();
// и тут передали эти настройки в манагер

Старый 30.07.2014, 23:33
alexandrratush вне форума Посмотреть профиль Отправить личное сообщение для alexandrratush Найти все сообщения от alexandrratush
  № 9  
alexandrratush
 
Аватар для alexandrratush

Регистрация: Jul 2013
Адрес: Днепр
Сообщений: 529
Отправить сообщение для alexandrratush с помощью ICQ Отправить сообщение для alexandrratush с помощью Skype™
Цитата:
скорость тогда будет выше.
Я думаю если там будет десяток свойств, то значительного понижения скорости мы не заметим.

Мне кажется тут нужно смотреть на то, что в случае с Object мы зададим свойство speed, а искать будем sped. В итоге получим undefined. А с типизированными свойством у нас будет предупреждение на этапе компиляции.

Старый 31.07.2014, 08:15
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 10  
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
А с типизированными свойством у нас будет предупреждение на этапе компиляции.
С не динамическими, я б сказал, если речь конкретно о случае с неправильным названием переменной.
Цитата:
Лучше использовать класс с переменными или класс с одним объектом у которого много переменных?
У вас какая-то путаница в голове. Почитайте подробнее о том, что такое класс, что такое объект.
Возможно вас удивит, но в as3 даже Class, является наследником Object.
Вот такая конструкция
Код AS3:
trace(Class is Object);
Выдаст true. И вообще, в этом языке даже нет примитивов. Здесь всё является наследником Object.

Короче говоря, ваш вопрос лучше перефразировать примерно так:
Как лучше делать, объявлять для каждого свойства отдельную переменную класса, или хранить все свойства в динамической коллекции?

Лучшего варианта здесь нет. Все зависит от конкретной задачи. Если точно известно какие свойства будут, что ничего нового добавляться не будет (имеется в виду динамически), или данные не будут обновляться сразу всем скопом, то лучше первый вариант. Тут и доступ к свойствам быстрее, и IDE подсказки по коду выдаст. Но и вариант с коллекцией свойств тоже не плохой. Есть варианты, когда он удобнее. Так что точного ответа здесь не найти
__________________
Ко мне можно и нужно обращаться на ты)

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

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

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


 


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


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