Поиск:

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


Опытный
**


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

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



Цитата(mes @  15.11.2010,  14:54 Найти цитируемый пост)
ну так разобрались ? или еще есть вопросы ?

С чем разобрались? Ни с чем не разобрались. Собственно я так классы и спроектировал. Мой вопрос втом - насколько оправдано выделять класс Diagram отдельной сущностью, уж коль скоро имеется масса неудобств при работе с ним.
PM MAIL   Вверх
mes
Дата 15.11.2010, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Нитонисе @  15.11.2010,  14:04 Найти цитируемый пост)
С чем разобрались?

с порядком зависимости сущностей..
В первом примере кода диаграмма является составляющей пролета. 
плюс расчет эпюры производится спаном, что не соответствует дальнейшим описаниям..

Добавлено через 1 минуту и 13 секунд
Цитата(Нитонисе @  15.11.2010,  14:04 Найти цитируемый пост)
Мой вопрос втом - насколько оправдано выделять класс Diagram отдельной сущностью, уж коль скоро имеется масса неудобств при работе с ним. 

Смысл есть.. так как эпюры не являются частью балки или спана..

Добавлено через 7 минут и 11 секунд
Цитата(Нитонисе @  15.11.2010,  14:04 Найти цитируемый пост)
уж коль скоро имеется масса неудобств при работе с ним. 

а вот где Вы увидели неудобства ?

приведите последнее представление вашего  кода 
smile

Добавлено через 8 минут и 1 секунду
то что важно для : span beam и diagramm 



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


Опытный
**


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

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



Цитата(mes @  15.11.2010,  15:17 Найти цитируемый пост)
приведите последнее представление вашего  кода 

Предполагаю такую структуру
Код

class Beam
{
  protected:
    std::vector<Span*> spans;    
};

class Span
{
  public:
    setLoad(std::vector<Load*> *l);
    setInterval(int i);
    createXSet();    
    calcM();
    calcQ();

  protected:
    int length;
    float M1;
    float M2;
    std::vector<Load*> loads;
    int Interval;
    Diagram *diagram;
};

class Diagram
{
  protected:
    std::vector<int> X;
    std::vector<float> M;
    std::vector<float> Q;
};


Цитата(mes @  15.11.2010,  15:17 Найти цитируемый пост)
В первом примере кода диаграмма является составляющей пролета. 

Не то что бы частью, а сопутствующим объектом имеющим четкую ассоциацию с конкретным объектом класса Span.

Цитата(mes @  15.11.2010,  15:17 Найти цитируемый пост)
а вот где Вы увидели неудобства ?

Неудобства в том, что при работе функции greateXSet (создание набора сечений) на первом этапе данные будут заноситься во временный ыектор, а потом весь этот вектор будет копироваться в атрибут Х Diagram. Напрямую работать с вектором Х неудобно, так как потребует создания функций типа setX(int index, int value). Примерно такая же функция для считывания данных из векторов. Если представить что в программе будет 10 пролетов и у каждого пролета 100 сечений, то такие усложненные схемы доступа мне видятся неоптимальными, ведь будь эти векторы X,M,Q данными класса Span, то доступ бы был намного проще.
PM MAIL   Вверх
xvr
Дата 15.11.2010, 16:04 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



У меня дежавю? Или мы наблюдаем 2й сезон мыльной оперы?
Первый назывался 'Изобретение Паттерна Multimethod в 108 сообщениях'
Второй видимо будет называться 'Изобретение Паттерна Visitor в 47 (пока) сообщениях'

2 ТС: Почитайте какую нибудь книжку по Паттернам Проектирования и заканчивайте вынос мозга участникам конфы. Все, что вам тут объясняют описано в этих Паттернах гораздо более полно и развернуто.

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


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


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

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



Цитата(Нитонисе @  15.11.2010,  14:44 Найти цитируемый пост)
  calcM();
    calcQ();

Цитата(Нитонисе @  15.11.2010,  14:44 Найти цитируемый пост)
   int Interval;

Цитата(Нитонисе @  15.11.2010,  14:44 Найти цитируемый пост)
    Diagram *diagram;

ну так это ж не члены пролета..

Добавлено через 11 минут и 22 секунды
Цитата(Нитонисе @  15.11.2010,  14:44 Найти цитируемый пост)
Неудобства в том, что при работе функции greateXSet (создание набора сечений) на первом этапе данные будут заноситься во временный ыектор, а потом весь этот вектор будет копироваться в атрибут Х Diagram. 

ну эти неудобства вы сами себе придумали smile

Добавлено через 11 минут и 46 секунд
а можно и удобно сделать smile


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


Опытный
**


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

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



Цитата(xvr @  15.11.2010,  16:04 Найти цитируемый пост)
2 ТС: Почитайте какую нибудь книжку по Паттернам Проектирования и заканчивайте вынос мозга участникам конфы. Все, что вам тут объясняют описано в этих Паттернах гораздо более полно и развернуто.

Что именно там описано? Тут вопрос выделения классов и установки между ними отношений. При чем тут паттерны?

Цитата(mes @  15.11.2010,  16:05 Найти цитируемый пост)
ну так это ж не члены пролета..

А куда их деть?))

Цитата(mes @  15.11.2010,  16:05 Найти цитируемый пост)
ну эти неудобства вы сами себе придумали можно и удобно сделать
Ну например? Как снаружи добраться к пятому элементу вектора, объявленного protected?

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


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


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

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



Цитата(Нитонисе @  15.11.2010,  15:23 Найти цитируемый пост)
Тут вопрос выделения классов и установки между ними отношений. При чем тут паттерны?

Это тоже относится к паттернам (архитектурным)

Добавлено через 1 минуту и 7 секунд
Цитата(Нитонисе @  15.11.2010,  15:23 Найти цитируемый пост)
Ну например? Как снаружи добраться к пятому элементу вектора, объявленного protected?

все зависит от интерфейса smile

Добавлено через 3 минуты и 38 секунд
Цитата(Нитонисе @  15.11.2010,  10:41 Найти цитируемый пост)
P.S. Что у вас за манера постоянно править свои посты по всей теме? Думаете так удобнее общаться?

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

Добавлено через 5 минут и 6 секунд
Цитата(Нитонисе @  15.11.2010,  15:23 Найти цитируемый пост)
А куда их деть?))

туда где им место.. в вашем случае в диаграмме... (если конечно ж они вобще нужны в таком виде )




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


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Цитата(Нитонисе @  15.11.2010,  16:23 Найти цитируемый пост)
Что именно там описано? Тут вопрос выделения классов и установки между ними отношений. 
Блин. 'Пастернака не читал, но осуждаю'  smile 
Цитата

При чем тут паттерны?
Именно это - вопрос выделения классов и установки между ними отношений ТАМ И ОПИСАННО!

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


Опытный
**


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

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



Цитата(mes @  15.11.2010,  16:24 Найти цитируемый пост)
Это тоже относится к паттернам (архитектурным)

Паттерны - это некие наработки, которые можно применять в других проектах, насколько я понял. В моем случае эта задача вторична на данном этапе. Первично - организация удобных связей медлу классами.
Цитата(mes @  15.11.2010,  16:24 Найти цитируемый пост)
все зависит от интерфейса

вот интерфейс класса Diagram
Код

class Diagram
{
  public^
    int getX(int index);
    float getM(int index);
    float getQ(int index);
    void setX(int index, int val);
    void setM(int index, float val);
    void setQ(int index, float val);
};


Цитата(mes @  15.11.2010,  16:24 Найти цитируемый пост)
я правлю от опечаток, и двусмысленностей.. но не меняю смысла

Только я не удивлюсь, если где-нибудь на второй странице вы добавили к своему посту еще какой-то вопрос, который для меня окажется незамеченным по понятным причинам)

Добавлено через 1 минуту и 3 секунды
Цитата(xvr @  15.11.2010,  16:32 Найти цитируемый пост)
Именно это - вопрос выделения классов и установки между ними отношений ТАМ И ОПИСАННО!

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


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


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

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



Код


class Span
{
  public:
    setLoad(std::vector<Load*> *l);
    setLength (size_t l);

    float GetQ (size_t x);
    float GetM (size_t x);
 private:
... 
};

class Diagram 
{
     Diagram (Span const&s, size_t interval)
    {
        for (size_t i =0; i <s.Length();i+= interval)
        {
            vQ.push_back (s.GetQ(i));
            vM.push_back (s.GetM(i));
       }

     }
     void Draw (); 

     vector<float>  vQ;
     vector<float>  vM;
};
... 
Span span (10, DotLoat(45));
Diagramm d (span, 10);
d.Draw(win->getDC());



Добавлено через 2 минуты и 58 секунд

Цитата(Нитонисе @  15.11.2010,  15:34 Найти цитируемый пост)
Только я не удивлюсь, если где-нибудь на второй странице вы добавили к своему посту еще какой-то вопрос, который для меня окажется незамеченным по понятным причинам)

вопросы добавляются к посту автоматически.. в течении какого то времени, если еще никто не написал.. а не после редактирования.. редактированием я лишь иногда убираю кучу ненужных слов типо "добавлено"..


Добавлено через 3 минуты и 43 секунды
Цитата(Нитонисе @  15.11.2010,  15:34 Найти цитируемый пост)
   void setX(int index, int val);

что делает setX ?

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


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


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Цитата(Нитонисе @  15.11.2010,  16:34 Найти цитируемый пост)
О, если так, то это то что нужно) посоветуйте автора. 
Да уж советовал, и ссылки давал. Все впустую  smile 

Вот, классика:
Цитата

Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес Приемы объектно-ориентированного проектирования. Паттерны проектирования = Design Patterns: Elements of Reusable Object-Oriented Software. — СПб: «Питер», 2007. — С. 366. — ISBN 978-5-469-01136-1 (также ISBN 5-272-00355-1)


Еще
WiKi

http://c2.com/cgi/wiki?CategoryPattern

Очень неплохая статья


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


Опытный
**


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

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



Цитата(mes @  15.11.2010,  16:37 Найти цитируемый пост)
что делает setX ?

он делает X[index] = val

Цитата(xvr @  15.11.2010,  17:18 Найти цитируемый пост)
Да уж советовал, и ссылки давал. Все впустую

Вы на мультиметоды давали ссылки. тема интересная, но я ее пока не потяну))

Цитата(xvr @  15.11.2010,  17:18 Найти цитируемый пост)
Вот, классика:

А вот это скачал, буду образовываться)
PM MAIL   Вверх
mes
Дата 15.11.2010, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Нитонисе @  15.11.2010,  16:31 Найти цитируемый пост)
он делает X[index] = val

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



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


Опытный
**


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

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



Цитата(mes @  15.11.2010,  17:45 Найти цитируемый пост)
это вопрос был не о реализации, а о смысле... для чего нужно это действие ?

Для того чтобы забить значение в вектор Х. Вектор Х же нужен для определения сечений, где будут определяться M,Q.
PM MAIL   Вверх
mes
Дата 15.11.2010, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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




Цитата(Нитонисе @  15.11.2010,  16:53 Найти цитируемый пост)
Для того чтобы забить значение в вектор Х. Вектор Х же нужен для определения сечений, где будут определяться M,Q. 

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



--------------------
PM MAIL WWW   Вверх
Страницы: (6) Все « Первая ... 2 3 [4] 5 6 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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