質問

Mapメンバーを持つクラスがある場合、Map自体を表す別のクラス/インターフェイスオブジェクトを描画したくないのですが、マップをネイティブタイプであるかのように扱いたい複雑なオブジェクトよりも。

次の例を検討してください

public class IndexManagerImpl implements IndexManager {
    /* ... */

    private static Map<Searcher, Integer> searcherCache;
}

IndexManagerImpl が(間接的にではあるが) Searcher インスタンスへの参照を保持しているという事実を強調したいと思います。 表現に searcherCache の型パラメーターも表示できると便利です。

役に立ちましたか?

解決

マーティンとの意見の相違... MAPは、コンピューター卒業コースで学ぶ基本的なデータ構造です!ほとんどの現代言語に存在し、アナリストにとって重要な設計リソースです。 Mapは状況によっては関連付けとして描画される場合がありますが、何らかの拡張(ステレオタイプ)が必要になるか、テンプレートクラスを定義できます。私はテンプレートのアプローチが好きではありません-それは主要なプレーヤー間の関連を隠します。 最後のリソースはAssociationClassです。これは、属性とnxnの関係を定義するために使用される特別なUMLクラスです。フィールドは、indexManagerに関連するサーチャーのカウンターの一種です。 また、コードでは関係の反対側を見ることができないことを忘れないでください。一方、UMLは両側、ナビゲーションの問題などを表示するように設計されています。

他のヒント

実際には、コレクションオブジェクトは、2つのクラス間の1対多の関連付けを示します。 したがって、Searcherクラスと1対多の関連付けを持つIndexManagerImplクラスをダイアグラム上に作成する必要があります

マップはコレクションとは異なるプロパティを持つため、コレクションとは見なされません。実際には、マップは特定の(マッピング)関係を持つ複数のコレクションです。私の見解では、マップを表すマップは要件に大きく依存しており、要件に基づいていくつかのマップUML表現がある場合があります。 したがって、単純なフォームマップでは、キーセット要素に対する1対多の関連付けと、キーセット要素から値要素への1対1の関連付けを表すことができます。 キー要素と値要素は、実際には元の要素とは関連付けられていないため、元の要素のラッパーです。

これが役立つことを願っています...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top