- ベストアンサー
UMLのクラス図はmain()も含むんですか?
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()がクラスとして含まれないなら描きようがないです。 (ちなみに上のコードは単なる例ですから、理解できなくても心配いりません) どうかよろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
「いいえ」に近いと回答しておきましょう。 そもそも、UMLはC++言語のソースの意味を 不正確に一般化できるだけです。 これはC++言語ソースからUMLらしきものは 記述できるが、UMLからソースを再現できない 点からも明らかです。いずれにしても main()にかかわらず様々な点で記述不能な場面 に遭遇します。 私見では「UMLは、不正確だが無いよりはましと思える、 ある瞬間のクラス間の関連が記述できる方法」 と考えたほうが良いと考えています。 UMLで書けなければ人間語で書きましょう。
その他の回答 (4)
- MrBan
- ベストアンサー率53% (331/615)
No. UMLには複数のダイアグラムが定義されており、 クラス図のみで全てを表現することは想定されていません。 クラス間の静的な関係を表現するのがクラス図でありmainはここでは関係ありません。 MainWindow - GraphWidget - AnalogClock というクラス間の依存関係/関連性が表現できれば十分と思います。 呼び出し順などについて言及するのであれば、私なら、 別途シーケンス図にでも「OS」外部エンティティなどからの生成/要求として表現します。 (抽象度的にmain自体の意味は薄いので「初期化で何が行われるか」が中心ですが) # そして、多分ANo1さんの意見と同じではないかと。
お礼
ありがとうございます。 実はあれから回答が無かったので自己解決してしまいました。 私自身の出した答えも"No."でした。 もう少し早く回答してほしかったですね。 あと、本末転倒であるかどうかなど この回答にはまっっったく関係ない蛇足です。 これは疑う余地は無いでしょう。
- asuncion
- ベストアンサー率33% (2127/6289)
> タイトルが読めない人ですか? 申し訳ありません。 > またまた答える能力の無い人間に質問を潰されてしまいましたか。 ほんとうに申し訳ありません。
- asuncion
- ベストアンサー率33% (2127/6289)
> クラス間の関連性はどう示せばよいのでしょうか? というお問い合わせに対して「はい」か「いいえ」で 答えることはひじょうに困難です。
- koko_u_
- ベストアンサー率18% (459/2509)
別にクラス図しか設計書を書いてはイカンというわけではありません。 本末転倒していませんか?
補足
クラス図で設計書を書いてはイカンというわけでもないでしょう。 まずは投稿された質問に「はい」か「いいえ」でお答えください。 よろしくお願いします。
お礼
ありがとうございます。 私自身も「いいえ」という答えを出したのですが いまいち「なぜ?」の部分が引っ掛かっていました。しかし、 「C++言語ソースからUMLらしきものは記述できるが、 UMLからソースを再現できない」 を読んで納得しました。 肝心のUMLの方はmain()なしで 思ったよりもうまくまとめることが出来ました。