Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Взаимодействие между классами 
:(
    Опции темы
deaks
  Дата 16.2.2011, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 23.9.2009

Репутация: нет
Всего: нет



Добрый день,

посоветуйте, как лучше всего(в рамках чистого с++) в данном случае организовать передачу данных между классом MissileDynamic и MissileACS - ситуация, когда один класс использует переменную, а потом второй хочет ее так же видеть
По хорошему они не должны знать друг о друге ничего. И все должно реализоваться через Object, который в себя включает Динамику(Dynamic) и Управление(Control) и предоставляет интерфейсы для общения со своими потомками

Соответственно система включает в себя еще больше компонентов, показана лишь часть.
user posted image
PM MAIL   Вверх
bsa
Дата 16.2.2011, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Это говорит об ошибке проектирования... Давай поподробней о переменной и зачем она нужна классам.
PM   Вверх
deaks
Дата 16.2.2011, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 23.9.2009

Репутация: нет
Всего: нет



Грубо говоря:
класс Динамики - инициализирует переменную Скорость и изменяет в процессе работы,
а класс Управления - использует эту переменную допустим для расчета маневра
PM MAIL   Вверх
bsa
Дата 16.2.2011, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



координаты, скорость, ускорение - это характеристики объекта. Поэтому логично перенести их в соответствующий класс. Как вариант, можно сделать класс DynamicObject (наследник Object), у которого есть эти характеристики. А IControl и IDynamic умеют работать уже с ним, а не с Object.
PM   Вверх
deaks
Дата 16.2.2011, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 23.9.2009

Репутация: нет
Всего: нет



да, со скоростью я привел неудачный пример:

примерно так - объекты могут быть двух типов: самолет и машина

в Динамике самолета присутствует величина Угол атаки, которая несвойственна машине и поэтому ее нельзя выделить в параметры объекта. Следовательно как-то этот угол атаки надо протащить до Управления. Как быть?)
PM MAIL   Вверх
bsa
Дата 17.2.2011, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



deaks, значит должно быть "управление", которое работает только с самолетом. Нет же смысла его использовать для объекта "машина".
PM   Вверх
mes
Дата 17.2.2011, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(bsa @  17.2.2011,  11:15 Найти цитируемый пост)
 значит должно быть "управление", которое работает только с самолетом

и если нужно по полиморфной базе определить кем , является в действительности объект, то
1. id + static_cast
2. dynamic_cast
3. double dispatch
третий наиболее безопасный и удобный способ, но требует стабильной иерархии и некоторой подготовки исполнителя, в связи с чем, судя по формулировке вопроса, тс будет трудновато..



--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0951 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.