プロが教える店舗&オフィスのセキュリティ対策術

C++でのプログラミングしています。

UMLのクラス図を描く場合、main()も「クラスとして」含むんですか?
main()の中ではオブジェクトを順番に作って実行させているだけです。
main()自体はクラスを持っていません。

自分の考えとしては、main()は「クラスではない」ので
含めるのはおかしいとは思っているのですが
含めない場合はどのように関連付けていけばいいのか分かりません。
例えば、main()の中に:

int main(int argc, char **argv)
{
MainWindow mWindow;
GraphWidget widget(&mWindow);

AnalogClock clock;
clock.setGraphWidget(&widget);

mWindow.setCentralWidget(&widget);
mWindow.show();

return app.exec();
}
というのがあったとしたら、
クラス間の関連性はどう示せばよいのでしょうか?
特にクラスAnalogClockはmain()でしか呼ばれていませんので
main()がクラスとして含まれないなら描きようがないです。
(ちなみに上のコードは単なる例ですから、理解できなくても心配いりません)
どうかよろしくお願いします。

A 回答 (5件)

「いいえ」に近いと回答しておきましょう。



そもそも、UMLはC++言語のソースの意味を
不正確に一般化できるだけです。
これはC++言語ソースからUMLらしきものは
記述できるが、UMLからソースを再現できない
点からも明らかです。いずれにしても
main()にかかわらず様々な点で記述不能な場面
に遭遇します。
私見では「UMLは、不正確だが無いよりはましと思える、
ある瞬間のクラス間の関連が記述できる方法」
と考えたほうが良いと考えています。
UMLで書けなければ人間語で書きましょう。
    • good
    • 0
この回答へのお礼

ありがとうございます。
私自身も「いいえ」という答えを出したのですが
いまいち「なぜ?」の部分が引っ掛かっていました。しかし、

「C++言語ソースからUMLらしきものは記述できるが、
 UMLからソースを再現できない」

を読んで納得しました。
肝心のUMLの方はmain()なしで
思ったよりもうまくまとめることが出来ました。

お礼日時:2008/01/28 12:54

No.



UMLには複数のダイアグラムが定義されており、
クラス図のみで全てを表現することは想定されていません。

クラス間の静的な関係を表現するのがクラス図でありmainはここでは関係ありません。
 MainWindow - GraphWidget - AnalogClock
というクラス間の依存関係/関連性が表現できれば十分と思います。

呼び出し順などについて言及するのであれば、私なら、
別途シーケンス図にでも「OS」外部エンティティなどからの生成/要求として表現します。
(抽象度的にmain自体の意味は薄いので「初期化で何が行われるか」が中心ですが)

# そして、多分ANo1さんの意見と同じではないかと。
    • good
    • 0
この回答へのお礼

ありがとうございます。
実はあれから回答が無かったので自己解決してしまいました。
私自身の出した答えも"No."でした。
もう少し早く回答してほしかったですね。

あと、本末転倒であるかどうかなど
この回答にはまっっったく関係ない蛇足です。
これは疑う余地は無いでしょう。

お礼日時:2008/01/28 12:47

> タイトルが読めない人ですか?



申し訳ありません。

> またまた答える能力の無い人間に質問を潰されてしまいましたか。

ほんとうに申し訳ありません。
    • good
    • 2

> クラス間の関連性はどう示せばよいのでしょうか?



というお問い合わせに対して「はい」か「いいえ」で
答えることはひじょうに困難です。

この回答への補足

 

補足日時:2008/01/13 14:03
    • good
    • 0
この回答へのお礼

 

お礼日時:2008/01/13 15:45

別にクラス図しか設計書を書いてはイカンというわけではありません。


本末転倒していませんか?

この回答への補足

クラス図で設計書を書いてはイカンというわけでもないでしょう。

まずは投稿された質問に「はい」か「いいえ」でお答えください。
よろしくお願いします。

補足日時:2008/01/13 13:10
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!