7

ビルド構成に従ってコンパイル中にインスタンス化されるオブジェクトがあります。周囲のソフトウェアが考慮する限り、オブジェクトは同じインターフェイスを公開します。static polymorphism通常の動的ポリモーフィズムとは対照的に、インスタンス化の決定がコンパイル中に行われるという事実 (つまり ) をモデル化したいと思います。

で静的ポリモーフィズムを表現する方法はありUML class diagramますか?

これが多かれ少なかれ私が必要とするものです:

ここに画像の説明を入力

明らかに、上記の型定義の 1 つだけがコンパイル時にインスタンス化されます。

4

5 に答える 5

3

UML 表現は、静的ポリモーフィズムと動的ポリモーフィズムで同じになると思います。UML は、クラスが実行時にどのように対話するかに関するものです。テンプレートを記述するための UML 形式があるとは思いませんが、間違っている可能性があります。

于 2013-05-23T07:57:51.607 に答える
2

あなたの図は大丈夫だと思います。あなたが説明していることは、コンパイルプロセスを説明するシーケンス図として最もよく説明されているようです。(工場のシーケンス図を描く方法のようなものだと思います)

あなたが正しく指摘しているように、実行時の相互作用はインターフェースの背後にある未知の具体的なもので発生するため、これらのシーケンス図または相互作用図の具体的なクラスについて実際に気にする必要はありません。そこは全く関係ありません。

これが大量に発生する場合は、どのような状況でどのような具体的な実装が発生するかを示すのに役立つ配置図も良い考えです。

もちろん、インターフェースを実装するクラスを文書化したいと思うでしょう。それは、あなたが描いたとおりの通常のクラス図です。

于 2013-05-24T09:36:39.407 に答える
1

@ ChiragDesai と @ user2004268 の回答とリンクされた質問 (静的ポリモーフィズムの定義と実装) を組み合わせる:

  1. ポリモーフィズム型は実装の詳細であるため、設計図では積極的な役割を果たしません。
  2. 実装の詳細は UML ダイアグラムに表示できますが、補完的で非公式な役割を果たします。意図を明確にするためにステレオタイプとメモを使用できます。
于 2013-05-24T08:54:04.683 に答える
0

Singletoneg という名前の汎用ブール値パラメーターを持つステレオタイプを持つ空のクラス ユーティリティを使用します#ifdef(YOUR_FLAG)。そのtrue特殊化は、パブリックまたは実装の可視性を持つ静的メンバーとしてインスタンスを持ちます。

編集済み(コメントへの返信)

UML ツールでこれを描画します。

疑似 C++ コード:

class Foo; 

template <
   Boolean #ifdef(WHATEVER)
> struct Bar {};

template <> 
struct Bar<true> {
  public: 
    static Foo the_foo;
};

utilitySingletonステレオタイプを追加します(ただし、そこからコードを生成しようとしないでください;))

于 2013-05-24T07:02:57.860 に答える