diff --git a/courseA/ArgoUML_Forward/problem1/ArgoUML1_Forward.html b/courseA/ArgoUML_Forward/problem1/ArgoUML1_Forward.html index 3abc6f9..de0ecfd 100644 --- a/courseA/ArgoUML_Forward/problem1/ArgoUML1_Forward.html +++ b/courseA/ArgoUML_Forward/problem1/ArgoUML1_Forward.html @@ -72,7 +72,8 @@ 先ほどの実行手順にしたがって進めていくと, 下図のように Fig クラスの removeFromDiagram() メソッド内の743行目で一時停止している状態になっているはずです.
この状態になっていれば, ここから時間計測を開始してください. 時間計測はできる限り,1分以内の単位での計測をお願いします.
ここで, 変数ビューを確認すると, このメソッド実行は FigClass クラスのインスタンス (id = 1675174935) に対する呼び出しだとわかります.
- この FigClass クラスのインスタンス (id = 1675174935) がどこから来たのかを確認していきます.
+ この FigClass クラスのインスタンスが, これから削除されるクラス図上の1つの「クラス」に当たります.
+ 以下では, ArgoUMLのシステム内部で, 選択状態にある図形がどのように管理されているかを調べるため, この FigClass クラスのインスタンスがどこから来たのかを確認していきます.
まずは, 呼び出しスタック上で1つ呼び出し元をクリックしてください.

diff --git a/courseA/ArgoUML_Forward/problem1/ArgoUML1_Forward_Delta.html b/courseA/ArgoUML_Forward/problem1/ArgoUML1_Forward_Delta.html index dea30ec..bea59fd 100644 --- a/courseA/ArgoUML_Forward/problem1/ArgoUML1_Forward_Delta.html +++ b/courseA/ArgoUML_Forward/problem1/ArgoUML1_Forward_Delta.html @@ -11,19 +11,20 @@

接近過程抽出

+ ここでは, 課題A1 (機能理解) では使用しなかった逆方向バージョンのある機能を用いて, 課題A1 (機能理解) と同様,
+

+ 「選択された図形がArgoUMLのシステム内部でどのように管理され, 削除機能の実行によってどのように取り出されて, 削除されるか?」 +
+ を理解することを目指します. +

+

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

-

課題A1 (機能理解) の終了直後は下図のような状態でデバッグ実行が終了しているはずです.
デバッグ実行が終了していることを確認したら, 右上にあるパースペクティブを右クリックし, いったん「トレースデバッガ(順方向)」のパースペクティブを閉じてください.
- ここでは, 課題A1 (機能理解) では使用しなかった逆方向バージョンのある機能を用いて, 課題A1 (機能理解) と同様,
-

- 「選択された図形がArgoUMLのシステム内部でどのように管理され, 削除機能の実行によってどのように取り出されて, 削除されるか?」 -
- を理解することを目指します.

@@ -38,6 +39,7 @@

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

diff --git a/courseA/ArgoUML_Forward/problem2/ArgoUML2_Forward.html b/courseA/ArgoUML_Forward/problem2/ArgoUML2_Forward.html index 868ecfb..4994755 100644 --- a/courseA/ArgoUML_Forward/problem2/ArgoUML2_Forward.html +++ b/courseA/ArgoUML_Forward/problem2/ArgoUML2_Forward.html @@ -68,12 +68,15 @@

先ほどの実行手順にしたがって進めていくと, 下図のように SelectionManager クラスの addFig(Fig) メソッド内の130行目で一時停止している状態になっているはずです.
+ このメソッドの仮引数 f が参照している FigClass クラスのインスタンス (id = 1675174935) が, この機能によって選択されるクラス図上の1つの「クラス」に当たります.
この状態になっていれば, ここから時間計測を開始してください. 時間計測はできる限り,1分以内の単位での計測をお願いします.
ここで, ソースコードと変数ビューを見ると, SelectionManager クラスのインスタンス (id = 4310438) のフィールド selections が参照している
- ArrayList クラスのインスタンスに, makeSelectionFor(Fig) メソッドの戻り値 (SelectionClass クラスのインスタンス) が追加されていることがわかります.
- 課題A2では, このオブジェクトの追加に関わっている SelectionManager クラスのインスタンスと SelectionClass クラスのインスタンスについて見ていきます.
+ ArrayList クラスのインスタンスに, makeSelectionFor(Fig) メソッドの戻り値 (SelectionClass クラスのインスタンス) が追加されることで,
+ 引数として渡された FigClass クラスのインスタンス (id = 1675174935) が選択状態になることがわかります.
+ 課題A2では, この図形の選択に関わっている SelectionManager クラスのインスタンスと SelectionClass クラスのインスタンス, + および FigClass クラスのインスタンスについて見ていきます.
まずは, SelectionClass クラスのインスタンスについて見ていきます. ステップインを3回押して, この makeSelectionFor(Fig) メソッドの中に入ってください.

@@ -106,7 +109,8 @@ List.add(Object) メソッドの数として渡されており, これがフィールド selections に追加されることがわかります.
また, この引数をさらに開くと, SelectionClass クラスのインスタンス (id = 1672744985) が
フィールド content として実際に FigClass クラスのインスタンス(id = 1675174935) を参照していることを確認できます.
- ここからは, FigClass クラスのインスタンス(id = 1675174935) について見ていきます.
+ ここからは, 配置された図形がArgoUMLのシステム内部でどのように管理されているのかを調べるため,
+ FigClass クラスのインスタンス(id = 1675174935) がどこから来たのかについて見ていきます.
ソースコードと変数ビューを見ると, このインスタンスは 仮引数 f として渡されていることが確認できます.
この仮引数 f の値がどこから来たのかを見るために, 呼び出しスタック上で1つ呼び出し元をクリックしてください.
diff --git a/courseA/ArgoUML_Forward/problem2/ArgoUML2_Forward_Delta.html b/courseA/ArgoUML_Forward/problem2/ArgoUML2_Forward_Delta.html index 0039bb0..fc1949e 100644 --- a/courseA/ArgoUML_Forward/problem2/ArgoUML2_Forward_Delta.html +++ b/courseA/ArgoUML_Forward/problem2/ArgoUML2_Forward_Delta.html @@ -11,19 +11,20 @@

接近過程抽出

+ ここでは, 課題A2 (機能理解) では使用しなかった逆方向バージョンのある機能を用いて, 課題A2 (機能理解) と同様, +

+ 「配置された図形がArgoUMLのシステム内部でどのように管理され,選択機能の実行によってどのように取り出されて,どのように選択図形として登録されるか?」 +
+ を理解することを目指します. +

+

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

-

課題A2 (機能理解) の終了直後は下図のような状態でデバッグ実行が終了しているはずです.
デバッグ実行が終了していることを確認したら, 右上にあるパースペクティブを右クリックし, いったん「トレースデバッガ(順方向)」のパースペクティブを閉じてください.
- ここでは, 課題A2 (機能理解) では使用しなかった逆方向バージョンのある機能を用いて, 課題A2 (機能理解) と同様, -

- 「配置された図形がArgoUMLのシステム内部でどのように管理され,選択機能の実行によってどのように取り出されて,どのように選択図形として登録されるか?」 -
- を理解することを目指します.

@@ -34,14 +35,15 @@ その状態のままで, ブレークポイントビュー上にある「ブレークポイントを取り入れる」をクリックしてください.
SelectionManager.addFig(Fig) メソッドの130行目と, ModeSelect.mousePressed(MouseEvent) メソッドの156行目の
2つにチェックが入っているはずです. ブレークポイントを確認したら, デバッグ実行してください.
- まずは, SelectionManager クラスのインスタンス (id = 4310438) のフィールド selections が参照している ArrayList のインスタンスに
- SelectionClass クラスのインスタンス (id = 1672744985) が追加されるまでの過程を見ていきます.
デバッグ実行したら, そのまま再開ボタンを3回押してください.
すると, SelectionManager クラスの addFig(Fig) メソッドの130行目の2回目の実行で一時停止します.

現在は, SelectionManager クラスの addFig(Fig) メソッドの130行目にいます.
+ このメソッドの仮引数 f に渡された FigClass クラスのインスタンス (id = 1675174935) が, この機能によって選択されるクラス図上の1つの「クラス」に当たります.
+ まずは, SelectionManager クラスのインスタンス (id = 4310438) のフィールド selections が参照している ArrayList のインスタンスに
+ SelectionClass クラスのインスタンス (id = 1672744985) が, ここで追加されるようになるまでの経緯を見ていきます.
ここで, ステップネクストを3回押してください.

diff --git a/courseA/JHotDraw_Reverse/problem1/JHotDraw1_Reverse.html b/courseA/JHotDraw_Reverse/problem1/JHotDraw1_Reverse.html index 9150c59..5c60ea1 100644 --- a/courseA/JHotDraw_Reverse/problem1/JHotDraw1_Reverse.html +++ b/courseA/JHotDraw_Reverse/problem1/JHotDraw1_Reverse.html @@ -78,6 +78,8 @@

DefaultDragTracker クラスの mouseDragged(MouseEvent) メソッドの159行では,
ローカル変数 f で参照されている RectangleFigure クラスのインスタンスに対してメソッドが呼び出されていることが確認できます.
+ この RectangleFigure クラスのインスタンスが, 図形移動機能によって移動している矩形に当たります.
+ 以下では, JHotDrawのシステム内部で, 選択状態にある図形がどのように管理されているかを調べるため, この RectangleFigure クラスのインスタンスがどこから来たのかを確認していきます.
まずは, この f の値がどこから来たのかを見るために, ステップバックオーバーを2回押して157行目の拡張for文まで戻ってください.

diff --git a/courseA/JHotDraw_Reverse/problem1/JHotDraw1_Reverse_Delta.html b/courseA/JHotDraw_Reverse/problem1/JHotDraw1_Reverse_Delta.html index 4cbf653..fff3038 100644 --- a/courseA/JHotDraw_Reverse/problem1/JHotDraw1_Reverse_Delta.html +++ b/courseA/JHotDraw_Reverse/problem1/JHotDraw1_Reverse_Delta.html @@ -11,19 +11,19 @@

接近過程抽出

- + ここでは, 課題A3 (機能理解) では使用しなかった逆方向バージョンのある機能を用いて, 課題A3 (機能理解) と同様,
+

+ 「選択された図形がJHotDrawのシステム内部でどのように管理され,図形移動機能の実行によってどのように取り出されて,移動していくか?」 +
+ を理解することを目指します.

- +

+ Figure クラスは図形を表す JHotDraw のクラスです.
+ また, RectangleFigure クラスは矩形を表す JHotDraw のクラスで, Figure クラスの子孫クラスにあたります.
+

課題A3 (機能理解) の終了直後は下図のような状態になっているはずです.
- ここでは, 課題A3 (機能理解) では使用しなかった逆方向バージョンのある機能を用いて, 課題A3 (機能理解) と同様,
-

- 「選択された図形がJHotDrawのシステム内部でどのように管理され,図形移動機能の実行によってどのように取り出されて,移動していくか?」 -
- を理解することを目指します.
- まずは, DefaultDragTracker クラスのインスタンス (id = 758826749) のフィールド transformedFigures が参照している HashSet のインスタンスに
- RectangleFigure クラスのインスタンス (id = 1952912699) が追加されるまでの過程を抽出して見ていきます.
ここで, 「実行時点の登録」ビュー上で登録している「118行目 DefaultDragTracker.mousePressed(MouseEvent)」をダブルクリックしてください.
すると, 現在の実行時点が DefaultDragTracker クラスの mousePressed(MouseEvent) メソッドの118行目に移ります.
@@ -31,6 +31,9 @@

先ほどの操作によって, 現在は DefaultDragTracker クラスの mousePressed(MouseEvent) メソッドの118行目にいます.
+ このとき, ローカル変数 f で参照されている RectangleFigure クラスのインスタンスが, 図形動機能によって移動している矩形に当たります.
+ まずは, DefaultDragTracker クラスのインスタンス (id = 758826749) のフィールド transformedFigures が参照している HashSet のインスタンスに
+ RectangleFigure クラスのインスタンス (id = 1952912699) が, この行で追加されるようになるまでの経緯を抽出して見ていきます.
ここで, 変数ビュー上の「呼び出し前」のメソッド名が HashSet.add(Object) であることを確認してください.
それを確認したら, 変数ビュー上の「呼び出し前」を開いて, 引数を右クリックしてください.
右クリックすると, ポップアップメニューが出てくるので, 上の方の HashSet のインスタンスと RectangleFigure のインスタンスを
diff --git a/courseA/JHotDraw_Reverse/problem2/JHotDraw2_Reverse.html b/courseA/JHotDraw_Reverse/problem2/JHotDraw2_Reverse.html index 8538baf..a8bd7d8 100644 --- a/courseA/JHotDraw_Reverse/problem2/JHotDraw2_Reverse.html +++ b/courseA/JHotDraw_Reverse/problem2/JHotDraw2_Reverse.html @@ -58,7 +58,8 @@ まずは,「実行時点の登録」ビューの追加ボタンをクリックして実行時点の登録を行ってください.
ここで, ソースコードと変数ビューを見ると, DefaultDrawingView クラスのインスタンス (id = 150367587) のフィールド selectedFigures が参照しているセットへは
RectangleFigure クラスのインスタンス (id = 1952912699) が追加されていることがわかります.
- 課題A4では, このオブジェクトの追加に関わっている DefaultDrawingView クラスのインスタンスと RectangleFigure クラスのインスタンスについて見ていきます.
+ この追加によって, この RectangleFigure クラスのインスタンスに対応する矩形が選択状態になります.
+ 課題A4では, JHotDrawのシステム内部で, 配置された図形がどのように管理されているかを調べるため, この RectangleFigure クラスのインスタンスがどこから来たのかを確認していきます.

diff --git a/courseA/JHotDraw_Reverse/problem2/JHotDraw2_Reverse_Delta.html b/courseA/JHotDraw_Reverse/problem2/JHotDraw2_Reverse_Delta.html index 8576ec8..6935560 100644 --- a/courseA/JHotDraw_Reverse/problem2/JHotDraw2_Reverse_Delta.html +++ b/courseA/JHotDraw_Reverse/problem2/JHotDraw2_Reverse_Delta.html @@ -11,19 +11,19 @@


接近過程抽出

- + ここでは, 課題A4 (機能理解) では使用しなかった逆方向バージョンのある機能を用いて, 課題A4 (機能理解) と同様,
+

+ 「配置された図形がJHotDrawのシステム内部でどのように管理され,図形選択機能の実行によってどのように取り出されて,どのように選択図形として登録されるか?」 +
+ を理解することを目指します.

- +

+

+ Figure クラスは図形を表す JHotDraw のクラスです.
+ また, RectangleFigure クラスは矩形を表す JHotDraw のクラスで, Figure クラスの子孫クラスにあたります.

課題A4 (機能理解) の終了直後は下図のような状態になっているはずです.
- ここでは, 課題A4 (機能理解) では使用しなかった逆方向バージョンのある機能を用いて, 課題A4 (機能理解) と同様,
-

- 「配置された図形がJHotDrawのシステム内部でどのように管理され,図形選択機能の実行によってどのように取り出されて,どのように選択図形として登録されるか?」 -
- を理解することを目指します.
- まずは, DefaultDrawingView クラスのインスタンス (id = 150367587) のフィールド selectedFigures が参照している LinkedHashSet のインスタンスに
- RectangleFigure クラスのインスタンス (id = 1952912699) が追加されるまでの過程を見ていきます.
ここで, 「実行時点の登録」ビュー上で登録している「780行目 DefaultDrawingView.addToSelection(Figure)」をダブルクリックしてください.
すると, 現在の実行時点が DefaultDrawingView クラスの addToSelection(Figure) メソッドの780行目に移ります.
@@ -31,6 +31,9 @@

先ほどの操作によって, 現在は DefaultDrawingView クラスの addToSelection(Figure) メソッドの780行目にいます.
+ この行の実行によって, 実引数 figure が参照している RectangleFigure クラスのインスタンスに対応する矩形が選択状態になります.
+ まずは, DefaultDrawingView クラスのインスタンス (id = 150367587) のフィールド selectedFigures が参照している LinkedHashSet のインスタンスに
+ この RectangleFigure クラスのインスタンス (id = 1952912699) が, この行で追加されるようになるまでの経緯を見ていきます.
ここで, 変数ビュー上の「呼び出し前」のメソッド名が Set.add(Object) であることを確認してください.
それを確認したら, 変数ビュー上の「呼び出し前」を開いて, 引数を右クリックしてください.
右クリックすると, ポップアップメニューが出てくるので, 上の方の LinkedHashSet のインスタンスと RectangleFigure の
diff --git a/courseB/ArgoUML_Reverse/problem1/ArgoUML1_Reverse.html b/courseB/ArgoUML_Reverse/problem1/ArgoUML1_Reverse.html index 7d34701..2d55a1b 100644 --- a/courseB/ArgoUML_Reverse/problem1/ArgoUML1_Reverse.html +++ b/courseB/ArgoUML_Reverse/problem1/ArgoUML1_Reverse.html @@ -74,7 +74,8 @@ 先ほどの実行手順にしたがって進めていくと, 下図のように Fig クラスの removeFromDiagram() メソッド内の743行目で一時停止している状態になっているはずです.
この状態になっていれば, ここから時間計測を開始してください. 時間計測はできる限り,1分以内の単位での計測をお願いします.
ここで, 変数ビューを確認すると, このメソッド実行は FigClass クラスのインスタンス (id = 1675174935) に対する呼び出しだとわかります.
- この FigClass クラスのインスタンス (id = 1675174935) がどこから来たのかを確認していきます.
+ この FigClass クラスのインスタンスが, これから削除されるクラス図上の1つの「クラス」に当たります.
+ 以下では, ArgoUMLのシステム内部で, 選択状態にある図形がどのように管理されているかを調べるため, この FigClass クラスのインスタンスがどこから来たのかを確認していきます.
まずは呼び出しスタック上で1つ呼び出し元をクリックしてください.

diff --git a/courseB/ArgoUML_Reverse/problem1/ArgoUML1_Reverse_Delta.html b/courseB/ArgoUML_Reverse/problem1/ArgoUML1_Reverse_Delta.html index e9d5264..5413112 100644 --- a/courseB/ArgoUML_Reverse/problem1/ArgoUML1_Reverse_Delta.html +++ b/courseB/ArgoUML_Reverse/problem1/ArgoUML1_Reverse_Delta.html @@ -11,19 +11,21 @@

接近過程抽出

+ ここでは, 課題B3 (機能理解) では使用しなかった逆方向バージョンのある機能を用いて, 課題B3 (機能理解) と同様,
+

+ 「選択された図形がArgoUMLのシステム内部でどのように管理され, 削除機能の実行によってどのように取り出されて, 削除されるか?」 +
+ を理解することを目指します. +

+

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

-

課題B3 (機能理解) の終了直後は下図のような状態になっているはずです.
- ここでは, 課題B3 (機能理解) では使用しなかった逆方向バージョンのある機能を用いて, 課題B3 (機能理解) と同様,
-

- 「選択された図形がArgoUMLのシステム内部でどのように管理され, 削除機能の実行によってどのように取り出されて, 削除されるか?」 -
- を理解することを目指します.
まずは, ActionRemoveFromDiagram クラスのインスタンスに FigClass クラスのインスタンス (id = 1675174935) が接近する過程を抽出して見ていきます.
+ この FigClass クラスのインスタンスが, この機能で削除されるクラス図上の1つの「クラス」に当たります.
ここで, 「実行時点の登録」ビュー上で登録している「89行目 ActionRemoveFromDiagram.actionPerformed(ActionEvent)」をダブルクリックしてください.
すると, 現在の実行時点が ActionRemoveFromDiagram クラスの actionPerformed(ActionEvent) メソッドの89行目に移ります.
diff --git a/courseB/ArgoUML_Reverse/problem2/ArgoUML2_Reverse.html b/courseB/ArgoUML_Reverse/problem2/ArgoUML2_Reverse.html index 154a30e..a4df7e9 100644 --- a/courseB/ArgoUML_Reverse/problem2/ArgoUML2_Reverse.html +++ b/courseB/ArgoUML_Reverse/problem2/ArgoUML2_Reverse.html @@ -56,15 +56,17 @@

先ほどの前準備にしたがって進めていくと, 下図のように SelectionManager クラスの addFig(Fig) メソッド内の130行目で一時停止している状態になっているはずです.
+ このメソッドの仮引数 f が参照している FigClass クラスのインスタンス (id = 1675174935) が, この機能によって選択されるクラス図上の1つの「クラス」に当たります.
この状態になっていれば, ここから時間計測を開始してください. 時間計測はできる限り,1分以内の単位での計測をお願いします.
まずは,「実行時点の登録」ビューの追加ボタンをクリックして実行時点の登録を行ってください.

- ここで, ソースコードと変数ビューの List.add(Object) の呼び出し前を見ると, SelectionManager クラスのインスタンス (id = 4310438) の
- フィールド selections へは, makeSelectionFor(Fig) メソッドの戻り値である SelectionClass クラスのインスタンス (id = 1672744985) が
- 追加されていることがわかります.
- 課題B4では, このオブジェクトの追加に関わっている SelectionManager クラスのインスタンスと SelectionClass クラスのインスタンスについて見ていきます.
+ ここで, ソースコードと変数ビューの List.add(Object) の呼び出し前を見ると, SelectionManager クラスのインスタンス (id = 4310438) のフィールド selections が参照している
+ ArrayList クラスのインスタンスに, makeSelectionFor(Fig) メソッドの戻り値である SelectionClass クラスのインスタンス (id = 1672744985) が追加されることで,
+ 引数として渡された FigClass クラスのインスタンス (id = 1675174935) が選択状態になることがわかります.
+ 課題B4では, この図形の選択に関わっている SelectionManager クラスのインスタンスと SelectionClass クラスのインスタンス, + および FigClass クラスのインスタンスについて見ていきます.
まずは, SelectionClass クラスのインスタンスの方がどこから来たのかを見ていくために,
ステップバックインを1回押して SelectionManager クラスの makeSelectionFor(Fig) メソッドの中に後ろから入ってください.

@@ -91,8 +93,9 @@

現在は SelectionManager クラスの addFig(Fig) メソッドの130行目を見ています.
ここで, ソースコードを見ると, 先ほどの makeSelectionFor(Fig) メソッドに実引数として渡されていた FigClass クラスのインスタンス (id = 1675174935) は,
- この SelectionManager クラスの addFig(Fig) メソッド内において, 仮引数 f で渡されてきた値であることがわかります
- ここからは, この 仮引数 f で参照されている FigClass クラスのインスタンス (id = 1675174935) がどこから来たのかを見ていきます.
+ この SelectionManager クラスの addFig(Fig) メソッド内において, 仮引数 f で渡されてきた値であることがわかります.
+ ここからは, 配置された図形がArgoUMLのシステム内部でどのように管理されているのかを調べるため,
+ この 仮引数 f で参照されている FigClass クラスのインスタンス (id = 1675174935) がどこから来たのかを見ていきます.
呼び出しスタック上で1つ呼び出し元である SelectionManager クラスの select(Fig) メソッドをクリックしてください.

diff --git a/courseB/ArgoUML_Reverse/problem2/ArgoUML2_Reverse_Delta.html b/courseB/ArgoUML_Reverse/problem2/ArgoUML2_Reverse_Delta.html index c161411..bd0718c 100644 --- a/courseB/ArgoUML_Reverse/problem2/ArgoUML2_Reverse_Delta.html +++ b/courseB/ArgoUML_Reverse/problem2/ArgoUML2_Reverse_Delta.html @@ -11,26 +11,28 @@

接近過程抽出

+ ここでは, 課題B4 (機能理解) では使用しなかった逆方向バージョンのある機能を用いて, 課題B4 (機能理解) と同様,
+

+ 「配置された図形がArgoUMLのシステム内部でどのように管理され,選択機能の実行によってどのように取り出されて,どのように選択図形として登録されるか?」 +
+ を理解することを目指します. +

+

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

-

課題B4 (機能理解) の終了直後は下図のような状態になっているはずです.
- ここでは, 課題B4 (機能理解) では使用しなかった逆方向バージョンのある機能を用いて, 課題B4 (機能理解) と同様,
-

- 「配置された図形がArgoUMLのシステム内部でどのように管理され,選択機能の実行によってどのように取り出されて,どのように選択図形として登録されるか?」 -
- を理解することを目指します.
- まずは, SelectionManager クラスのインスタンス (id = 4310438) のフィールド selections が参照している ArrayList のインスタンスに
- SelectionClass クラスのインスタンス (id = 1672744985) が追加されるまでの過程を見ていきます.
ここで, 「実行時点の登録」ビュー上で登録している「130行目 SelectionManager.addFig(Fig)」をダブルクリックしてください.
すると, 現在の実行時点が SelectionManager クラスの addFig(Fig) メソッドの130行目に移ります.

+ addFig(Fig) の仮引数 f に渡された FigClass クラスのインスタンス (id = 1675174935) が, この機能によって選択されるクラス図上の1つの「クラス」に当たります.
+ まずは, SelectionManager クラスのインスタンス (id = 4310438) のフィールド selections が参照している ArrayList のインスタンスに
+ SelectionClass クラスのインスタンス (id = 1672744985) が, ここで追加されるようになるまでの経緯を見ていきます.
ここで, 変数ビュー上の「呼び出し前」のメソッド名が List.add(Object) であることを確認してください.
それを確認したら, 変数ビュー上の「呼び出し前」を開いて, 引数を右クリックしてください.
右クリックすると, ポップアップメニューが出てくるので, 上の方の ArrayList クラスのインスタンスと
diff --git a/courseB/JHotDraw_Forward/problem1/JHotDraw1_Forward.html b/courseB/JHotDraw_Forward/problem1/JHotDraw1_Forward.html index be97bc3..1897fc1 100644 --- a/courseB/JHotDraw_Forward/problem1/JHotDraw1_Forward.html +++ b/courseB/JHotDraw_Forward/problem1/JHotDraw1_Forward.html @@ -77,7 +77,9 @@ DefaultDragTracker クラスの mouseDragged(MouseEvent) メソッドの159行では,
ローカル変数 f で参照されているインスタンスに対してメソッドが呼び出されていることが確認できます.
ここで, 変数ビュー上の「呼び出し前」を開いてレシーバのIDを見ると, これは RectangleFigure クラスのインスタンス (id = 1952912699) であることがわかります.
- また, ソースコードを見ると, このローカル変数 f の値は, 157行目の拡張for文でフィールド transformedFigures が参照しているセットから取得してきたものだと確認できます. + この RectangleFigure クラスのインスタンスが, 図形移動機能によって移動している矩形に当たります.
+ 以下では, JHotDrawのシステム内部で, 選択状態にある図形がどのように管理されているかを調べるため, この RectangleFigure クラスのインスタンスがどこから来たのかを確認していきます.
+ まず, ソースコードを見ると, このローカル変数 f の値は, 157行目の拡張for文でフィールド transformedFigures が参照しているセットから取得してきたものだと確認できます.

diff --git a/courseB/JHotDraw_Forward/problem1/JHotDraw1_Forward_Delta.html b/courseB/JHotDraw_Forward/problem1/JHotDraw1_Forward_Delta.html index 7939b86..925f454 100644 --- a/courseB/JHotDraw_Forward/problem1/JHotDraw1_Forward_Delta.html +++ b/courseB/JHotDraw_Forward/problem1/JHotDraw1_Forward_Delta.html @@ -11,18 +11,20 @@


接近過程抽出

- + ここでは, 課題B1 (機能理解) では使用しなかった逆方向バージョンのある機能を用いて, 課題B1 (機能理解) と同様,
+

+ 「選択された図形がJHotDrawのシステム内部でどのように管理され,図形移動機能の実行によってどのように取り出されて,移動していくか?」 +
+ を理解することを目指します.

- +

+ Figure クラスは図形を表す JHotDraw のクラスです.
+ また, RectangleFigure クラスは矩形を表す JHotDraw のクラスで, Figure クラスの子孫クラスにあたります.
+

課題B1 (機能理解) の終了直後は下図のような状態でデバッグ実行が終了しているはずです.
デバッグ実行が終了していることを確認したら, 右上にあるパースペクティブを右クリックし, いったん「トレースデバッガ(順方向)」のパースペクティブを閉じてください.
- ここでは, 課題B1 (機能理解) では使用しなかった逆方向バージョンのある機能を用いて, 課題B1 (機能理解) と同様,
-

- 「選択された図形がJHotDrawのシステム内部でどのように管理され,図形移動機能の実行によってどのように取り出されて,移動していくか?」 -
- を理解することを目指します.

@@ -42,8 +44,9 @@

現在は, DefaultDragTracker クラスの mousePressed(MouseEvent) メソッドの118行目にいます.
+ このとき, ローカル変数 f で参照されている RectangleFigure クラスのインスタンスが, 図形動機能によって移動している矩形に当たります.
まずは, DefaultDragTracker クラスのインスタンス (id = 758826749) のフィールド transformedFigures が参照している HashSet のインスタンスに
- RectangleFigure クラスのインスタンス (id = 1952912699) が追加されるまでの過程を抽出して見ていきます.
+ RectangleFigure クラスのインスタンス (id = 1952912699) が, この行で追加されるようになるまでの経緯を抽出して見ていきます.
ここで, ステップネクストを2回押してください.

diff --git a/courseB/JHotDraw_Forward/problem2/JHotDraw2_Forward.html b/courseB/JHotDraw_Forward/problem2/JHotDraw2_Forward.html index 9265606..3c470d7 100644 --- a/courseB/JHotDraw_Forward/problem2/JHotDraw2_Forward.html +++ b/courseB/JHotDraw_Forward/problem2/JHotDraw2_Forward.html @@ -85,8 +85,10 @@ 先ほどの前準備にしたがって進めていくと, 下図のように DefaultDrawingView クラスの
addToSelection(Figure) メソッド内の780行目で一時停止している状態になっているはずです.
この状態になっていれば, ここから時間計測を開始してください. 時間計測はできる限り,1分以内の単位での計測をお願いします.
- DefaultDrawingView クラスの addToSelection(Figures) メソッドの780行目では, フィールド selectedFigures が参照しているセットに
+ まず, DefaultDrawingView クラスの addToSelection(Figures) メソッドの780行目では, フィールド selectedFigures が参照しているセットに
仮引数 figure が参照している RectangleFigure クラスのインスタンス (id = 1952912699) を追加していることが確認できます.
+ この追加によって, この RectangleFigure クラスのインスタンスに対応する矩形が選択状態になります.
+ 課題B2では, JHotDrawのシステム内部で, 配置された図形がどのように管理されているかを調べるため, この RectangleFigure クラスのインスタンスがどこから来たのかを確認していきます.

diff --git a/courseB/JHotDraw_Forward/problem2/JHotDraw2_Forward_Delta.html b/courseB/JHotDraw_Forward/problem2/JHotDraw2_Forward_Delta.html index 1409890..fdc3cc8 100644 --- a/courseB/JHotDraw_Forward/problem2/JHotDraw2_Forward_Delta.html +++ b/courseB/JHotDraw_Forward/problem2/JHotDraw2_Forward_Delta.html @@ -11,18 +11,20 @@


接近過程抽出

- + ここでは, 課題B2 (機能理解) では使用しなかった逆方向バージョンのある機能を用いて, 課題B2 (機能理解) と同様,
+

+ 「配置された図形がJHotDrawのシステム内部でどのように管理され,図形選択機能の実行によってどのように取り出されて,どのように選択図形として登録されるか?」 +
+ を理解することを目指します.

- +

+ Figure クラスは図形を表す JHotDraw のクラスです.
+ また, RectangleFigure クラスは矩形を表す JHotDraw のクラスで, Figure クラスの子孫クラスにあたります.
+

課題B2 (機能理解) の終了直後は下図のような状態でデバッグ実行が終了しているはずです.
デバッグ実行が終了していることを確認したら, 右上にあるパースペクティブを右クリックし, いったんパースペクティブを閉じてください.
- ここでは, 課題B2 (機能理解) では使用しなかった逆方向バージョンのある機能を用いて, 課題B2 (機能理解) と同様,
-

- 「配置された図形がJHotDrawのシステム内部でどのように管理され,図形選択機能の実行によってどのように取り出されて,どのように選択図形として登録されるか?」 -
- を理解することを目指します.

@@ -33,10 +35,11 @@ その状態のままで, ブレークポイントビュー上にある「ブレークポイントをEclipseから取り入れる」をクリックしてください.
ブレークポイントを取り入れたら, DefaultDrawingView クラスの addToSelection(Figure) メソッドの780行目以外のブレークポイントのチェックを外してください.
チェックを外したら, デバッグ実行してください.
- まずは, DefaultDrawingView クラスのインスタンス (id = 150367587) のフィールド selectedFigures が参照している LinkedHashSet のインスタンスに
- RectangleFigure クラスのインスタンス (id = 1952912699) が追加されるまでの過程を見ていきます.
デバッグ実行したら, 再開ボタンを1回押してください.
すると, DefaultDrawingView クラスの addToSelection(Figure) メソッド780行目の2回目の実行にまで進みます.
+ この行の実行によって, 実引数 figure が参照している RectangleFigure クラスのインスタンスに対応する矩形が選択状態になります.
+ まずは, DefaultDrawingView クラスのインスタンス (id = 150367587) のフィールド selectedFigures が参照している LinkedHashSet のインスタンスに
+ この RectangleFigure クラスのインスタンス (id = 1952912699) が, この行で追加されるようになるまでの経緯を見ていきます.
ここで, ステップネクストを1回押してください.