diff --git a/courseA/ArgoUML_Forward/problem1/ArgoUML1_Forward.html b/courseA/ArgoUML_Forward/problem1/ArgoUML1_Forward.html index 623a7c7..0f9bb78 100644 --- a/courseA/ArgoUML_Forward/problem1/ArgoUML1_Forward.html +++ b/courseA/ArgoUML_Forward/problem1/ArgoUML1_Forward.html @@ -20,37 +20,37 @@






















現在は, 呼び出し元である FigNode クラスの removeFromDiagram() メソッドを見ています.
ここで, 変数ビューを見ると, このメソッドも同一の FigClass クラスのインスタンス (id = 1675174935) に対して呼び出されていることがわかります.
これを確認したら, 呼び出しスタック上でさらに1つ呼び出し元をクリックしてください.
-


現在は, 呼び出し元である FigNodeModelElement クラスの removeFromDiagramImpl() メソッドを見ています.
ここで, 変数ビューを見ると, このメソッドも先ほどと同様に FigClass クラスのインスタンス (id = 1675174935) によって呼び出されていることがわかります.
これを確認したら, 呼び出しスタック上でさらに1つ呼び出し元をクリックしてください.
-


現在は, 呼び出し元である FigNodeModelElement クラスの removeFromDiagram() メソッドを見ています.
@@ -90,7 +90,7 @@
ここでは, ローカル変数 delegate の値がどこから来たのかを見ていきます.
FigNodeModelElement クラスの removeFromDiagram() メソッドの1965行目にブレークポイントを入れ,
ブレークポイントビュー上の「ブレークポイントを取り入れる」ボタンを押してください.
-


ここで, いったんデバッグ実行を終了してから, 再びデバッグ実行してください.
@@ -103,29 +103,29 @@
先ほどの確認が終わったら, いったんデバッグ実行を終了して, 再びデバッグ実行してください.
FigClassModelElement クラスの removeFromDiagram() メソッドの1965行目に止まります.
ここでは, ステップインを2回押して getRemoveDelegate() メソッドの中に入ってください.
-


FigNodeModelElement クラスの getRemoveDelegate() メソッドに入りました.
ここで, ソースコードを見ると, このメソッドでは return this で自分自身が戻り値として返されていることがわかります.
これを確認したら, 呼び出しスタック上で1つ呼び出し元をクリックしてください.
-


現在は, 呼び出し元である FigNodeModelElement クラスの removeFromDiagram() メソッドを見ています.
ここで, 呼び出しスタック上でさらに1つ呼び出し元をクリックしてください.
-


現在は, 呼び出し元である ActionRemoveFromDiagram() クラスの actionPerformed(ActionEvent) メソッドの89行目を見ています.
ここで, 変数ビュー上で 「呼び出し前」を開いて, レシーバのIDを確認してください.
-


ソースコードを見ると, ローカル変数 f の値は, 86行目の拡張for文で ローカル変数 figs から取得した要素を代入していることが確認できます.
ここからは, ローカル変数 figs の値がどこから来たのかを見ていきます.
すぐ上にある85行目にブレークポイントを入れてから, ブレークポイントビュー上の「ブレークポイントを取り入れる」ボタンを押してください.
-


いったんデバッグ実行を終了してから, 再びデバッグ実行してください.
@@ -140,57 +140,57 @@
ソースコードを見ると, ここでは ローカル変数 ce で参照されているインスタンスに対して getSelectionManager() メソッドが呼び出され,
その戻り値に対して getFigs() メソッドが呼び出され, getFigs() メソッドの戻り値として返されたリストが, ローカル変数 figs に代入されていることが確認できます.
ここで, まずはステップインを1回押して Editor クラスの getSelectionManager() メソッドの中に入ってください.
-


Editor クラスの getSelectionManager() メソッドに入りました.
ここで, 変数ビュー上の this を開くと, Editor クラスのインスタンス (id = 371019845) が
フィールド _selectionManager として SelectionManager クラスのインスタンス (id = 4310438) を保持していることがわかります.
これを確認したら, ステップリターンを1回押して呼び出し元に戻ってください.
-


呼び出し元である ActionRemoveFromDiagram クラスの actionPerformed(ActionEvent) メソッドに戻ってきました.
ここでは, ステップイン1回押して, getSelectionManager クラスの getFigs() メソッドの中に入ってください.
-


SelectionManager クラスの getFigs() メソッドに入りました.
ソースコードを見ると, 360行目ではローカル変数 figs を生成し, それが366行目では return figs で戻り値として返されていることが確認できます.
ここで, ステップオーバーを2回押して363行目に進んでください.
-


現在は SelectionManager クラスの getFigs() メソッドの363行目にいます.
ソースコードを見ると, フィールド selections から get() メソッドで取り出した要素に対して,
さらに getContent() メソッドを呼び出し, その戻り値をローカル変数 figs に追加していることが確認できます.
-


ここで, まずはステップインを3回押してください.
すると, selections に対する get() メソッドの実行が終了し, その戻り値に対して getContent() メソッドを呼び出す直前の時点にまで現在の実行時点が進みます.
ここで, ステップインを1回押して, SelectionClass クラスの getContent() メソッドの中に入ってください.
-


SelectionClass クラスの getContent() メソッドの中に入りました.
ここで, 変数ビュー上の this を開くと SelectionClass クラスのインスタンス (id = 1672744985) が
フィールド content として FigClass クラスのインスタンス (id = 1675174935) を保持していることがわかります.
これを確認したら, ステップリターンを1回押して呼び出し元に戻ってください.
-


SelectionManager クラスの getFigs() メソッドに戻ってきました.
ここで, 変数ビュー上の「呼び出し前」を開いて引数のIDを確認してください.
すると, 先ほど取得してきた FigClass クラスのインスタンス (id = 1675174935) をローカル変数 figs に追加することがわかります.
-


ここで, ステップオーバーを1回押して, ローカル変数 figs にそれ以上何も追加されずに
そのまま366行目の return figs まで進むことを確認してください.
これを確認したら, ステップオーバーを1回押して呼び出し元に戻ってください.
-


呼び出し元である ActionRemoveFromDiagram クラスの actionPerformed(ActionEvent) メソッドに戻ってきました.
@@ -198,8 +198,8 @@
そのあと, 変数ビュー上の「呼び出し後」を開いて戻り値のIDを確認してください.
すると, 先ほどの FigClass クラスのインスタンス (id = 1675174935) を取得していることがわかります.
これを確認したら, ステップオーバーを2回押して89行目に進んでください.
-




現在は ActionRemoveFromDiagram クラスの actionPerformed(ActionEvent) メソッドの89行目にいます.
@@ -207,13 +207,13 @@
この「呼び出し前」を開いてレシーバのIDを確認してください.
すると, ここでは, 先ほどの FigClass クラスのインスタンス (id = 1675174935) に対して removeFromDiagram() メソッドを呼び出していることがわかります.
これを確認したら, ステップインをもう1回押して FigClass クラスの removeFromDiagram() メソッドの中に入ってください.
-


FigClass クラスの removeFromDiagram() メソッドに入りました.
ここでは, 変数ビューを見て this の ID を確認してください.
これを確認したら, 呼び出しスタック上で1つ呼び出し元をクリックしてください.
-


今までの結果から, FigClass クラスのインスタンス (id = 1675174935) に関連するオブジェクトについて, 以下のことがわかりました.
@@ -226,7 +226,7 @@
Editor クラスのインスタンスは, 85行目でローカル変数 ce の値として参照されていることがわかっています.
したがって, ここでは, ローカル変数 ce の値がどこから来たのかを探していきます.
すぐ上の83行目にブレークポイントを入れてから, ブレークポイントビュー上の「ブレークポイントを取り入れる」ボタンを押してください.
-


いったんデバッグ実行を終了してから, 再びデバッグ実行してください.
@@ -239,18 +239,18 @@
この83行目では, Globals クラスの static メソッドである curEditor() メソッドが呼び出され,
その戻り値がローカル変数 ce に代入されていることが確認できます.
ここで, ステップインを2回押してこのメソッドの中に入ってください.
-


Globals クラスの static メソッドである curEditor() メソッドに入りました.
ここで, ソースコードを見ると, Globals クラスが static フィールド _curEditor として Editor クラスのインスタンスを保持していることがわかります.
これを確認したら, 呼び出しスタック上で1つ呼び出し元をクリックしてください.
-


現在は 呼び出し元である ActionRemoveFromDiagram クラスの actionPerformed() メソッドを見ています.
ここで, 課題A1は終了です. 時間計測を終了してください.
-


+ Fig クラスはグラフィックエディタ上の図形を表すGEFの内部のクラスです.
+ また, FigClass クラスはクラス図上に配置された「クラス」を表す ArgoUML のクラスで, Fig クラスの子孫クラスにあたります.
+
+
+ 課題A1終了直後は下図のような状態になっているはずです.
+ 右上にあるパースペクティブを右クリックし, いったん「トレースデバッガ(順方向)」のパースペクティブを閉じてください.
+

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

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

+ 現在は, ActionRemoveFromDiagram クラスの actionPerformed(ActionEvent) メソッドの83行目にいます.
+ ここで, ステップオーバーを6回押して, 89行目にまで進んでください.
+ そのあと, ステップネクストを1回押してください.
+


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

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

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

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


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

+ 「オブジェクトの接近過程抽出」ビュー上の「参照先側012」をクリックしてください.
+

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


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

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

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

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


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


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

diff --git a/courseA/ArgoUML_Forward/problem1/ArgoUML1_Forward_Delta.html b/courseA/ArgoUML_Forward/problem1/ArgoUML1_Forward_Delta.html new file mode 100644 index 0000000..9c9d204 --- /dev/null +++ b/courseA/ArgoUML_Forward/problem1/ArgoUML1_Forward_Delta.html @@ -0,0 +1,103 @@ + + +
+
+ + + +
+