Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вчленение объектов предметной области, особенности ООП 
:(
    Опции темы
Нитонисе
Дата 15.11.2010, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(mes @  15.11.2010,  19:10 Найти цитируемый пост)
a интервала не достаточно, для  расчета этого вектора ?

Для заполнения вектора Х значениями нужен еще вектор нагрузок.

Цитата(mes @  15.11.2010,  19:10 Найти цитируемый пост)
если нужен именно вектор, то чем не устраивает:  на входе: вектор сечений и пролет, на выходе эпюра/ы ?

Вектор сечений еще нужно задать, а задается он функцией класса Span. Вот тут и выбор варианта - либо пользование setX для работы напрямую с вектором X класса Diagram, либо создание временного вектора внутри функции createXSet, заполнении его значениями, а потом копирование в вектор Х Diagram.
PM MAIL   Вверх
mes
Дата 15.11.2010, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Нитонисе @  15.11.2010,  18:31 Найти цитируемый пост)
Вектор сечений еще нужно задать, а задается он функцией класса Span

Span то тут при чем ? он лишь источник данных, а не активный участник.. 


Цитата(Нитонисе @  15.11.2010,  18:31 Найти цитируемый пост)
 либо пользование setX для работы напрямую с вектором X класса Diagram, либо создание временного вектора внутри функции createXSet, з

то есть третьего варианта не дано ?



--------------------
PM MAIL WWW   Вверх
Нитонисе
Дата 15.11.2010, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(mes @  15.11.2010,  19:54 Найти цитируемый пост)
Span то тут при чем ? он лишь источник данных, а не активный участник.. 

В спан содержится указатель на вектор нагрузок, необходимый для формирования Х. Размещать этот указатель в объекте Diagram нелогично, потому что он представляет собой хранилище результатов расчета.

Цитата(mes @  15.11.2010,  19:54 Найти цитируемый пост)
то есть третьего варианта не дано ?

В данной системе классов другого варианта не вижу.
PM MAIL   Вверх
mes
Дата 15.11.2010, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Нитонисе @  15.11.2010,  19:12 Найти цитируемый пост)
В спан содержится указатель на вектор нагрузок, необходимый для формирования Х. Размещать этот указатель в объекте Diagram нелогично, потому что он представляет собой хранилище результатов расчета.

ну, а span передается диаграме, для формирования ее данных.. в чем проблема то ?


--------------------
PM MAIL WWW   Вверх
Нитонисе
Дата 15.11.2010, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(mes @  15.11.2010,  20:14 Найти цитируемый пост)
ну, а span передается диаграме, для формирования ее данных.. в чем проблема то ?

Тут уже обратная проблема, напрямую не обратиться к важным параметрам - длина пролета и вектор нагрузок объекта Span при формировании вектора Х, хотя это проще, чем косвенно обращаться к вектору Х из функции объекта Span. 
При этом остается проблема доступа ко всем трем векторам X,M,Q из других функций. То же рисование. Или предлагаете рисование объявить методом класса Diagram? Но это нелогично, потому что Diagram - это хранилище результатов расчета, а рисунок - это графическое отображение результатов расчета.
PM MAIL   Вверх
mes
Дата 15.11.2010, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Нитонисе @  15.11.2010,  19:25 Найти цитируемый пост)
Тут уже обратная проблема, напрямую не обратиться к важным параметрам 

так может стоит над этой проблемой подумать ? кстати что мешает напрямую обратиться ? 

Цитата(Нитонисе @  15.11.2010,  19:25 Найти цитируемый пост)
При этом остается проблема доступа ко всем трем векторам X,M,Q из других функций. 

не вижу проблемы? сформулируйте интерфейс так, чтоб это не было проблемой.. 

Цитата(Нитонисе @  15.11.2010,  19:25 Найти цитируемый пост)
 Или предлагаете рисование объявить методом класса Diagram? 

не важно.. зависит от модели "рисовальщика"..

Цитата(Нитонисе @  15.11.2010,  19:25 Найти цитируемый пост)
Но это нелогично, потому что Diagram - это хранилище результатов расчета, а рисунок - это графическое отображение результатов расчета. 

да, если нужно отделить данные от вида, то рисовальшик должен быть отдельным
 smile

Добавлено через 3 минуты и 15 секунд
Цитата(mes @  15.11.2010,  19:49 Найти цитируемый пост)
кстати что мешает напрямую обратиться ? 

а кажись понял.. Вам мешает слово protected ? как самый простой вариант, откройте возврат константной ссылки на него smile

Добавлено через 4 минуты и 20 секунд
Цитата(Нитонисе @  15.11.2010,  19:25 Найти цитируемый пост)
 длина пролета и вектор нагрузок 

раз существуют понятия, которые используются более чем в одном месте, значит должен быть соответствующий тип с нужным интерфейсом ..

Добавлено через 5 минут и 9 секунд
для вектора можно затайпдефить std::vector, а можно написать свою обертку, если требуется более жесткие гарантии.. 



--------------------
PM MAIL WWW   Вверх
Нитонисе
Дата 15.11.2010, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(mes @  15.11.2010,  20:49 Найти цитируемый пост)
так может стоит над этой проблемой подумать ? кстати что мешает напрямую обратиться ?

То, что и длина и вектор нагрузок protected в классе Span.

Цитата(mes @  15.11.2010,  20:49 Найти цитируемый пост)
не вижу проблемы? сформулируйте интерфейс так, чтоб это не было проблемой.. 

Сделать эти вектора public?

Цитата(mes @  15.11.2010,  20:49 Найти цитируемый пост)
а кажись понял.. Вам мешает слово protected ? как самый простой вариант, откройте возврат константной ссылки на него

Не понял.

Добавлено через 7 минут и 20 секунд
Цитата(mes @  15.11.2010,  20:49 Найти цитируемый пост)
раз существуют понятия, которые используются более чем в одном месте, значит должен быть соответствующий тип с нужным интерфейсом ..

Опять не понял.
Цитата(mes @  15.11.2010,  20:49 Найти цитируемый пост)
для вектора можно затайпдефить std::vector, а можно написать свою обертку, если требуется более жесткие гарантии..

И это тоже не понял)
PM MAIL   Вверх
mes
Дата 15.11.2010, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Нитонисе @  15.11.2010,  19:55 Найти цитируемый пост)

Не понял. 

вариантов реализаций куча.. зависит от требований пролета предъявляемых к хранимому вектору..
ну самый самый простой вариант, устанавливать весь вектор нагрузки за один раз, т.е интерфейс будет представлять SetVector(), GetVector()
второй вариант не хранить вектор в пролете, а отдавать ему только для расчета моментов.. 
есть и другие варианты, но для этой задачи будут избыточны..

Добавлено @ 21:05
а открыть на чтение - это   vector const& get_vector() { return m_vector; }

Добавлено @ 21:06
так как вектор нагрузки  фактически  не принадлежит спану, а устанавливается на него "голосую" за второй вариант..
smile

Это сообщение отредактировал(а) mes - 15.11.2010, 21:35


--------------------
PM MAIL WWW   Вверх
mes
Дата 16.11.2010, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



еще вопрос, нагрузка может быть смежной, т.е лежать более чем на одном спане ?
и диаграмма одного спана, как нибудь зависит от состояния другого спана ?

Добавлено через 3 минуты и 55 секунд
и диаграмма это в принципе конечная цель ?

т.е. задаете балку, сколько в ней спанов, ставите опоры прикладываете нагрузку... и получаете диаграмму и другие моменты, которые отображаете юзеру ?

Добавлено через 8 минут и 48 секунд
спаны и балка представлены в двумерном варианте статично или полиморфно ?

нагрузка нужна только для вычисления крайних моментов на опорах, или для эпюры , мах/мин, тоже  ?
или график строиться исходя из значений крайних моментов ?



--------------------
PM MAIL WWW   Вверх
Нитонисе
Дата 16.11.2010, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(mes @  16.11.2010,  09:31 Найти цитируемый пост)
еще вопрос, нагрузка может быть смежной, т.е лежать более чем на одном спане ?

Нет.

Цитата(mes @  16.11.2010,  09:31 Найти цитируемый пост)
и диаграмма одного спана, как нибудь зависит от состояния другого спана ?

Впринципе зависит, но эта зависимость определяется на стадии вычисления опорных моментов. Далее эти опорные моменты записываются в переменные М1 и М2 объектов класса Span и вычисление внутренних усилий в спане уже от смежных с ним спанов никак не зависит.

Цитата(mes @  16.11.2010,  09:31 Найти цитируемый пост)
и диаграмма это в принципе конечная цель ?

Да.

Цитата(mes @  16.11.2010,  09:31 Найти цитируемый пост)
т.е. задаете балку, сколько в ней спанов, ставите опоры прикладываете нагрузку... и получаете диаграмму и другие моменты, которые отображаете юзеру ?

Да.

Цитата(mes @  16.11.2010,  09:31 Найти цитируемый пост)
спаны и балка представлены в двумерном варианте статично или полиморфно ?

Не совсем понял.

Цитата(mes @  16.11.2010,  09:31 Найти цитируемый пост)
нагрузка нужна только для вычисления крайних моментов на опорах, или для эпюры , мах/мин, тоже  ?

Для того чтобы определить макс и мин моменты нужно тупо перебрать все значения вектора М, для этого естественно нагрузка не нужна. Но есть один нюанс - максимальный момент может попасть на координату спана, не включенную в вектор Х, то есть потерянный для расчета. Для того, чтобы выяснить, потеряли ли мы такой момент - нужно проанализировать вектор Q, тут нагрузка нам также не нужна. А вот если анализируя эпюру Q выяснили, что у нас имеется потерянный момент (экстремум диаграммы М), то нужно вычислить координату этого экстремума, вот тут уже нам понадобится нагрузка. Далее, имея координату максимального момента, выполняем функцию типа getM(int X), где Х - координата спана и получаем искомый максимальный момент. Правда найденный момент не всегда будет максимальным, но всегда будет значением экстремума функции. На картинке, которую я выкладывал, во втором пролете есть такой экстремум, но как видно - он не максимальный.
Только после этих вычислений мы приступаем к перебору значений вектора М, а также не забываем проверить и экстремальный момент для вычисления Ммах, это простой перебор и нагрузка тут не нужна.

Добавлено через 2 минуты и 8 секунд
Цитата(mes @  16.11.2010,  09:31 Найти цитируемый пост)
нагрузка нужна только для вычисления крайних моментов на опорах

Вычисление опорных моментов - это расчет более высокого уровня, там оперируем всеми спанами, всей нагрузкой.
Вычисление же пролетных моментов (вектор М) - это уже локальная задача отдельно взятого спана с его нагрузкой.
PM MAIL   Вверх
mes
Дата 16.11.2010, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Нитонисе @  16.11.2010,  09:44 Найти цитируемый пост)
Не совсем понял.

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

Добавлено @ 11:08
 не до конца понял, имея M1 и M2 (моменты на опорах)  можно построить эпюру или еще что то надо ? (ну естественно интервал и длина пролета у нас есть)

Добавлено через 7 минут и 7 секунд
Цитата(Нитонисе @  16.11.2010,  09:44 Найти цитируемый пост)
Вычисление опорных моментов - это расчет более высокого уровня, там оперируем всеми спанами, всей нагрузкой.

т.е без знаний балки нам не обойтись.. 


Это сообщение отредактировал(а) mes - 16.11.2010, 11:08


--------------------
PM MAIL WWW   Вверх
Нитонисе
Дата 16.11.2010, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(mes @  16.11.2010,  11:03 Найти цитируемый пост)
бывают разновидности пролетов или балок ? или различие только в опорах и нагрузке ?

Вообще говоря для пролета (Span) не важны и опоры. Один пролет от другого отличается длиной, вектором нагрузок и опорными моментами.
Знать о том какие у нас опоры важно на стадии обсчета всей балки при определении опорных моментов.

Цитата(mes @  16.11.2010,  11:03 Найти цитируемый пост)
 не до конца понял, имея M1 и M2 (моменты на опорах)  можно построить эпюру или еще что то надо ? (ну естественно интервал и длина пролета у нас есть)

Надо еще нагрузка.

Я вот думаю, может сечения балки тоже выделить в класс
Код

class SpanPoint
{
  protected:
    int X;
    float M;
    float Q;
};

из функционала - предоставление информации о своих данных... или это уже лишнее
PM MAIL   Вверх
mes
Дата 16.11.2010, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



и так у нас есть..
входные данные - то что может изменять пользователь :

балка состоящая из пролетов
вектор нагрузки для каждого пролета
интервал для эпюры

выходные - то что получается в результате расчетов :
моменты (крайние , мин, макс, и эпюры )

примерно так ? ничего важного не упущено ?

Добавлено через 4 минуты и 8 секунд
Цитата(Нитонисе @  16.11.2010,  10:53 Найти цитируемый пост)
из функционала - предоставление информации о своих данных... или это уже лишнее 

как класс это лишнее, а вот как структуру данных вполне..


--------------------
PM MAIL WWW   Вверх
Нитонисе
Дата 16.11.2010, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(mes @  16.11.2010,  12:08 Найти цитируемый пост)
примерно так ? ничего важного не упущено ?

Примерно так. Результаты расчетов хранятся в Diagram - это точки пролетов, где считались усилия, собственно сами эти усилия, а также координаты экстремума эпюры М (если таковой имеется) и само значение момента в точке экстремума. Ну и вычленение максимальных и минимальных значений внутренних усилий. Крайние моменты как таковые не выделяются, они войдут в эпюру М как перый элемент и последний.
PM MAIL   Вверх
mes
Дата 16.11.2010, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



ну вот не усложняйте тогда себе жизнь и отделите котлет от мух ..

вот например такой набросок интерфейса :
Код

class Beam {
   Beam (size_t span_count=1);

   LoadVector& LoadVectorRef (size_t span_id);  

   void SetSupport  (size_t sup_id,  Support); 
   Support GetSupport (size_t sup_id);
 
   Diagram CalcDiagram (size_t span_id);       
};






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

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


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

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


 




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


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

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