2016-12-09 7 views
1

forループをクラス図として表現する方法を知りました。 基本的にforループはSet(少なくとも)1つのバインドされた変数/イテレータとボディ(cf. picture)で構成されます。クラス図をforループとして

封じ込めルールは簡単ですが、変数iとセットとの間の接続を表現する方法と、変数iと本文の間の可能な接続はどうすればよいでしょうか?

すなわち:

for(int i = 0; i< set.length; i++){ 
// some statements referencing the iterator 
// i.e. set[i] = i; 
} 

for-loop class diagram

また、私は(例えばアクティビティ図のような)ループのために説明するUMLにおけるより良い図があることを知っているが、イム興味がどのように反復間の依存関係反復子はクラス図として表現することができます。

+0

これは完全に壊れています。私は戻っていくつかの基本的な読書をするべきだと思います。それとも、私はちょうどあなたが何をしているのか分からない。 –

答えて

1

使用する正しい図はありますか?

class diagramは、クラス/タイプ間の構造的関係を表すものとする。また、制約を表すこともできます。

しかし、クラス図ではコントロールフロー(例:条件文、ループなど)を表すことはできません。これらの場合、activityまたはsequenceの図をcombined fragmentsと考えるべきです。

しかし、あなたの質問に興味深い質問があります:イテレータと反復コンテナの依存関係を表現する方法は?関係を表すクラス図で

イテレータ

一つの方法は、容器にnavigable associationを使用iterator design pattern、見て確かです。

しかし、反復子の実装のすべてがコンテナに戻ることはできません(たとえば、リンクされたリストのイテレータは、リンクされたリスト全体を知りませんが、現在の要素のみ)。この場合、イテレータからコンテナまでsimple dependency(矢印付きの点線)を使用します。意味は<<use>>ステレオタイプで明示的にすることができます。反復子は反復されたコンテナの構造に何らかの形で依存します。

必要に応じて、コンテナと反復子にコンテナ/オブジェクトの種類を示すために、UML templateを使用することもできます。

forループをcalssに抽象化しますか? ダイアグラムの試行では、command design patternを使用してコンテナ(コンテナが受信者になります)で実行される操作を抽象化することができます。この場合、本体は別のクラスではなく、具体的な派生コマンドでオーバーライドされるメソッドになります。

しかし、あなたの意図は私には完全にはっきりしておらず、考慮すべきより適切なデザインパターンがあるかもしれません。

関連する問題