課題A1 (接近過程抽出)


接近過程抽出

Fig クラスはグラフィックエディタ上の図形を表すGEFの内部のクラスです.
また, FigClass クラスはクラス図上に配置された「クラス」を表す ArgoUML のクラスで, Fig クラスの子孫クラスにあたります.

課題A1終了直後は下図のような状態になっているはずです.
右上にあるパースペクティブを右クリックし, いったん「トレースデバッガ(順方向)」のパースペクティブを閉じてください.

ここで, 「トレースデバッガ(逆方向)」のパースペクティブを開いてください.

その状態のままで, ブレークポイントビュー上にある「ブレークポイントを取り入れる」をクリックしてください.
ブレークポイントを取り入れたら, デバッグ実行してください.

現在は, ActionRemoveFromDiagram クラスの actionPerformed(ActionEvent) メソッドの83行目にいます.
まずは, ActionRemoveFromDiagram クラスのインスタンスに FigClass クラスのインスタンス (id = 1675174935) が接近する過程を抽出して見ていきます.
ここで, ステップオーバーを6回押して, 89行目にまで進んでください.
そのあと, ステップネクストを1回押してください.

現在は, ActionRemoveFromDiagram クラスの actionPerformed(ActionEvent) メソッドの89行目にいます.
ここで, 変数ビュー上の「呼び出し前」を開いて, レシーバを右クリックしてください.
右クリックすると, ポップアップメニューが出てくるので, 「オブジェクトの接近過程抽出」をクリックしてください.

実際に「オブジェクトの接近過程抽出」を実行すると, 下図のような状態になります.

「オブジェクトの接近過程」ビュー上の「開始時点」をクリックしてください.

「オブジェクトの接近過程」ビュー上の「参照先側001」から「参照先側018」までを順番にクリックしていってください.

「オブジェクトの接近過程」ビュー上の「参照時点」をクリックしていってください.

ここまでで, ActionRemoveFromDiagram クラスのインスタンスに FigClass クラスのインスタンス (id = 1675174935) が接近する過程を見てきました.
抽出した結果を見ると, SelectionManager クラスのインスタンス (id = 4310438) のローカル変数 figs が参照している Vector に追加されていた FigClass クラスのインスタンスを
取得してきていることがわかりましたが, その FigClass クラスのインスタンスがどうやって追加されたのかについては, この抽出範囲だけではわかりません.
そこで, ここからは, そのローカル変数 figs に FigClass クラスのインスタンス (id = 1675174935) が追加されるまでの過程を見ていきます.
まずは, 「オブジェクトの接近過程抽出」ビュー上の「参照先側012」をクリックしてください.

先ほどの操作によって, 現在は SelectionManager クラスの getFigs() メソッドの360行目にいます.
ここで, まずはステップオーバーを2回押して363行目にまで進んでください.
363行目にまで進んだら, 次はステップネクストを4回押してください.

ここで, 変数ビュー上の「呼び出し前」を開いて, 引数を右クリックしてください.
右クリックすると, ポップアップメニューが出てくるので, 上の方の「オブジェクトの接近過程抽出」をクリックしてください.

実際に「オブジェクトの接近過程抽出」を実行すると, 下図のような状態になります.

「オブジェクトの接近過程」ビュー上の「開始時点」をクリックしてください.

「オブジェクトの接近過程」ビュー上の「参照先側001」から「参照先側009」までを順番にクリックしていってください.

「オブジェクトの接近過程」ビュー上の「参照元側001」から「参照元側002」までを順番にクリックしていってください.

「オブジェクトの接近過程」ビュー上の「参照時点」をクリックしていってください.

ここまでで, SelectionManager クラスのインスタンス (id = 4310438) のローカル変数 figs が参照している Vector に
FigClass クラスのインスタンス (id = 1675174935) が追加されるまでの過程を見てきました.
ここで, 課題A1の接近過程抽出は終了です.
「オブジェクトの接近過程」ビューを全て閉じ, そのあとデバッグ実行を終了してください.
デバッグ実行を終了したら, この「トレースデバッガ(逆方向)」のパースペクティブを閉じてください.