Russian Qt Forum

Qt => Общие вопросы => Тема начата: dsp от Июнь 19, 2011, 19:59



Название: создание UML-диаграмм?
Отправлено: dsp от Июнь 19, 2011, 19:59
Привет. Нужна консультация по созданию use case и class diagram.

Как в UML обозначаются сигналы и слоты?



Название: Re: создание UML-диаграмм?
Отправлено: Авварон от Июнь 19, 2011, 20:29
Никак, умл про них не в курсе.
Рисуй двунавправленную ассоциацию


Название: Re: создание UML-диаграмм?
Отправлено: dsp от Июнь 19, 2011, 20:42
Дополню свой вопрос

Делаю программу для создания виртуального тура.

Подробности:

1) Есть программа, выводящая изображение, взятое из базы данных (SQLite).При этом используется OpenGL для создания фигуры на которую накладывается в виде текстуры взятое изображение.
2) Пользователь может добавлять изображения в базу данных.
3) Между изображениями есть переходы (в виде стрелок). Можно переходить из одной сцены в другую.
4) Имеются контрольные точки, которые позволяют перемещаться к нужной сцене не проходя до нее последовательно весь путь.

Нужно составить  use case диаграмму, диаграмму классов.
С UML раньше не имел дело, но теперь понадобилось.

Я попробовал сделать use case диаграмму (посмотрите пожалуйста):

(http://s43.radikal.ru/i100/1106/8a/b0d63b66f812t.jpg) (http://radikal.ru/F/s43.radikal.ru/i100/1106/8a/b0d63b66f812.png.html)

Собираюсь делать диаграмму классов.

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

mainwindow.h
Код:
#include <QMainWindow>

class Scene3D;
class dbViewer;

class QListWidget;
class QToolBar;
class QAction;
class QTableWidget;

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow();

private slots:
    void aboutSlot();
    void checkPhotoSlot();
    void informationSlot();

private:
    void createToolBar();
    void createActions();
    void createStatusBar();
    void createCheckPointList();
    void createTableWidget();    

    enum { COLUMN = 2 };            

    QTableWidget *checkpointTable;  
    QAction         *exitAction;
    QAction         *aboutAction;
    QAction         *nextPhotoAction;
    QAction         *previousPhotoAction;
    QAction         *checkerAction;
    QAction         *informationAction;
    QToolBar        *toolBar;    
    Scene3D        *view3D;
    dbViewer       *viewChecker;
};

mainwindow.cpp
Код:
#include <QtGui>
#include "mainwindow.h"
#include "dbViewer.h"
#include "scene3D.h"
#include "helpBrowser.h"

MainWindow::MainWindow()
{    
    QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());  

    view3D = new Scene3D;
    viewChecker = new dbViewer;    

    setCentralWidget(view3D);
    setContextMenuPolicy(Qt::NoContextMenu);

    setGeometry(100, 100, 800, 600);

    createActions();
    createToolBar();
    createStatusBar();
    createCheckPointList();

    connect(checkpointTable, SIGNAL(cellDoubleClicked(int,int)), view3D, SLOT(getPhoto(int,int)));
}

...

Спасибо.


Название: Re: создание UML-диаграмм?
Отправлено: Denjs от Июнь 19, 2011, 20:50
Цитировать
Как в UML обозначаются сигналы и слоты?
вообще по логике вещей - связь типа "сигнал-слот" должна отображаться на диаграмме объектов (Object diagram).
Но фишка в том, что стандартные элементы диаграммы объектов для этого плохо подходят.

Вам необходимо _расширить_ нотацию. т.е. вместо того, чем рисуются объекты, нам надо рисовать что-то более нам подходящее, и отражающее суть связи. Не всякий редактор на это способен, и не все человеки признают вашу диаграмму UML-ной (многие знают про UML но редкие знают что UML _предназначен_ быть расширямым - т.е. вы под каждый нужный вам случай можете создать ваше маленькое расширение -  ваш собственныый вариант нотации.)

Я рисовал вместо объекты элементами используемыми для отображения классов, а "ассоцияциями" отражал связи. Рисовалось это в DIA элементами диаграммы классов. но вам нужно понимать, что это именно объекты, а не классы(!). Это диаграмма объектов!




Название: Re: создание UML-диаграмм?
Отправлено: dsp от Июнь 19, 2011, 20:55
Denjs, спасибо за картинку: в интернетах вообще нет картинок-примеров UML диаграмм для Qt.


Название: Re: создание UML-диаграмм?
Отправлено: Denjs от Июнь 19, 2011, 20:57
Код:
С UML раньше не имел дело, но теперь понадобилось.
"UseCase диаграмма" которую вы рисуете - это не "UsaCase"!
в первую очередь когда вы рисуете "UseCase диаграмму" - вы должны понимать что Usecase отраженный на диаграмме в виде овалов - это последовательность шагов, описанная в виде текста. Вариант взаимодействия системы и внешней сушности. Из данного описания, по шагам - вы и должны уже выделять классы и сущности, поддерживающие ваши "прецеденты использования".

Без текстового описапания - т.е. без наличия самих прецедентов - диаграмма прецедентов есть штука бессмысленная, и не нужная.

Диаграмма прецедентов - это не более чем иллюстрация, задача которой помочь человеку сориентироваться в тех 50 листах сценариев, к которым данная диаграмма прилагается.

В качестве примера - вот вам краткое описание прецедента (это бриф-дескипшин, от которого системный аналитик начнет прорабатывать более детальное описание.
Цитировать
КП.08.1 (UC.009.2) КП: получение оффлайн транзакций АРМ КО.

АРМ КО передает на сервер транзакции (по одной), которые были проведены в
режиме отсутствия связи с КП.
КП принимает операцию, сопоставляя её по идентификаторам. Если КП не находит сопоставления, то предлагается следующая схема
идентификации: У транзакции заполняются идентификатор КП или идентификатор АРМ КО, в зависимости от места создания транзакции. При загрузке транзакции на КП заполняется идентификатор КП, если он не заполнен.
Идентификатор АРМ КО может быть пустым, если транзакция создавалась на КП.

Собственно вы должны разбить все взаимодейтсвие вашей программы с внешним миром на некоторые (относительно независимые) участки, каждый из которых имеет некую конечную полезность для актора, который использует ваш прецедент.

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


PS: Это вопросы касающиеся постановки функциональных требований и проектирования системам вообще, а не "конкретно UML" или "диаграммы классов".


Название: Re: создание UML-диаграмм?
Отправлено: dsp от Июнь 19, 2011, 21:07
Из данного описания, по шагам - вы и должны уже выделять классы и сущности, поддерживающие ваши "прецеденты использования".
Программа уже написана (нужно, конечно, было делать наоборот...). Я нарисовал use case исходя из того, что пользователю(актерам) досупно и как происходит взаимодействие. Видимо, я что-то недопонял.


Название: Re: создание UML-диаграмм?
Отправлено: Denjs от Июнь 19, 2011, 21:15
Из данного описания, по шагам - вы и должны уже выделять классы и сущности, поддерживающие ваши "прецеденты использования".
Программа уже написана (нужно, конечно, было делать наоборот...). Я нарисовал use case исходя из того, что пользователю(актерам) досупно и как происходит взаимодействие. Видимо, я что-то недопонял.
Сильно сомневаюсь, что вы программировали где-то такую вещь как "сопровождение системы". Хотя если вы можете описать в виде сценария это - то сделайте.
Сопровождение системы - это не очень похоже на "функциональное требование к программе". А значит весьма маловероятно что это прецедент.
Прецедент - это инструмент описания функциональных требований. (и весьма хороший замечу вам)



Так если у вас есть написанная программа - в чем проблема нарисовать её фактическую структуру классов? тут нет совершено никакой разницы на чем у вас программа - на голом С++ или на С++\Qt.
Если конечно вы при создании программы применяли ООП ))))

Единственная раница (ну между "голым С++ или на С++\Qt") - это то, что голый С++ вы можете засунуть в анализатор и он вам сам сделает диаграмму классов ( тот же Rational Rose так может, может DIA с некоторыми плагинами), а на Qt-шных директивах метакомпилятора - егойный парсер сломается и ничего вы из попытки сделать диаграмму автоматически не получите.


Название: Re: создание UML-диаграмм?
Отправлено: dsp от Июнь 19, 2011, 21:32
Да я с отношениями пока что не разобрался.

Например, вот это что за отношение и как это рисовать?

Код:
class QToolBar;

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow();

private:
    QToolBar *toolBar;  
};



Название: Re: создание UML-диаграмм?
Отправлено: Denjs от Июнь 19, 2011, 21:40
Да я с отношениями пока что не разобрался.

Например, вот это что за отношение?
Код:
...
отношение чего к чему? тут 3 класса задействовано.

MainWindow наследуется от QMainWindow

QToolBar - не понятно сразу - он или "агрегирован" в MainWindow или (скажем так) "находится в состоянии композиции в класс MainWindow" - смотря что вы с ним делаете когда вы уничтожаете MainWindow. (см http://ru.wikipedia.org/wiki/Агрегирование_(программирование) (http://ru.wikipedia.org/wiki/Агрегирование_(программирование)) - там есть примеры прямо с кодом.)



Название: Re: создание UML-диаграмм?
Отправлено: dsp от Июнь 19, 2011, 21:46
Что касается QToolBar, то ничего особенного с ним не делаю. Создаю как обычно, добавляю кнопочки, все...

отношение класса
MainWindow и QMainWindow понятно (наследование)

class QToolBar с классом MainWindow, видимо, агрегация.. Хотя, читая вики "Если контейнер будет уничтожен, то и включенный объект тоже будет уничтожен." можно сделать вывод, что это композиция.

 Стыдно мне чего-то стало, не знаю такой ерунды х(



Название: Re: создание UML-диаграмм?
Отправлено: Авварон от Июнь 19, 2011, 22:26
Никогда не мог запомнить разницу между аггрегацией и композицией. Вообще, в случае Qt тут подход спорный, я бы различал их по указателю/по значению независимо от времени жизни объекта, тк диаграмма вообще показывает взаимоотношение классов и не то, кто за чью удаление отвечает.
Т.е. всё-таки аггрегация в случае QToolBar*


Название: Re: создание UML-диаграмм?
Отправлено: dsp от Июнь 19, 2011, 22:32
Прочитал, что агрегация - это более слабая форма композиции.

Одним из признаков агрегации - использование указателя.

Свойства композиции:
1 Части в отношении композиции существуют, пока существует целое. Целое отвечает за создание и уничтожение своих частей.
2 Часть в каждый момент может принадлежать только одному целому.
3 Только один класс может представлять целое.




Название: Re: создание UML-диаграмм?
Отправлено: dsp от Июнь 19, 2011, 22:41
если следовать логие "Если контейнер будет уничтожен, то и включенный объект тоже будет уничтожен", то в Qt одна композиция...?


Название: Re: создание UML-диаграмм?
Отправлено: Denjs от Июнь 19, 2011, 22:41
Что касается QToolBar, то ничего особенного с ним не делаю. Создаю как обычно, добавляю кнопочки, все...
...
class QToolBar с классом MainWindow, видимо, агрегация.. Хотя, читая вики "Если контейнер будет уничтожен, то и включенный объект тоже будет уничтожен." можно сделать вывод, что это композиция.
т.е. вы отображаете объект класса QToolBar на виджете класса MainWindow? значит это композиция. Потому что для того, что бы быть отображенным - QToolBar должен сделать MainWindow своим родителем. А это уже означает, что QToolBar будет автоматически уничтожен при уничтожении MainWindow. Родительский объект при уничтожении автоматически уничтожает все дочерние объекты (правило для всех QObject-наследованных классов).

Никогда не мог запомнить разницу между аггрегацией и композицией. Вообще, в случае Qt тут подход спорный, я бы различал их по указателю/по значению независимо от времени жизни объекта, тк диаграмма вообще показывает взаимоотношение классов и не то, кто за чью удаление отвечает.
это именно отношения классов, а не способ связи (по указателю/по значению).
отношения - это как сильный/слабый способ связи (?). По ссылке он как правило "слабый" (агрегация) но если "включаемый" объект не может существовать (именно логически) без "основного" - то это "композиция". Рассматриваете это правило как одно из тех, что определяет логическую целостность системы. особенно "ярко" это видно случае с записями в БД

т.е. например "факультет" не имеет смысла вне рамок какого-либо "института". ==> при уничтожении "института" - мы должны уничтожить и все "факультеты" (т.к. композиция). А вот "профессора" без "факультетов" - вполне себе существуют. При упразднении "факультета" - уничтожать записи о "профессорах" нет смысла (т.к. агрегирование).

если следовать логие "Если контейнер будет уничтожен, то и включенный объект тоже будет уничтожен", то в Qt одна композиция...?
нет, может быть и так, и так - смотря по логике работы вашей программы.

 Qt - это C++. тут может быть и то, и другое. Наличие в классе ссылки на другой класс - это ещё не означает что кто-то будет объект по ссылке уничтожать.
т.е. ещё раз посмотрите и найдите разницу между примером "Агрегация" и вторым примером "композиция" в википедии (http://ru.wikipedia.org/wiki/%D0%90%D0%B3%D1%80%D0%B5%D0%B3%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%28%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%29). И там и там - объект по ссылке. но во втором случае он уничтожается (то что это явно прописано в деструкторе - это только один из возможных примеров), а в первом - нет.


Название: Re: создание UML-диаграмм?
Отправлено: dsp от Июнь 19, 2011, 22:54
я сделал такой вывод
Цитировать
если следовать логие "Если контейнер будет уничтожен, то и включенный объект тоже будет уничтожен", то в Qt одна композиция...?
исходя из этого
Цитировать
Родительский объект при уничтожении автоматически уничтожает все дочерние объекты (правило для всех QObject-наследованных классов).

В Qt же подругому не принято?!!

А в своей программе я следовал только такой логике, значит получается, что у меня везде композиция.


Название: Re: создание UML-диаграмм?
Отправлено: dsp от Июнь 19, 2011, 23:03
вру, нифига не так, как я сказал выше.
У меня есть класс главного окна. И есть тулбар с кнопками. Открываю другое окно по кнопке, закрываю основное и окно остается открытым...
Выходит, что это агрегация, а иначе бы все окна закрылись?


Название: Re: создание UML-диаграмм?
Отправлено: Denjs от Июнь 20, 2011, 01:12
я сделал такой вывод
Цитировать
если следовать логие "Если контейнер будет уничтожен, то и включенный объект тоже будет уничтожен", то в Qt одна композиция...?
исходя из этого
Цитировать
Родительский объект при уничтожении автоматически уничтожает все дочерние объекты (правило для всех QObject-наследованных классов).
В Qt же подругому не принято?!!
Мне почему-то кажется, что вы путаете отношения "родитель-дочерний объект" определенные в системе метаданных Qt (смотри QObject * QObject::parent () const ) и отношения агрегировния/композиции.
Размещение в теле класса ссылки на какой-либо объект ещё не делает "этот" объект родительским, а тот объект - "дочерним".

Дочерним объект станет только после того как вы вызовете у него "void QObject::setParent ( QObject * parent )". И только в этом случае, родительский объект попытается его "автоматически уничтожить" при собственном уничтожении.

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

но в общем случае - объект может содержать множество разных ссылок - и часто не на дочерние объекты - и в этом случае это будет чаще всего агрегация.

PS: А виджет без родителя, кстати, попытается отобразиться как отдельное окно.

У меня есть класс главного окна. И есть тулбар с кнопками. Открываю другое окно по кнопке, закрываю основное и окно остается открытым...
Создание объектом одного класса (А) объекта другого класса (B) - по моему вообще никак не отражается на _диаграмме_классов_.
А и В - это просто разные классы. (поправьте меня?)

а Вот если класс А содержит ссылку на класс В - тогда это уже скорее всего агрегация(если при уничтожении объекта класса А созданный им объект класса В не уничтожается). Но как только вы сделаете "B::setParent(A* parent)" - это будет уже композиция.


Название: Re: создание UML-диаграмм?
Отправлено: Denjs от Июнь 20, 2011, 01:32
в сторону, относительно суровых реалий реальных программ: Важно: это Имхо(!) : на мой взгляд следует выделять (для себя как минимум) особый вид отношений между классами - "ссылка". Когда класс содержит ссылку на объект другого класса, но который логически не объединяется с этим.

т.е. с точки зрения формальной диаграммы - это могла бы быть "агрегация", но которая не означает смысловое объединение объектов друг с другом.

т.е. например это "знания объекта о своем окружении" - что бы вызывать методы других объектов.
важно: Это может быть, и скорее всего будет "не совсем правильно" с точки зрения различных архитектур,  этого стоит избегать при проектировании (держать ссылки на чужие не являющиеся нашей частью объекты) но так на практике часто поступают.

Имхо, такого рода связи можно вообще опустить на диаграмме классов, а будет достаточно просто обозначить их наличие в списке свойств класса с соответствующим типом, но ассоциацию не рисовать - потому что она "не значима" (тонковато-расплывчатое понятие... не ошибитесь - посоветуйтесь с вашим преподавателем об этом) и она просто будет загромождать диаграмму.


Название: Re: создание UML-диаграмм?
Отправлено: dsp от Июнь 20, 2011, 02:10
Спасибо, Denjs, от души - очень познавательно.

Книги книгами: читать их можно много, но человек и его советы зачастую лучше сортируют ту кашу по горшкам =), которая варится в голове.

Постараюсь учесть все ваши замечания и сделать задуманную диаграмму классов.
Что получится, покажу попозже (сегодня).


Название: Re: создание UML-диаграмм?
Отправлено: dsp от Июнь 20, 2011, 03:39
А какой UML-редактор посоветуете?
Я сейчас пользуюсь http://www.visual-paradigm.com/ Это что-то огромное и перегруженное, меня начинает напрягать.


Название: Re: создание UML-диаграмм?
Отправлено: Авварон от Июнь 20, 2011, 11:37
Кстати я так и не нашел ни одного нормального редактора умл


Название: Re: создание UML-диаграмм?
Отправлено: dimen от Июнь 20, 2011, 15:13
Кстати в visual-paradigm есть реверс с++ кода...


Название: Re: создание UML-диаграмм?
Отправлено: CL0NE от Июнь 20, 2011, 17:56
выше уже упоминали Dia.
к слову, можно сгенерить doxygen'ом XML и скормить его Dia. (для этого должен быть установлен python и в Dia Python plugin)

про примеры: http://uml-diagrams.org/
есть немного примеров


Название: Re: создание UML-диаграмм?
Отправлено: dsp от Июнь 20, 2011, 19:33
Установил Dia, сейчас буду пробовать делать.


Название: Re: создание UML-диаграмм?
Отправлено: dsp от Июнь 21, 2011, 00:02
Что-то в Dia не могу найти отношение "композиция", есть только "агрегирование" почему-то.

И еще в Dia есть интересное отношение "источник событий", "приемник событий"  - это можно использовать для обозначения связи слотов и сигналов.


Название: Re: создание UML-диаграмм?
Отправлено: Denjs от Июнь 21, 2011, 00:50
Что-то в Dia не могу найти отношение "композиция", есть только "агрегирование" почему-то.
В свойствах ассоциации можно выбрать тип включения.
Цитировать
И еще в Dia есть интересное отношение "источник событий", "приемник событий"  - это можно использовать для обозначения связи слотов и сигналов.
Это по моему не к диаграмме классов или объектов... соблюдайте требования нотации и четко понимайте какие элементы вы добавляете на диаграмму.

DIA не требует строго соблюдать ту или иную нотацию, и вы должны понимать, что легко можете нарисовать совершеннейшую "ахинею". Сверяйтесь с описаниями UML, типами диаграмм, способами расширения и решайте можете вы добавить элемент в тот тип даиграммы который вы рисуете, и если можете - то понимайте, это родной элемент данного типа диаграммы, либо расширение нотации (а если расширение - то вы должны понимать расширение/модификация какого основного элемента и как получено)


Название: Re: создание UML-диаграмм?
Отправлено: dsp от Июнь 21, 2011, 01:28
Цитировать
В свойствах ассоциации можно выбрать тип включения.
нашел

Что-то у меня куча вопросов...


Название: Re: создание UML-диаграмм?
Отправлено: dsp от Июнь 21, 2011, 02:11

Пусть есть класс главного окна

Код:
#include <QMainWindow>

class Scene3D;
class dbViewer;

class QListWidget;
class QToolBar;
class QAction;
class QTableWidget;

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow();

private slots:
    void aboutSlot();
    void checkPhotoSlot();
    void informationSlot();

private:
    void createToolBar();
    void createActions();
    void createStatusBar();
    void createCheckPointList();
    void createTableWidget();   

    enum { COLUMN = 2 };            // количество колонок на панели

    QTableWidget *checkpointTable;  // панель-таблица со списком контрольных точек
    QAction      *exitAction;
    QAction      *aboutAction;
    QAction      *nextPhotoAction;
    QAction      *previousPhotoAction;
    QAction      *checkerAction;
    QAction      *informationAction;
    QToolBar     *toolBar;   
    Scene3D      *view3D;
    dbViewer     *viewChecker;
};

Код:
#include <QtGui>
#include "mainwindow.h"
#include "dbViewer.h"
#include "scene3D.h"
#include "helpBrowser.h"

MainWindow::MainWindow()
{
    // что бы все было на русском и без закорючек
    QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());

    setWindowTitle("Teleport");

    view3D = new Scene3D;
    viewChecker = new dbViewer;   

    // выводим на форму OpenGL-элементы
    setCentralWidget(view3D);

    // запретить контекстное меню
    setContextMenuPolicy(Qt::NoContextMenu);

    setGeometry(100, 100, 800, 600);

    createActions();
    createToolBar();
    createStatusBar();
    createCheckPointList(); // создаем боковую панель с точками быстрого доступа       

    connect(checkpointTable, SIGNAL(cellDoubleClicked(int,int)), view3D, SLOT(getPhoto(int,int)));
}

void MainWindow::createActions()
{
    exitAction = new QAction(QIcon(":/Icons/exit.png"), "Exit", this);
    exitAction->setStatusTip("Close the program");
    connect(exitAction, SIGNAL(triggered()), SLOT(close()));

    aboutAction = new QAction(QIcon(":/Icons/teleport.png"), "About", this);
    aboutAction->setStatusTip("About this programm");
    connect(aboutAction, SIGNAL(triggered()), SLOT(aboutSlot()));

    checkerAction = new QAction(QIcon(":/Icons/check.png"), "CheckPhoto", this);
    checkerAction->setStatusTip("CheckPhoto...");
    connect(checkerAction, SIGNAL(triggered()), SLOT(checkPhotoSlot()));

    informationAction = new QAction(QIcon(":/Icons/information.png"), "Information", this);
    informationAction->setStatusTip("Informtion about this place...");
    connect(informationAction, SIGNAL(triggered()), SLOT(informationSlot()));
}
...
тут дальше пошла реализация методов и слотов

Этот класс имеет стандартные сигналы и переопределенные слоты.
Как показать на диаграмме это взаимодействие (или это не важно в данном случае)?

Вот исходник Dia:


Название: Re: создание UML-диаграмм?
Отправлено: Denjs от Июнь 21, 2011, 13:36

Пусть есть класс главного окна

....
Этот класс имеет стандартные сигналы и переопределенные слоты.
Как показать на диаграмме это взаимодействие (или это не важно в данном случае)?

Стандартные сигналы и переопределенные слоты - это не взаимодействие. Это скорее "отношение". Во "взаимодействии" подразумевается понятие времени. В отношении классов "наследование" понятия времени нет.

Так что именно и на какой диаграмме вы хотите показать?
взаимодействие объектов (с упором на порядок вызова) показывается на диаграмме коммуникации((Communication diagram, в UML 1.x — диаграмма кооперации/сотрудничества, collaboration diagram); взаимодейтсвие (с упором на развертку во времени) - диаграмма последовательностей (Sequence diagram)...

отношения классов - на диаграмме классов.

Сигнал-слот связи между объектами - _можно_ отобразить на _модифицированной_ диаграмме объектов (где мы делаем упор на структуру связей, а не на последовательность или порядок вызова - потому это "структурная" диаграмма или "статическая"(отображающую структуру элементов), а не "динамическая"(отображающая поведение элементов).) - я вот так и делал.

_________________________________________________________________
Кстати вот вам книжка : http://dit.isuct.ru/ivt/books/CASE/case11/content.HTM


Название: Re: создание UML-диаграмм?
Отправлено: dsp от Июнь 21, 2011, 17:07
А вы с ER-диаграммами имели дело?
Просто у меня есть база данных, там всего одна таблица. Вот я не уверен, что правильно все разместил в одной таблице...
Вот структура БД
(http://s61.radikal.ru/i172/1106/33/5272ca1e1b83t.jpg) (http://radikal.ru/F/s61.radikal.ru/i172/1106/33/5272ca1e1b83.png.html)

Состоит из следующих полей:
Id(скрыто), поле, где хранятся загруженные фотографии(скрыто), имя фотографии, размер фотографии, номер этажа, порядок следования фотографии, указатель направления_1, указатель направления_2.

Отсюда берется программой только: фотографии, и указатели направления.


Название: Re: создание UML-диаграмм?
Отправлено: Denjs от Июнь 21, 2011, 17:22
А вы с ER-диаграммами имели дело?
Просто у меня есть база данных, там всего одна таблица. Вот я не уверен, что правильно все разместил в одной таблице...
а вопросы "правильно ли я спроектировал БД" и "ER-диаграмма" - не связаны.

За проектирование реляционных БД отвечает "теория БД" (или что-то аналогичное, что вам должны бы были читать). Смотрите например топики Нормальные формы (http://ru.wikipedia.org/wiki/%D0%9D%D0%BE%D1%80%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D1%84%D0%BE%D1%80%D0%BC%D1%8B) или вот  (http://www.askit.ru/custom/db_basics/m4/04_03_1st_form.htm). (часто советуют довести примерно до третьей нормальной формы... но опять же все зависит от задач которые перед вами ставятся... )
Ну и ещё вопросы быстродейтсвия и выборки данных тоже влияют - но это уже зависит от конкретной СУБД вами используемой.

А ER-диаграмма - в принципе может отразить как любую фактическую структуру таблиц БД (в "физической модели"... за название не ручаюсь) так и и любую "структуру сущностей" (в "логической модели"). ER - диаграмме все равно правильно вы сделаи БД или нет.

Правильно или нет - решать вам и вашему преподавателю. Мы тут даже задачи не знаем какую вы преследуете создавая такую таблицу)))