ここで探しているのはシーケンス図だと思います。これらにより、さまざまなモジュールが矢印を使用して相互に呼び出す順序を視覚化できます。
構築は簡単です:
- 開始クラスを下に点線で描きます。
- 呼び出しトレースで次のクラス/メソッドをその下に点線で描きます
- 最後に描いた矢印の下に垂直に配置された矢印で線を接続します
- トレース内のすべての呼び出しに対して手順2〜3を繰り返します。
例
シーケンス図を作成する次のコードがあると仮定します。
def long_division(quotient, divisor):
solution = ""
remainder = quotient
working = ""
while len(remainder) > 0:
working += remainder[0]
remainder = remainder[1:]
multiplier = find_largest_fit(working, divisor)
solution += multiplier
working = calculate_remainder(working, multiplier, divisor)
print solution
def calculate_remainder(working, multiplier, divisor):
cur_len = len(working)
int_rem = int(working) - (int(multiplier) * int (divisor))
return "%*d" % (cur_len, int_rem)
def find_largest_fit(quotient, divisor):
if int(divisor) == 0:
return "0"
i = 0
while i <= 10:
if (int(divisor) * i) > int(quotient):
return str(i - 1)
else:
i += 1
if __name__ == "__main__":
long_division("645", "5")
最初に描画するのはmain
、メソッドに接続するエントリポイント()long_division
です。これによりlong_divisionにボックスが作成され、メソッド呼び出しのスコープが示されることに注意してください。この単純な例では、実行されるのはこれだけであるため、ボックスはシーケンス図の全体の高さになります。
次にfind_largest_fit
、作業番号に収まる最大の倍数を見つけてそれを返します。関数呼び出しのスコープを示すためlong_division
にfind_largest_fit
、別のボックスでからまで線を引きます。乗数が返されたときにボックスがどのように終了するかに注意してください。これがその関数スコープの終わりです!
数回繰り返すと、グラフは次のようになります。
ノート
渡された変数名を使用して呼び出しにラベルを付けるか、特定の1つのケースのみを文書化する場合はそれらの値にラベルを付けるかを選択できます。自身を呼び出す関数で再帰を表示することもできます。
さらに、ここにユーザーを表示し、プロンプトを表示して、システムへの入力を簡単に表示できます。これはかなり柔軟なシステムであり、かなり便利だと思います!