2012-01-17 15 views
1

私たちは、説明の目的のために、そのような を表すことができ、オブジェクトの複雑な階層構造を持っている:シーケンス図でスーパークラスへの呼び出しを表す方法は?

class Base { 
public handle() { 
    //base handling code 
    onHandlingDone() 
} 

public onHandlingDone() { 
    //base onHandlingDone code 
} 
} 
//-------------------------------------- 
class Regular extends Base { 
public handle() { 
    super.handle(); 
    //regular handling code 
} 

public onHandlingDone() { 
    //regular onHandlingDone code 
    super.onHandlingDone() 
} 
//-------------------------------------- 
} 
class Special extends Regular { 
public handle() { 
    super.handle(); 
    //special handling code 
} 
public onHandlingDone() { 
    //special onHandlingDone code 
    super.onHandlingDone() 
} 
} 

注:これは私のデザインではないですが、私は巨大なプロジェクトのメンテナンスをやっています。 '特別な'実装がたくさんあります。リファクタリングはオプションではありません。

インターリーブされたコードがたくさんあります:メソッドはスーパークラスメソッドでもあり、他のメソッドへの呼び出しは各レベルで行われます。

ここで、何が起こっているのかを理解するのに役立つシーケンス図を描きたいと思います。

これらのコールを階層全体でどのように表現する必要がありますか?
- 階層を展開すると、図にノイズが多くなりますが、正確になります。
- 階層をマスキングすると、図が簡単になりますが、混乱します(ここで、このメッセージを送信する階層はどこですか?)

対処方法はありますかこの種の複雑なクラス階層をシーケンスdigramで?

答えて

1

厳密には、スーパー - >レギュラー - >ベースのためにスイムレーンを開く必要があります。しかし、ノイズを最小限にする1つの方法は、スーパーのステレオタイプを作成し、自己呼び出しを使用することです。

関連する問題